最佳答案
引言
Kubernetes(簡稱K8s)是一種風行的容器編排東西,可能主動化安排、擴大年夜跟管理容器化利用順序。高可用集群是K8s集群的一種安排形式,經由過程多個節點跟負載均衡技巧,確保集群的牢固性跟堅固性。本文將具體介紹K8s高可用集群的搭建過程,從入門到實戰,幫助妳輕鬆控制這一技能。
情況籌備
在開端搭建高可用集群之前,我們須要籌備以下情況:
- 伺服器:至少3台伺服器,推薦設置為2核CPU、4G內存、40G硬碟。
- 操縱體系:CentOS 7.9 x64 或 Ubuntu 20.04 LTS。
- 軟體:Docker 20.10、Kubernetes 1.28.0、Keepalived、Haproxy。
步調一:伺服器初始化
- 封閉防火牆:
systemctl stop firewalld
systemctl disable firewalld
- 封閉SELinux:
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0
- 封閉swap:
swapoff -a
sed -ri 's/.swap./#&/' /etc/fstab
- 設置主機名跟hosts文件:
hostnamectl set-hostname <hostname>
echo "192.168.1.100 k8s-master1" >> /etc/hosts
echo "192.168.1.101 k8s-master2" >> /etc/hosts
echo "192.168.1.102 k8s-node1" >> /etc/hosts
- 設置時光同步:
sudo apt install chrony -y
sudo vim /etc/chrony/chrony.conf
# master節點設置
confdir /etc/chrony/conf.d
pool ntp.aliyun.com iburst maxsources 4
pool time1.cloud.tencent.com iburst maxsources 2
步調二:安裝Docker
- 安裝Docker:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io
- 啟動Docker效勞:
sudo systemctl start docker
sudo systemctl enable docker
- 設置Docker鏡像減速:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://<鏡像減速器地點>"]
}
EOF
sudo systemctl restart docker
步調三:安裝Kubernetes
- 安裝kubeadm、kubelet跟kubectl:
sudo yum install -y kubeadm kubelet kubectl
sudo systemctl start kubelet
sudo systemctl enable kubelet
- 初始化集群:
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
- 設置kubectl:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
- 安裝Pod網路插件:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
步調四:搭建高可用集群
- 安裝Keepalived跟Haproxy:
sudo yum install -y keepalived haproxy
- 設置Keepalived:
sudo vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.1.100/24 dev eth0 label eth0:0
}
}
- 設置Haproxy:
sudo vim /etc/haproxy/haproxy.cfg
global
log 127.0.0.1 local2
maxconn 4096
chroot /var/lib/haproxy
user haproxy
group haproxy
daemon
stats socket /var/lib/haproxy/stats level admin
defaults
log global
mode http
option httplog
option http-server-close
option forwardfor
option redispatch
retries 3
timeout queue 5s
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
listen k8s-master
bind 192.168.1.100:6443
mode tcp
option tcplog
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
balance roundrobin
server k8s-master1 192.168.1.100:6443 check inter 2000 rise 2 fall 5
server k8s-master2 192.168.1.101:6443 check inter 2000 rise 2 fall 5
server k8s-master3 192.168.1.102:6443 check inter 2000 rise 2 fall 5
- 啟動Keepalived跟Haproxy效勞:
sudo systemctl start keepalived
sudo systemctl start haproxy
sudo systemctl enable keepalived
sudo systemctl enable haproxy
- 設置集群節點:
sudo kubeadm join 192.168.1.100:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>
步調五:驗證集群狀況
- 檢查集群狀況:
kubectl get nodes
- 檢查Pod狀況:
kubectl get pods --all-namespaces
總結
經由過程以上步調,妳曾經成功搭建了一個高可用K8s集群。在現實利用中,妳可能根據須要對集群停止擴大年夜跟優化。祝妳在利用K8s的過程中一切順利!