高可用Kubernetes集群搭建方案
Kubernetes用于生产环境要考虑的首要问题是Kubernetes集群的高可用性,Kubernetes集群的高可用主要指控制平面的高可用。目前,kubeadm引导的k8s集群的控制平面是单点的。
1. Kubernetes集群控制平面的高可用考量
- 不止一个Master节点
- etcd集群数据库的高可用
- 多Master节点下kube-scheduler、kube-controller-manager的运行机制问题
- 多Master节点上的kube-apiserver对外要暴露唯一入口,并负载均衡
2. Kubernetes集群控制平面高可用方案前提
基于Kubeadm引导的集群
- 要有三个或三个以上的节点用于部署Master组件
- 建议Master节点不承担工作负载
- 建议etcdj集群单独部署在三个干净独立的节点上

3. Kubernetes集群控制平面高可用方案步骤

3.1 搭建高可用etcd集群
etcd集群搭建步骤:
- 创建etcd专用CA
- 创建peer.crt,peer.key,server.crt,server.key
在每个节点上执行一下语句生成peer和server的私钥和证书:
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=serverconfig.json | cfssljson-bare server
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=peerconfig.json | cfssljson-bare peer

- 同步证书,并启动etcd集群

3.2 搭建load balancer

常见的负载均衡器有多种,可以使用云服务提供商提供的负载均衡服务,也可以自己搭建(lvs+keepalived等)
3.3 创建etcd集群的client相关证书
在etcd0上创建cilent访问相关证书
- 创建client访问etcd集群证书
cfssl gencert -ca=ca.crt -ca-key=ca.key -config=ca-config.json -profile=client client.json丨cfssljson-bare client

- 将client证书拷贝到每个master node上
ca.crt,client.crt,client.key -> /etc/kubernetes/pki/etcd(每个masternode)
3.4 安装master0节点上的控制平面
基于kubeadm引导
kubeadm init -config=config.yaml


3.5 安装master1和master2上的控制平面
- 将CA等证书文件scp到masterl和master2节点
/etc/kubernetes/pki/[ca.crt,ca.key,sa.key,sa.pub) -> master1 和 master2
- 执行kubeadm init -config=config.yaml on mastel和master2
kubeadm init -config=config.yaml
- 将masterl和master2加入到 Load Balancer

3.6 收尾工作
- 安装CNI网络
- 将Worker Nodes加入高可用集群
- 配置Node组件kubelet和kube-proxy通过LB与apiserver通信


本文详细介绍如何构建高可用的Kubernetes集群,包括控制平面的高可用考量、前提条件及实施步骤,如搭建高可用etcd集群、配置负载均衡器、安装多Master节点控制平面等。

790

被折叠的 条评论
为什么被折叠?



