2026-10-27 11:51:17
架构说明
Kubernetes集群组件:
k8s集群高可用,一般是etcd,kube-apiserver,kube-controller-manager,kube-scheduler服务组件的高可用。
规划:
3个master节点,2个worker节点,使用keepalived+haproxy做高可用
一、前期环境准备
Kubernetes 1.8开始要求关闭系统的Swap,如果不关闭,默认配置下kubelet将无法启动。
方法一 通过kubelet的启动参数–fail-swap-on=false更改这个限制。
方法二 关闭系统的Swap, swapoff -a
修改/etc/fstab文件,注释掉SWAP的自动挂载,使用free -m确认swap已经关闭。
二、docker安装
安装docker-ce,所有节点都要安装
yum-utils 提供yum-config-manager工具,devicemapper存储需要device-mapper-persistent-data和lvm2
添加yum源仓库
官方仓库
安装docker
配置docker中国镜像加速器,修改cgroup driver为systemd,k8s建议使用systemd,配置后重启docker
三、安装haproxy,keepalived
安装haproxy和keepalived,实现kube-apiserver高可用
psmisc提供killall命令
配置haproxy
配置keepalived
注意:在另外两个节点,设置state为BACKUP,priority设置为110,100
启动所有节点的haproxy和keepalived
查看VIP
注意,使用ifconfig命令是看不到的,必须使用ip addr命令
这时候vip在130.252.10.235上,我们关闭235上的haproxy,验证vip是否会漂移到其他节点
四、kubeadm/kubelet/kubectl安装
master节点安装:kubeadm、kubelet、kubectl
node节点安装:kubeadm、kubelet
安装
五、使用kubeadm初始化cluster
step1 准备初始化配置文件
根据自己的环境修改配置.
step2 处理kubernetes依赖的镜像
master需要的镜像为
node节点需要的镜像为
查看需要的镜像版本
拉取镜像
六、初始化第一个master节点
注意:如果你禁用了swap分区,则不需要加--ignore-preflight-errors=Swap
配置kubectl
启用kubectl的自动补全命令
七、安装Pod网络flannel
八、将其他master节点添加到cluster
将node1证书文件复制到其他master节点node2,node3
分别在master1和master2 执行下面的命令
九、将node节点添加到cluster
十、检查集群运行 健康
在master节点查看节点状态
所有的节点都是NotReady,这是因为每个节点都需要启动若干组件,这些组件都是在pod中运行,需要从Google下载镜像
查看pod的状态
查看集群信息
查看etcd集群
查看集群是否 健康
查看集群的leader
注意 :因为是3个节点的ETCD集群,所以只能有一个宕机,如果同时又2个节点宕机,则会出现问题Unable to connect to the server: EOF
etd集群需要大多数节点(仲裁)才能就集群状态的更新达成一致,所以ETCD集群节点一般是奇数个,而且只有存活节点个数大于下线节 点个数才能正常运行,5个节点的ETCD集群,允许同时2个节点故障。
一般建议5个节点,超过五个虽然容错性更高,但是集群写入性就会差。
检查IPVS