高可用架构
高可用架构
集群架构
┌─────────────────────────────────────────────┐
│ Load Balancer (HA) │
│ (keepalived + haproxy) │
└───────────────┬─────────────────────────────┘
│
┌───────────┴───────────┬─────────────┐
│ │ │
┌───▼────┐ ┌────▼───┐ ┌────▼───┐
│Master-1│ │Master-2│ │Master-3│
│ etcd │ │ etcd │ │ etcd │
└────────┘ └────────┘ └────────┘
│ │ │
└───────────┬───────────┴─────────────┘
│
┌───────────┴───────────┬─────────────┐
│ │ │
┌───▼────┐ ┌────▼───┐ ┌────▼───┐
│Worker-1│ │Worker-2│ │Worker-N│
└────────┘ └────────┘ └────────┘
控制平面高可用
最低配置:
- Master 节点:3 个(奇数)
- etcd 节点:3 个
- Load Balancer:2 个(主备)
kubeadm 高可用部署
# 初始化第一个 Master
sudo kubeadm init \
--control-plane-endpoint="lb.example.com:6443" \
--upload-certs \
--kubernetes-version=v1.30.0 \
--pod-network-cidr=10.244.0.0/16
# 加入其他 Master 节点
sudo kubeadm join lb.example.com:6443 \
--token <token> \
--discovery-token-ca-cert-hash sha256:<hash> \
--control-plane \
--certificate-key <cert-key>
HAProxy 配置
# /etc/haproxy/haproxy.cfg
frontend k8s-api
bind *:6443
mode tcp
default_backend k8s-api-backend
backend k8s-api-backend
mode tcp
balance roundrobin
server master-1 192.168.1.11:6443 check
server master-2 192.168.1.12:6443 check
server master-3 192.168.1.13:6443 check
Keepalived 配置
# /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
virtual_ipaddress {
192.168.1.100
}
}
etcd 高可用
# 检查 etcd 集群状态
ETCDCTL_API=3 etcdctl \
--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 \
endpoint health
小结
✅ 高可用架构设计
✅ 控制平面 HA
✅ 负载均衡配置
✅ etcd 集群管理
下一节:容量规划。