安装Kubernetes高可用V1.19.2

本文将介绍k8s集群中安装多个master节点。

配置要求

对于 Kubernetes 初学者,在搭建K8S集群时,(您也可以使用自己的虚拟机、私有云等您最容易获得的 Linux 环境)

  • 至少4台 2核4G 的服务器
  • Cent OS 7.6 / 7.7 / 7.8

安装后的软件版本为

  • Kubernetes v1.19.2
    • calico 3.13.1
    • nginx-ingress 1.5.5
  • Docker 19.03.11

Kubernetes安装:Kubernetes安装拓扑图

准备环境

hostname主机IP角色
k8s-master0110.0.21.120master-a
k8s-master0210.0.21.121master-b
k8s-node0110.0.21.122node
k8s-node0210.0.21.123node

修改 hostname

如果您需要修改 hostname,可执行如下指令:

检查网络是否通信

[root@k8s-master01 ~]# ip add
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:50:56:ac:64:eb brd ff:ff:ff:ff:ff:ff
    inet 10.0.21.120/24 brd 10.0.21.255 scope global noprefixroute ens192
       valid_lft forever preferred_lft forever

安装 docker / kubelet

使用 root 身份在所有节点执行如下代码,以安装软件:

  • docker
  • nfs-utils
  • kubectl / kubeadm /kubelet

快速安装

# 在 master 节点和 node 节点都要执行

export REGISTRY_MIRROR=https://registry.cn-hangzhou.aliyuncs.com
curl -sSL https://kuboard.cn/install-script/v1.19.x/install_kubelet.sh | sh -s 1.19.2

在这里插入图片描述

初始化API Server

后端端口:6443

开启 按源地址保持会话

假设完成创建以后,Load Balancer的 ip 地址为 x.x.x.x

根据每个人实际的情况不同,实现 LoadBalancer 的方式不一样,本文不详细阐述如何搭建 LoadBalancer,请读者自行解决,可以考虑的选择有:

  • nginx

  • haproxy

  • keepalived

  • 云供应商提供的负载均衡产品

拿keepalived 创建Vip地址为例

#所有master节点操作
[root@k8s-master ~]# yum -y install keepalived
[root@k8s-master ~]# cat <<-EOF > /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
router_id master    ##此处k8s-master02主机改为
backup}

vrrp_instance VI_1 {
 state MASTER
 interface ens192
 virtual_router_id 51
 priority 100       ##此处k8s-master02改为80
 advert_int 1
 authentication {
     auth_type k8s
     auth_pass k8s
 }
 virtual_ipaddress {
     10.0.21.119
 }
}

EOF
[root@k8s-master ~]# systemctl start keepalived && systemctl enable keepalived

进行keepalived高可用测试。

初始化 第一个master 节点

在第一个 master 节点 k8s-master01 上执行

# 只在第一个 master 节点执行
# 替换 apiserver.demo 为 您想要的 dnsName
export APISERVER_NAME=apiserver.demo
# Kubernetes 容器组所在的网段,该网段安装完成后,由 kubernetes 创建,事先并不存在于您的物理网络中
export POD_SUBNET=10.100.0.1/16
echo "${MASTER_IP}    ${APISERVER_NAME}" >> /etc/hosts
curl -sSL https://kuboard.cn/install-script/v1.19.x/init_master.sh | sh -s 1.19.2

执行结果

执行结果中: 将其进行复制

  • 黄框,用于初始化第二、个 master 节点
  • 红框,用于初始化 node 节点
    在这里插入图片描述

检查 master 初始化结果

# 只在 master 节点执行

# 查看 master 节点初始化结果
kubectl get nodes -o wide

# 执行如下命令,等待 3-10 分钟,直到所有的容器组处于 Running 状态
watch kubectl get pod -n kube-system -o wide 

在这里插入图片描述

初始化 第二个master节点

在 master 节点上执行

# 只在第二、 master 节点  k8s-master02 执行
# 替换 x.x.x.x 为 ApiServer LoadBalancer 的 IP 地址 我这里是10.0.21.119
export APISERVER_IP=x.x.x.x
# 替换 apiserver.demo 为 前面已经使用的 dnsName
export APISERVER_NAME=apiserver.demo
echo "${APISERVER_IP}    ${APISERVER_NAME}" >> /etc/hosts
# 将保存的黄框内容复制到命令行中 回车即可

在这里插入图片描述

在这里插入图片描述

检查 master 初始化结果

# 只在第一个 master 节点 k8s-master01 执行
# 查看 master 节点初始化结果
kubectl get nodes
NAME           STATUS   ROLES    AGE     VERSION
k8s-master01   Ready    master   36m     v1.19.2
k8s-master02   Ready    master   3m38s   v1.19.2

初始化node

针对所有的node 节点执行

# 只在所有 node 节点执行
# 替换 x.x.x.x 为 ApiServer LoadBalancer 的 IP 地址
export MASTER_IP=x.x.x.x
# 替换 apiserver.demo 为初始化 master 节点时所使用的 APISERVER_NAME
export APISERVER_NAME=apiserver.demo
echo "${MASTER_IP}    ${APISERVER_NAME}" >> /etc/hosts
# 将红框内容复制到命令行中

在这里插入图片描述

在这里插入图片描述

验证 node 初始化结果

# 只在第一个 master 节点 k8s-master01 执行
# 查看 master 节点初始化结果
[root@k8s-master01 ~]# kubectl get nodes
NAME           STATUS   ROLES    AGE     VERSION
k8s-master01   Ready    master   77m     v1.19.2
k8s-master02   Ready    master   44m     v1.19.2
k8s-node1      Ready    <none>   7m37s   v1.19.2
k8s-node2      Ready    <none>   5m40s   v1.19.2

安装完成

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐