Kubernetes高可用集群V1.19.2安装 (一)
安装Kubernetes高可用V1.19.2本文将介绍k8s集群中安装多个master节点。配置要求对于 Kubernetes 初学者,在搭建K8S集群时,推荐在阿里云或腾讯云采购如下配置:(您也可以使用自己的虚拟机、私有云等您最容易获得的 Linux 环境)至少2台 2核4G 的服务器Cent OS 7.6 / 7.7 / 7.8安装后的软件版本为Kubernetes v1.19.2calico
·
安装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
准备环境
hostname | 主机IP | 角色 |
---|---|---|
k8s-master01 | 10.0.21.120 | master-a |
k8s-master02 | 10.0.21.121 | master-b |
k8s-node01 | 10.0.21.122 | node |
k8s-node02 | 10.0.21.123 | node |
修改 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
安装完成
更多推荐
已为社区贡献3条内容
所有评论(0)