Kubernetes高可用部署

2022-06-04  本文已影响0人  想成为大师的学徒小纪

一、环境准备

主机名 IP 部署应用
cnsz-fbu-bck8s-master01-uat 10.81.0.101 kubeadm, kubectl, kubelet, docker, apiserver, controllerManager, scheduler, helm
cnsz-fbu-bck8s-master02-uat 10.81.0.102 kubeadm, kubectl, kubelet, docker, apiserver, controllerManager, scheduler
cnsz-fbu-bck8s-master03-uat 10.81.0.103 kubeadm, kubectl, kubelet, docker, apiserver, controllerManager, scheduler
cnsz-fbu-bck8s-node01-uat 10.81.0.104 kubeadm, kubelet, docker, kubeproxy
cnsz-fbu-bck8s-node02-uat 10.81.0.105 kubeadm, kubelet, docker, kubeproxy
cnsz-fbu-etcd01-uat 10.81.64.37
vip:10.81.64.110
etcd, nginx, keepalived
cnsz-fbu-etcd02-uat 10.81.64.38 etcd, nginx, keepalived
cnsz-fbu-etcd03-uat 10.81.64.39 etcd

升级内核版本到4.0以上,设置docker存储驱动为overlay2需要内核版本高于4.0。

yum -y install http://192.168.73.43/soft/kernel-4.9.86-30.el7.x86_64.rpm
awk -F "'" '$1=="menuentry "{print $2}' /etc/grub2.cfg
cat >>/etc/rc.local <<'EOF'
grub2-set-default 'CentOS Linux (4.9.86-30.el7.x86_64) 7 (Core)'
EOF
reboot

uname -r

关闭swap交换空间,swapoff -a,然后在/etc/fstab文件下删除swap项。

在安全内网环境时,关闭防火墙服务。

systemctl stop firewalld
systemctl disable firewalld

禁用SELinux,让容器可以读取主机文件系统

setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

确保每个节点上的MAC地址和product_uuid是唯一的

ip a
cat /sys/class/dmi/id/product_uuid

允许iptables检查桥接流量

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system

设置kubectl命令补全功能

yum -y install bash-completion
echo "source <(kubectl completion bash)" >> ~/.bash_profile
source /etc/profile.d/bash_completion.sh
source /root/.bash_profile

设置host解析

cat >> /etc/hosts <<'EOF'
10.81.0.101 cnsz-fbu-bck8s-master01-uat
10.81.0.102 cnsz-fbu-bck8s-master02-uat
10.81.0.103 cnsz-fbu-bck8s-master03-uat
10.81.0.104 cnsz-fbu-bck8s-node01-uat
10.81.0.105 cnsz-fbu-bck8s-node02-uat
10.81.64.110 apiserver
EOF

二、使用kubeadm工具安装

1、安装容器运行时docker

<!== 所有k8s主机执行 ==>

2、安装外部ETCD集群

3、安装Nginx+Keepalived反代apiServer

4、开启ipvs

5、安装kubeadm及相关工具

上传修改好证书有效期重新编译的kubeadm命令

<!== 所有master节点执行 ==>

cat >/etc/yum.repos.d/kubernetes.repo <<'EOF'
[kubernetes]
name=Kubernetes Repository
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
EOF
yum makecache fast
yum -y install kubelet-1.19.6-0 kubeadm-1.19.6-0 kubectl-1.19.6-0 --disableexcludes=kubernetes
systemctl enable --now kubelet

替换为重新编译的kubeadm命令

mv /usr/bin/kubeadm{,_bak}
tar zxf kubeadm.tar.gz -C /usr/bin

<!== 所有node节点执行 ==>

cat >/etc/yum.repos.d/kubernetes.repo <<'EOF'
[kubernetes]
name=Kubernetes Repository
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
EOF
yum makecache fast
yum -y install kubelet-1.19.6-0 kubeadm-1.19.6-0 --disableexcludes=kubernetes
systemctl enable --now kubelet

替换为重新编译的kubeadm命令

mv /usr/bin/kubeadm{,_bak}
tar zxf kubeadm.tar.gz -C /usr/bin

6、初始化master01节点

7、其他master节点加入控制平面集群

8、开启PodPreset资源

9、worker节点加入集群

10、安装pod网络插件

<!== 任意master节点执行 ==>

(1)、flannel

(2)、calico

11、创建一个服务测试

三、修改证书有效期

1、使用脚本修改证书有效期

该脚本为一位码友编写,https://github.com/yuyicai/update-kube-cert

<!== 所有master节点都是要执行 ==>

2、修改源码重新编译

四、helm(k8s包管理器)安装

<!== 任意master节点执行 ==>

五、Ingress Controller安装

1、Ingress Nginx Controller

2、Nginx Ingress Controller

六、Rancher(k8s管理web)高可用安装

上一篇下一篇

猜你喜欢

热点阅读