K8S 多master节点建设记录

本文记录了K8S多Master节点的建设过程,包括前期准备工作、新增Master节点、高可用集群建设。在高可用集群建设中,详细介绍了如何实现etcd的高可用、配置流量代理以及k8s集群的高可用设置。通过这些步骤,确保了即使单个Master节点故障,集群也能保持稳定运行。
摘要由CSDN通过智能技术生成

0, 前期准备工作

前期准备工作
基本节点搭建

1, 新增master节点

在现有集群基础上添加master节点,保证多master节点共存,则需要增加新的master节点加入集群。
操作步骤:
1,寻找证书路径
切换到现有master节点,并访问证书所在路径。默认情况下路径为/etc/kubernetest/pki,若为自定义修改路径,请查询初始化文件中certificatesDir所配置的路径。或执行指令

[root@master01 ~]# kubectl -n kube-system get cm kubeadm-config -o yaml
apiVersion: v1
data:
  ClusterConfiguration: |
    apiServer:
      extraArgs:
        authorization-mode: Node,RBAC
      timeoutForControlPlane: 4m0s
    apiVersion: kubeadm.k8s.io/v1beta2
    certificatesDir: /etc/kubernetes/pki # 此参数即为证书存储位置
    ...

2,拷贝证书到新master节点

新master节点需要现有master节点上部分证书才可以加入集群,新节点需要的证书有:

ca.crt
ca.key
sa.key
sa.pub
front-proxy-ca.crt
front-proxy-ca.key
etcd/*

可执行指令

cd /etc/kubernetes/pki
scp ca.* sa.* front-proxy-ca.* master02.server:/etc/kubernetes/pki/
scp etcd/ca.* master02.server:/etc/kubernetes/pki/etcd/

或者图省事,直接打包pki目录也行

tar -zcvf pki.tgz pki/
scp pki.tgz master02.server:/etc/kubernetes/

然后到新master节点上解压tgz文件,删除多余文件即可

3,使节点作为master节点加入集群

在新节点进行join操作之前,需要先确保以建立集群中是否配置了controlPlaneEndpoint参数,若未配置则会在join时发生”doesn’t have a stable controlPlaneEndpoint address“错误,解决方法请查看前期准备工作中的note记录。

在安装后获得集群join语句,在语句基础上增加–control-plane即可:

kubeadm join 10.xxx.xxx.xx:6443 --token 2f5xj2.o238zw5qjo381cb8     \
--discovery-token-ca-cert-hash sha256:5910e9d733939674293e617d6ffbdc98a6677fd4147ce43214c912cbcf4e8935   \
--control-plane

之后直接执行以下语句:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

即可查询集群状态

[root@master02 ~]# kubectl get nodes
NAME              STATUS   ROLES    AGE     VERSION
master01.server   Ready    master   2d19h   v1.17.1
master02.server   Ready    master   2d17h   v1.17.1
node01.server     Ready    <none>   2d17h   v1.17.1
node02.server     Ready    <none>   2d17h   v1.17.1

2,高可用集群建设

虽有多个master节点存在,但并不能保证集群高可用,因etcd、kube-apiserver、kube-proxy等还部署在单独的master节点本地。特别是etcd,若其中任何一个master节点崩溃,集群依然瞬间崩溃。

为保证高可用,最低限度必须保证etcd高可用。

1,etcd高可用

本实验为节省服务器资源,使用另一台机器搭建etcd的docker集群,以此充当外部etcd集群,正常情况下应该是多机器构建etcd集群。

若为多机器部署集群,只需自动略过docker相关操作指令即可

拉取镜像:
因之前在其他master节点运行时自动下载了etcd镜像,当然也可以自行下载etcd镜像,本次使用etcd版本为3.4.3-0,etcdctl版本为3.4.3。

1,拉取镜像:

拉取指令为:

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.3-0
2,创建新容器网络

创建新容器网络的目的是为了能给etcd容器分配固定ip,保证分配的容器之间能访问


创建网络etcd-net:

docker network create --driver bridge --subnet=30.1.20.0/12 --gateway=30.1.1.1 etcd-net

预定部署etcd容器的ip分别为:

etcd01--->30.1.20.3
etcd02--->30.1.20.4
etcd03--->30.1.20.5
3,创建ca证书

创建文件:ca-config.json

{
   
    "signing": {
   
        "default": {
   
            "expiry": "438000h"
        },
        "profiles": {
   
            "server": {
   
                "expiry": "438000h",
                "usages": [
                    "signing",
                    "key encipherment",
                    "server auth",
                    "client auth"
                ]
            },
            "client": {
   
                "expiry": "438000h",
                "usages": [
                    "signing",
                    "key encipherment",
                    "client auth"
                ]
            },
            "peer": {
   
                "expiry": "438000h",
                "usages": [
                    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值