Kubernetes(简称K8s)是一种风行的容器编排东西,可能主动化安排、扩大年夜跟管理容器化利用顺序。高可用集群是K8s集群的一种安排形式,经由过程多个节点跟负载均衡技巧,确保集群的牢固性跟坚固性。本文将具体介绍K8s高可用集群的搭建过程,从入门到实战,帮助你轻松控制这一技能。
在开端搭建高可用集群之前,我们须要筹备以下情况:
systemctl stop firewalld
systemctl disable firewalld
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0
swapoff -a
sed -ri 's/.swap./#&/' /etc/fstab
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
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
sudo systemctl start docker
sudo systemctl enable docker
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://<镜像减速器地点>"]
}
EOF
sudo systemctl restart docker
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
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
sudo yum install -y keepalived haproxy
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
}
}
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
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
kubectl get pods --all-namespaces
经由过程以上步调,你曾经成功搭建了一个高可用K8s集群。在现实利用中,你可能根据须要对集群停止扩大年夜跟优化。祝你在利用K8s的过程中全部顺利!