Kubernetes 1.29 集群搭建:基于 kubeadm 的高可用部署与网络插件选择
·
以下是基于kubeadm的Kubernetes 1.29高可用集群部署指南,包含关键步骤和网络插件选择建议:
一、架构设计
-
高可用模式
- 堆叠式etcd拓扑(推荐):每个控制平面节点运行etcd和kube-apiserver
- 最小配置:3台控制平面节点 + 2台工作节点 + 1台负载均衡器(如HAProxy)
-
节点角色分配
# 控制平面节点 x3 (2C4G+) k8s-master-01, k8s-master-02, k8s-master-03 # 工作节点 xN (按需配置) k8s-worker-01, k8s-worker-02 # 负载均衡器 (1C2G+) k8s-lb
二、前置准备
1. 所有节点执行
# 关闭Swap
sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
# 设置内核参数
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
cat <<EOF | sudo tee /etc/sysctl.d/k99-kubernetes.conf
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
sudo sysctl --system
# 安装容器运行时(containerd为例)
sudo apt-get install containerd
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
sudo systemctl restart containerd
2. 负载均衡器配置(HAProxy示例)
# /etc/haproxy/haproxy.cfg
frontend k8s-api
bind *:6443
mode tcp
default_backend k8s-control-plane
backend k8s-control-plane
mode tcp
balance roundrobin
server master1 192.168.1.101:6443 check
server master2 192.168.1.102:6443 check
server master3 192.168.1.103:6443 check
三、初始化控制平面
1. 首个主节点初始化
sudo kubeadm init \
--control-plane-endpoint "k8s-lb:6443" \
--upload-certs \
--pod-network-cidr=10.244.0.0/16 \
--kubernetes-version 1.29.0
2. 加入其他控制节点
# 根据init输出的命令加入(含证书密钥)
kubeadm join k8s-lb:6443 --token <token> \
--discovery-token-ca-cert-hash sha256:<hash> \
--control-plane --certificate-key <key>
四、网络插件选择与部署
| 插件 | 特点 | 部署命令 |
|---|---|---|
| Calico | 网络策略完善,性能优异 | kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml |
| Flannel | 配置简单,适合基础场景 | kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml |
| Cilium | eBPF驱动,高级网络观测能力 | 需单独安装helm chart |
推荐选择:生产环境优先使用Calico(支持NetworkPolicy),测试环境可用Flannel
五、工作节点加入
kubeadm join k8s-lb:6443 \
--token <token> \
--discovery-token-ca-cert-hash sha256:<hash>
六、验证集群状态
# 检查节点状态
kubectl get nodes -o wide
# 检查核心组件
kubectl get pods -n kube-system
# 测试DNS解析
kubectl run test --image=busybox --rm -it --restart=Never -- nslookup kubernetes.default
关键注意事项
- 证书管理:
# 查看证书有效期 sudo kubeadm certs check-expiration - 升级策略:
- 使用
kubeadm upgrade plan逐步升级控制平面 - 遵循官方版本兼容矩阵
- 使用
- 备份恢复:
# 备份etcd ETCDCTL_API=3 etcdctl snapshot save snapshot.db \ --endpoints=https://127.0.0.1:2379 \ --cacert=/etc/kubernetes/pki/etcd/ca.crt \ --cert=/etc/kubernetes/pki/etcd/server.crt \ --key=/etc/kubernetes/pki/etcd/server.key
完整文档参考:Kubernetes官方高可用指南
更多推荐
所有评论(0)