在 Debian 上实现 Kubernetes 高可用
一 架构与前置准备
sudo swapoff -a && sudo sed -i '/ swap / s/^/#/' /etc/fstabnet.bridge.bridge-nf-call-iptables=1、net.bridge.bridge-nf-call-ip6tables=1、net.ipv4.ip_forward=1二 安装容器运行时与 Kubernetes 组件
sudo apt update && sudo apt install -y containerdsudo modprobe overlay && sudo modprobe br_netfiltersudo mkdir -p /etc/containerd && containerd config default | sudo tee /etc/containerd/config.tomlsudo systemctl enable --now containerdecho "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.listsudo apt update && sudo apt install -y kubelet kubeadm kubectlsudo apt-mark hold kubelet kubeadm kubectl三 搭建高可用控制面与 etcd
sudo kubeadm init --control-plane-endpoint 192.168.16.10:6443 --upload-certs --pod-network-cidr=10.244.0.0/16sudo kubeadm join 192.168.16.10:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash> --control-plane --certificate-key <cert-key>sudo kubeadm join 192.168.16.10:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>四 部署负载均衡与 VIP 漂移
sudo apt install -y haproxyfrontend k8s-api
bind *:6443
mode tcp
default_backend k8s-api-backend
backend k8s-api-backend
mode tcp
balance roundrobin
server master1 192.168.16.11:6443 check
server master2 192.168.16.12:6443 check
server master3 192.168.16.13:6443 check
sudo apt install -y keepalivedvirtual_ipaddress { 192.168.16.10/24 }net.ipv4.ip_nonlocal_bind=1sudo systemctl enable --now keepalived haproxy五 网络插件 验证与运维建议
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yamlkubectl get nodes -o wide、kubectl get pods -Akubectl create deployment nginx --image=nginx:1.25 --replicas=3,kubectl expose deployment nginx --type=NodePort --port=80