Kubernetes部署
2.1 服务器Labs-K8s-Master-1:安装基础软件
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's/$releasever/8/g' /etc/yum.repos.d/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io
cat >> /etc/docker/daemon.json <<EOF
{
"registry-mirrors": [
"https://registry.cn-hangzhou.aliyuncs.com",
"https://hub.xdark.top",
"https://hub.littlediary.cn",
"https://dockerpull.org",
"https://hub.crdz.gq",
"https://docker.1panel.live",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.m.daocloud.io",
"https://noohub.ru",
"https://huecker.io",
"https://dockerhub.timeweb.cloud",
"https://docker.1panel.dev",
"https://docker.unsee.tech",
"https://docker.1panel.live"
],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
}
}
EOF
systemctl daemon-reload
systemctl start docker
systemctl enable docker
cat >> /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
yum install -y kubelet-1.28.0 kubeadm-1.28.0 kubectl-1.28.0
sed -i '$a KUBELET_CGROUP_ARGS="--cgroup-driver=systemd"' /etc/sysconfig/kubelet
sed -i '$a KUBE_PROXY_MODE="ipvs"' /etc/sysconfig/kubelet
systemctl enable kubelet
mkdir -p /var/kubernetes
wget -P /var/kubernetes https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.12/cri-dockerd-0.3.12-3.el7.x86_64.rpm
rpm -ivh /var/kubernetes/cri-dockerd-0.3.12-3.el7.x86_64.rpm
sed -i '/ExecStart=/usr/bin/cri-dockerd/ s|$| --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9|' /usr/lib/systemd/system/cri-docker.service
systemctl daemon-reload
systemctl enable cri-docker && systemctl start cri-docker
yum -y install keepalived haproxy
cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak
tee /etc/haproxy/haproxy.cfg <<EOF
global
maxconn 2000
ulimit-n 16384
log 127.0.0.1 local0 err
stats timeout 30s
defaults
log global
mode http
option httplog
timeout connect 5000
timeout client 50000
timeout server 50000
timeout http-request 15s
timeout http-keep-alive 15s
frontend monitor-in
bind *:33305
mode http
option httplog
monitor-uri /monitor
frontend k8s-master
bind 0.0.0.0:16443
bind 127.0.0.1:16443
mode tcp
option tcplog
tcp-request inspect-delay 5s
default_backend k8s-master
backend k8s-master
mode tcp
option tcplog
option tcp-check
balance roundrobin
default-server inter 10s downinter 5s rise 2 fall 2 slowstart 60s maxconn 250 maxqueue 256 weight 100
server Book-Cloud-K8s-Master-1 10.10.2.151:6443 check
server Book-Cloud-K8s-Master-2 10.10.2.152:6443 check
server Book-Cloud-K8s-Master-3 10.10.2.153:6443 check
EOF
cat >> /etc/keepalived/keepalived.conf << EOF
global_defs {
router_id LVS_DEVEL
}
vrrp_script check_apiserver {
script "/etc/keepalived/check_apiserver.sh"
interval 3
weight -2
fall 10
rise 2
}
vrrp_instance VI_1 {
state MASTER
interface ens33
mcast_src_ip 10.10.2.151
virtual_router_id 51
priority 100
authentication {
auth_type PASS
auth_pass K8SAUTH
}
virtual_ipaddress {
10.10.2.155
}
track_script {
check_apiserver
}
}
EOF
cat >> /etc/keepalived/check_apiserver.sh << EOF
API_SERVER="127.0.0.1:6443"
API_HEALTH_CHECK_URL="https://${API_SERVER}/healthz"
API_HEALTH_CHECK_TIMEOUT=5
API_HEALTH_CHECK_INTERVAL=3
if curl --silent --max-time ${API_HEALTH_CHECK_TIMEOUT} --insecure ${API_HEALTH_CHECK_URL} | grep -q "ok"; then
exit 0
else
exit 1
fi
EOF
chmod +x /etc/keepalived/check_apiserver.sh
systemctl daemon-reload
systemctl enable --now haproxy
systemctl enable --now keepalived
2.2 服务器Labs-K8s-Master-2:安装基础软件
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's/$releasever/8/g' /etc/yum.repos.d/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io
cat >> /etc/docker/daemon.json <<EOF
{
"registry-mirrors": [
"https://registry.cn-hangzhou.aliyuncs.com",
"https://hub.xdark.top",
"https://hub.littlediary.cn",
"https://dockerpull.org",
"https://hub.crdz.gq",
"https://docker.1panel.live",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.m.daocloud.io",
"https://noohub.ru",
"https://huecker.io",
"https://dockerhub.timeweb.cloud",
"https://docker.1panel.dev",
"https://docker.unsee.tech",
"https://docker.1panel.live"
],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
}
}
EOF
systemctl daemon-reload
systemctl start docker
systemctl enable docker
cat >> /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
yum install -y kubelet-1.28.0 kubeadm-1.28.0 kubectl-1.28.0
sed -i '$a KUBELET_CGROUP_ARGS="--cgroup-driver=systemd"' /etc/sysconfig/kubelet
sed -i '$a KUBE_PROXY_MODE="ipvs"' /etc/sysconfig/kubelet
systemctl enable kubelet
mkdir -p /var/kubernetes
wget -P /var/kubernetes https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.12/cri-dockerd-0.3.12-3.el7.x86_64.rpm
rpm -ivh /var/kubernetes/cri-dockerd-0.3.12-3.el7.x86_64.rpm
sed -i '/ExecStart=/usr/bin/cri-dockerd/ s|$| --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9|' /usr/lib/systemd/system/cri-docker.service
systemctl daemon-reload
systemctl enable cri-docker && systemctl start cri-docker
yum -y install keepalived haproxy
cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak
tee /etc/haproxy/haproxy.cfg <<EOF
global
maxconn 2000
ulimit-n 16384
log 127.0.0.1 local0 err
stats timeout 30s
defaults
log global
mode http
option httplog
timeout connect 5000
timeout client 50000
timeout server 50000
timeout http-request 15s
timeout http-keep-alive 15s
frontend monitor-in
bind *:33305
mode http
option httplog
monitor-uri /monitor
frontend k8s-master
bind 0.0.0.0:16443
bind 127.0.0.1:16443
mode tcp
option tcplog
tcp-request inspect-delay 5s
default_backend k8s-master
backend k8s-master
mode tcp
option tcplog
option tcp-check
balance roundrobin
default-server inter 10s downinter 5s rise 2 fall 2 slowstart 60s maxconn 250 maxqueue 256 weight 100
server Book-Cloud-K8s-Master-1 10.10.2.151:6443 check
server Book-Cloud-K8s-Master-2 10.10.2.152:6443 check
server Book-Cloud-K8s-Master-3 10.10.2.153:6443 check
EOF
cat >> /etc/keepalived/keepalived.conf << EOF
global_defs {
router_id LVS_DEVEL
}
vrrp_script check_apiserver {
script "/etc/keepalived/check_apiserver.sh"
interval 3
weight -2
fall 10
rise 2
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
mcast_src_ip 10.10.2.152
virtual_router_id 51
priority 50
authentication {
auth_type PASS
auth_pass K8SAUTH
}
virtual_ipaddress {
10.10.2.155
}
track_script {
check_apiserver
}
}
EOF
cat >> /etc/keepalived/check_apiserver.sh << EOF
API_SERVER="127.0.0.1:6443"
API_HEALTH_CHECK_URL="https://${API_SERVER}/healthz"
API_HEALTH_CHECK_TIMEOUT=5
API_HEALTH_CHECK_INTERVAL=3
if curl --silent --max-time ${API_HEALTH_CHECK_TIMEOUT} --insecure ${API_HEALTH_CHECK_URL} | grep -q "ok"; then
exit 0
else
exit 1
fi
EOF
chmod +x /etc/keepalived/check_apiserver.sh
systemctl daemon-reload
systemctl enable --now haproxy
systemctl enable --now keepalived
2.4 服务器Labs-K8s-Master-3:安装基础软件
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's/$releasever/8/g' /etc/yum.repos.d/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io
cat >> /etc/docker/daemon.json <<EOF
{
"registry-mirrors": [
"https://registry.cn-hangzhou.aliyuncs.com",
"https://hub.xdark.top",
"https://hub.littlediary.cn",
"https://dockerpull.org",
"https://hub.crdz.gq",
"https://docker.1panel.live",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.m.daocloud.io",
"https://noohub.ru",
"https://huecker.io",
"https://dockerhub.timeweb.cloud",
"https://docker.1panel.dev",
"https://docker.unsee.tech",
"https://docker.1panel.live"
],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
}
}
EOF
systemctl daemon-reload
systemctl start docker
systemctl enable docker
cat >> /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
yum install -y kubelet-1.28.0 kubeadm-1.28.0 kubectl-1.28.0
sed -i '$a KUBELET_CGROUP_ARGS="--cgroup-driver=systemd"' /etc/sysconfig/kubelet
sed -i '$a KUBE_PROXY_MODE="ipvs"' /etc/sysconfig/kubelet
systemctl enable kubelet
mkdir -p /var/kubernetes
wget -P /var/kubernetes https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.12/cri-dockerd-0.3.12-3.el7.x86_64.rpm
rpm -ivh /var/kubernetes/cri-dockerd-0.3.12-3.el7.x86_64.rpm
sed -i '/ExecStart=/usr/bin/cri-dockerd/ s|$| --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9|' /usr/lib/systemd/system/cri-docker.service
systemctl daemon-reload
systemctl enable cri-docker && systemctl start cri-docker
yum -y install keepalived haproxy
cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak
tee /etc/haproxy/haproxy.cfg <<EOF
global
maxconn 2000
ulimit-n 16384
log 127.0.0.1 local0 err
stats timeout 30s
defaults
log global
mode http
option httplog
timeout connect 5000
timeout client 50000
timeout server 50000
timeout http-request 15s
timeout http-keep-alive 15s
frontend monitor-in
bind *:33305
mode http
option httplog
monitor-uri /monitor
frontend k8s-master
bind 0.0.0.0:16443
bind 127.0.0.1:16443
mode tcp
option tcplog
tcp-request inspect-delay 5s
default_backend k8s-master
backend k8s-master
mode tcp
option tcplog
option tcp-check
balance roundrobin
default-server inter 10s downinter 5s rise 2 fall 2 slowstart 60s maxconn 250 maxqueue 256 weight 100
server Book-Cloud-K8s-Master-1 10.10.2.151:6443 check
server Book-Cloud-K8s-Master-2 10.10.2.152:6443 check
server Book-Cloud-K8s-Master-3 10.10.2.153:6443 check
EOF
cat >> /etc/keepalived/keepalived.conf << EOF
global_defs {
router_id LVS_DEVEL
}
vrrp_script check_apiserver {
script "/etc/keepalived/check_apiserver.sh"
interval 3
weight -2
fall 10
rise 2
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
mcast_src_ip 10.10.2.153
virtual_router_id 51
priority 49
authentication {
auth_type PASS
auth_pass K8SAUTH
}
virtual_ipaddress {
10.10.2.155
}
track_script {
check_apiserver
}
}
EOF
cat >> /etc/keepalived/check_apiserver.sh << EOF
API_SERVER="127.0.0.1:6443"
API_HEALTH_CHECK_URL="https://${API_SERVER}/healthz"
API_HEALTH_CHECK_TIMEOUT=5
API_HEALTH_CHECK_INTERVAL=3
if curl --silent --max-time ${API_HEALTH_CHECK_TIMEOUT} --insecure ${API_HEALTH_CHECK_URL} | grep -q "ok"; then
exit 0
else
exit 1
fi
EOF
chmod +x /etc/keepalived/check_apiserver.sh
systemctl daemon-reload
systemctl enable --now haproxy
systemctl enable --now keepalived
2.5 服务器Labs-K8s-Woker-1:安装基础软件
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's/$releasever/8/g' /etc/yum.repos.d/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io
cat >> /etc/docker/daemon.json <<EOF
{
"registry-mirrors": [
"https://registry.cn-hangzhou.aliyuncs.com",
"https://hub.xdark.top",
"https://hub.littlediary.cn",
"https://dockerpull.org",
"https://hub.crdz.gq",
"https://docker.1panel.live",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.m.daocloud.io",
"https://noohub.ru",
"https://huecker.io",
"https://dockerhub.timeweb.cloud",
"https://docker.1panel.dev",
"https://docker.unsee.tech",
"https://docker.1panel.live"
],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
}
}
EOF
systemctl daemon-reload
systemctl start docker
systemctl enable docker
cat >> /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
yum install -y kubelet-1.28.0 kubeadm-1.28.0 kubectl-1.28.0
sed -i '$a KUBELET_CGROUP_ARGS="--cgroup-driver=systemd"' /etc/sysconfig/kubelet
sed -i '$a KUBE_PROXY_MODE="ipvs"' /etc/sysconfig/kubelet
systemctl enable kubelet
mkdir -p /var/kubernetes
wget -P /var/kubernetes https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.12/cri-dockerd-0.3.12-3.el7.x86_64.rpm
rpm -ivh /var/kubernetes/cri-dockerd-0.3.12-3.el7.x86_64.rpm
sed -i '/ExecStart=/usr/bin/cri-dockerd/ s|$| --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9|' /usr/lib/systemd/system/cri-docker.service
systemctl daemon-reload
systemctl enable cri-docker && systemctl start cri-docker