欧拉系统双Master高可用Kubernetes集群一键式部署指南

欧拉系统双Master高可用Kubernetes集群一键式部署

一、系统初始化(所有节点执行)

# ===================== 基础配置 =====================
# 禁用防火墙与SELinux
sudo systemctl stop firewalld && sudo systemctl disable firewalld
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config

# 关闭Swap
sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

# 配置内核参数
cat <

二、负载均衡层部署(lb01/lb02执行)

# ===================== HAProxy安装 =====================
sudo yum install -y haproxy

# 生成配置文件(注意替换实际Master IP)
cat <

三、容器运行时安装(所有节点执行)

# ===================== Containerd安装 =====================
cat <

四、Kubernetes组件安装(所有节点执行)

# ===================== 配置仓库 =====================
cat <

五、首个Master节点初始化(master01执行)

# ===================== 生成初始化配置 =====================
cat <

六、第二个Master节点加入(master02执行)

# 使用master01生成的control-plane加入命令
sudo kubeadm join lb-vip:6443 --token  \
  --discovery-token-ca-cert-hash sha256: \
  --control-plane --certificate-key  \
  --apiserver-advertise-address=172.20.1.12

# 验证etcd集群
sudo docker run --rm -it \
  --net host \
  -v /etc/kubernetes/pki/etcd:/etc/kubernetes/pki/etcd \
  registry.aliyuncs.com/google_containers/etcd:3.5.6-0 \
  etcdctl --endpoints=https://172.20.1.11:2379 \
  --cert=/etc/kubernetes/pki/etcd/peer.crt \
  --key=/etc/kubernetes/pki/etcd/peer.key \
  --cacert=/etc/kubernetes/pki/etcd/ca.crt \
  endpoint health

七、Worker节点加入(node01执行)

# 使用worker加入命令
sudo kubeadm join lb-vip:6443 --token  \
  --discovery-token-ca-cert-hash sha256:

# 在主节点验证
kubectl get nodes -o wide -w

八、网络插件部署(任一Master执行)

# ===================== Calico安装 =====================
kubectl apply -f https://docs.projectcalico.org/v3.26/manifests/calico.yaml

# 监控安装进度
watch kubectl get pods -n kube-system -l k8s-app=calico-node

# 验证网络连通性
kubectl create deployment nginx --image=nginx:alpine
kubectl expose deployment nginx --port=80
kubectl run test --image=busybox --rm -it -- ping nginx.default.svc.cluster.local

九、验证高可用性

# 模拟Master节点故障
ssh master01 "sudo systemctl stop kube-apiserver"
kubectl get componentstatus  # 观察服务状态切换

# 验证VIP漂移
ssh lb01 "sudo systemctl stop keepalived"
ping -c 5 lb-vip  # 应持续可达

十、部署后检查清单

# 集群状态检查
kubectl get componentstatus
kubectl get nodes -o wide
kubectl get pods -A -o wide

# 网络策略验证
kubectl run test-pod --image=nginx:alpine --restart=Never --rm -it -- sh
# 在容器内执行:
curl -I http://kubernetes.default
ping <其他节点Pod IP>

# 存储验证
kubectl apply -f - <

故障排查命令速查

# 查看kubelet日志
journalctl -u kubelet -f

# 检查证书有效期
kubeadm certs check-expiration

# 重置节点(危险!)
kubeadm reset -f
rm -rf /etc/cni/net.d /etc/kubernetes/ $HOME/.kube

# 强制删除Pod
kubectl delete pod  --grace-period=0 --force

部署完成验证清单

  1. 所有节点状态为Ready
  2. calico-node Pod全部Running
  3. coredns Pod正常运行
  4. 能跨节点访问Service
  5. VIP漂移测试成功
  6. 控制平面组件无警告信息

你可能感兴趣的:(k8s,容器,云原生,kubernetes,服务器,运维)