附034.Kubernetes_v1.21.0高可用部署架构二 (2)

为了方便远程分发文件和执行命令,本实验配置master01节点到其它节点的 ssh 信任关系,即免秘钥管理所有其他节点。

[root@master01 ~]# ssh-keygen -f ~/.ssh/id_rsa -N '' [root@master01 ~]# for all_ip in ${ALL_IPS[@]} do echo ">>> ${all_ip}" ssh-copy-id -i ~/.ssh/id_rsa.pub root@${all_ip} done

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

环境初始化

kubeadm本身不负责对环境的准别,环境的初始化准备本方案使用脚本自动完成。
使用如下脚本对基础环境进行初始化,主要包括:

安装containerd

关闭SELinux及防火墙

优化相关内核参数

关闭swap

设置相关模块

配置相关基础软件

[root@master01 ~]# wget [root@master01 ~]# vim k8sconinit.sh #!/bin/sh #****************************************************************# # ScriptName: k8sinit.sh # Author: xhy # Create Date: 2020-05-30 16:30 # Modify Author: xhy # Modify Date: 2021-04-16 07:35 # Version: #***************************************************************# # Initialize the machine. This needs to be executed on every machine. rm -f /var/lib/rpm/__db.00* rpm -vv --rebuilddb yum clean all yum makecache sleep 3s # Install containerd CONVERSION=1.4.4 #确认containerd版本,其他保持默认 ……

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

对于某些特性,可能需要升级内核,内核升级操作见018.Linux升级内核。

4.19版及以上内核nf_conntrack_ipv4已经改为nf_conntrack。

Kubernetes 1.20.0后可兼容的containerd版本最新为1.4.4。

[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 k8sconinit.sh root@${all_ip}:/root/ ssh root@${all_ip} "bash /root/k8sconinit.sh" done 部署高可用组件

HAProxy安装

HAProxy是可提供高可用性、负载均衡以及基于TCP(从而可以反向代理kubeapiserver等应用)和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种高可用解决方案。

[root@master01 ~]# for master_ip in ${MASTER_IPS[@]} do echo ">>> ${master_ip}" ssh root@${master_ip} "yum -y install gcc gcc-c++ make libnl3 libnl3-devel libnfnetlink openssl-devel wget openssh-clients systemd-devel zlib-devel pcre-devel" ssh root@${master_ip} "wget " ssh root@${master_ip} "tar -zxvf haproxy-2.3.9.tar.gz" ssh root@${master_ip} "cd haproxy-2.3.9/ && make ARCH=x86_64 TARGET=linux-glibc USE_PCRE=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.3.9/examples/errorfiles/ /usr/local/haproxy/" done

KeepAlived安装

KeepAlived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题。本方案3台master节点运行Keepalived,一台为主服务器(MASTER),另外两台为备份服务器(BACKUP)。
对集群外表现为一个虚拟IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。

[root@master01 ~]# for master_ip in ${MASTER_IPS[@]} do echo ">>> ${master_ip}" ssh root@${master_ip} "yum -y install curl gcc gcc-c++ make libnl3 libnl3-devel libnfnetlink openssl-devel" ssh root@${master_ip} "wget " ssh root@${master_ip} "tar -zxvf keepalived-2.2.2.tar.gz" ssh root@${master_ip} "cd keepalived-2.2.2/ && LDFLAGS=\"$LDFAGS -L /usr/local/openssl/lib/\" ./configure --sysconf=http://www.likecs.com/etc --prefix=http://www.likecs.com/usr/local/keepalived && make && make install" ssh root@${master_ip} "systemctl enable keepalived --now && systemctl restart keepalived" done

提示:如上仅需Master01节点操作,从而实现所有节点自动化安装。若出现如下报错:undefined reference to `OPENSSL_init_ssl’,可带上openssl lib路径:

LDFLAGS="$LDFAGS -L /usr/local/openssl/lib/" ./configure --sysconf=http://www.likecs.com/etc --prefix=http://www.likecs.com/usr/local/keepalived

创建配置文件

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

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