10-高可用Kubernetes集群搭建方案

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huangjun0210/article/details/86712247

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通信
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/huangjun0210/article/details/86712247