附024.Kubernetes_v1.18.3高可用部署架构二 (2)

提示:对于某些特性,可能需要升级内核,内核升级操作见《018.Linux升级内核》。
4.19版及以上内核nf_conntrack_ipv4已经改为nf_conntrack。

互信配置

为了更方便远程分发文件和执行命令,本实验配置master01节点到其它节点的 ssh 信任关系。

[root@master01 ~]# ssh-keygen -f ~/.ssh/id_rsa -N '' [root@master01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@master01 [root@master01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@master02 [root@master01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@master03 [root@master01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@worker01 [root@master01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@worker02 [root@master01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@worker03

提示:此操作仅需要在master节点操作。

其他准备

[root@master01 ~]# vi environment.sh

#!/bin/sh #****************************************************************# # ScriptName: environment.sh # Author: xhy # Create Date: 2020-05-30 16:30 # Modify Author: xhy # Modify Date: 2020-06-15 17:55 # Version: #***************************************************************# # 集群 MASTER 机器 IP 数组 export MASTER_IPS=(172.24.8.71 172.24.8.72 172.24.8.73) # 集群 MASTER IP 对应的主机名数组 export MASTER_NAMES=(master01 master02 master03) # 集群 NODE 机器 IP 数组 export NODE_IPS=(172.24.8.74 172.24.8.75 172.24.8.76) # 集群 NODE IP 对应的主机名数组 export NODE_NAMES=(worker01 worker02 worker03) # 集群所有机器 IP 数组 export ALL_IPS=(172.24.8.71 172.24.8.72 172.24.8.73 172.24.8.74 172.24.8.75 172.24.8.76) # 集群所有IP 对应的主机名数组 export ALL_NAMES=(master01 master02 master03 worker01 worker02 worker03) [root@master01 ~]# source environment.sh [root@master01 ~]# chmod +x *.sh [root@master01 ~]# for all_ip in ${ALL_IPS[@]} do echo ">>> ${all_ip}" scp -rp /etc/hosts root@${all_ip}:/etc/hosts scp -rp k8sinit.sh root@${all_ip}:/root/ ssh root@${all_ip} "bash /root/k8sinit.sh" done

集群部署

相关组件包

需要在每台机器上都安装以下的软件包:

kubeadm: 用来初始化集群的指令;

kubelet: 在集群中的每个节点上用来启动 pod 和 container 等;

kubectl: 用来与集群通信的命令行工具。

kubeadm不能安装或管理 kubelet 或 kubectl ,所以得保证他们满足通过 kubeadm 安装的 Kubernetes 控制层对版本的要求。如果版本没有满足要求,可能导致一些意外错误或问题。
具体相关组件安装见附001.kubectl介绍及使用
提示:Kubernetes 1.18版本所有兼容相应组件的版本参考:https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.18.md。

正式安装 [root@master01 ~]# for all_ip in ${ALL_IPS[@]} do echo ">>> ${all_ip}" ssh root@${all_ip} "cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF" ssh root@${all_ip} "yum install -y kubeadm-1.18.3-0.x86_64 kubelet-1.18.3-0.x86_64 kubectl-1.18.3-0.x86_64 --disableexcludes=kubernetes" ssh root@${all_ip} "systemctl enable kubelet" done [root@master01 ~]# yum search -y kubelet --showduplicates #查看相应版本

提示:如上仅需Master01节点操作,从而实现所有节点自动化安装,同时此时不需要启动kubelet,初始化的过程中会自动启动的,如果此时启动了会出现报错,忽略即可。
说明:同时安装了cri-tools, kubernetes-cni, socat三个依赖:
socat:kubelet的依赖;
cri-tools:即CRI(Container Runtime Interface)容器运行时接口的命令行工具。

image.png

部署高可用组件

HAProxy安装 [root@master01 ~]# for master_ip in ${MASTER_IPS[@]} do echo ">>> ${master_ip}" ssh root@${master_ip} "yum -y install gcc gcc-c++ make libnl libnl-devel libnfnetlink-devel openssl-devel wget openssh-clients systemd-devel zlib-devel pcre-devel libnl3-devel" ssh root@${master_ip} "wget :8888/software/haproxy-2.1.6.tar.gz" ssh root@${master_ip} "tar -zxvf haproxy-2.1.6.tar.gz" ssh root@${master_ip} "cd haproxy-2.1.6/ && make ARCH=x86_64 TARGET=linux-glibc USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_SYSTEMD=1 PREFIX=http://www.likecs.com/usr/local/haprpxy && make install PREFIX=http://www.likecs.com/usr/local/haproxy" ssh root@${master_ip} "cp /usr/local/haproxy/sbin/haproxy /usr/sbin/" ssh root@${master_ip} "useradd -r haproxy && usermod -G haproxy haproxy" ssh root@${master_ip} "mkdir -p /etc/haproxy && cp -r /root/haproxy-2.1.6/examples/errorfiles/ /usr/local/haproxy/" done

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpgzzw.html