打造高可用 Kubernetes 1.13.3 集群:基于 kubeadm 的实践指南
2023-10-14 23:48:22
前言
Kubernetes 是一个容器编排系统,已成为云原生应用程序部署和管理的事实标准。为了确保 Kubernetes 集群的持续可用性和可靠性,部署高可用 (HA) 集群至关重要。本教程将指导您使用 kubeadm 部署高可用 Kubernetes 1.13.3 集群,并提供详细的分步说明。
先决条件
- 三台 Red Hat Enterprise Linux 7.5 服务器(控制节点和两台工作节点)
- root 访问权限或具有 sudo 权限的用户
- 稳定的互联网连接
- 防火墙已禁用或配置为允许必要的端口
第 1 步:准备控制节点
1.1. 更新系统
yum update -y
1.2. 安装必需的软件包
yum install -y yum-utils device-mapper-persistent-data lvm2
1.3. 设置网络
编辑 /etc/hosts
文件并添加以下条目:
192.168.0.100 master.example.com
192.168.0.101 worker1.example.com
192.168.0.102 worker2.example.com
1.4. 初始化 Kubernetes
kubeadm init \
--pod-network-cidr=10.244.0.0/16 \
--apiserver-advertise-address=192.168.0.100 \
--kubernetes-version=1.13.3
1.5. 创建 kubeconfig 文件
mkdir -p /home/kubeadmin/.kube
cp -i /etc/kubernetes/admin.conf /home/kubeadmin/.kube/config
chown kubeadmin:kubeadmin /home/kubeadmin/.kube/config
第 2 步:部署 keepalived 和 HAProxy
2.1. 安装 keepalived 和 HAProxy
在所有三台服务器上运行以下命令:
yum install -y keepalived haproxy
2.2. 配置 keepalived
编辑 /etc/keepalived/keepalived.conf
文件并添加以下配置:
global_defs {
router_id master
}
vrrp_script chk_apiserver {
script "/usr/bin/curl -s --cacert /var/lib/kubernetes/pki/ca.crt https://127.0.0.1:6443/healthz"
interval 2
fall 2
rise 1
}
vrrp_instance VI_1 {
interface eth0
state MASTER
priority 100
advert_int 1
virtual_router_id 51
unicast_src_ip 192.168.0.100
virtual_ipaddress {
192.168.0.100/24
}
track_script {
chk_apiserver
}
}
2.3. 配置 HAProxy
编辑 /etc/haproxy/haproxy.cfg
文件并添加以下配置:
global
log /dev/log local0 info
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4096
user haproxy
group haproxy
daemon
defaults
mode http
log global
option httplog
option dontlognull
retries 3
timeout connect 5s
timeout client 50s
timeout server 50s
frontend kubernetes-api
bind 192.168.0.100:6443
mode tcp
default_backend kubernetes-api-backend
backend kubernetes-api-backend
mode tcp
balance roundrobin
server master 127.0.0.1:6443 check
第 3 步:部署 Kubernetes
3.1. 部署 worker 节点
在两台 worker 节点上运行以下命令:
kubeadm join 192.168.0.100:6443 --token <token> --discovery-token-ca-cert-hash <hash>
3.2. 安装网络插件
安装 Flannel 网络插件:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
第 4 步:验证 HA 集群
4.1. 检查 Kubernetes 集群状态
kubectl get nodes
kubectl get pods --all-namespaces
4.2. 模拟故障转移
在 master 节点上停止 keepalived 服务:
systemctl stop keepalived
检查 worker 节点是否已接管集群:
kubectl get pods --all-namespaces
第 5 步:部署监控和日志记录
5.1. 部署 ELK Stack
5.2. 部署 Prometheus 和 Grafana
在 Kubernetes 上部署 Prometheus 和 Grafana
结论
恭喜!您现在已经成功部署了一个高可用 Kubernetes 1.13.3 集群。通过使用 keepalived 和 HAProxy,您确保了集群在出现故障时仍然可用。此外,通过部署 ELK Stack 和 Prometheus,您还集成了监控和日志记录功能,从而可以深入了解集群的性能和活动。