Kubernetes高可用集群安装

2023-04-25  本文已影响0人  Sean_w

环境规划

master1 192.168.4.55
master2 192.168.4.56
master3 192.168.4.57
node1 192.168.4.58
vip 192.168.4.59 绑定至master1节点

[root@localhost ~]# yum -y install ntpdate
[root@localhost ~]# ntpdate ntp1.aliyun.com
# 写入计划任务
[root@localhost ~]# crontab -e
*/30 * * * * /usr/sbin/ntpdate ntp1.aliyun.com
# 关闭防火墙并禁用开机自启
[root@localhost ~]# systemctl  stop firewalld  &&  systemctl disable firewalld
# Kubernetes安装需要关闭SELinux是因为SELinux是一种安全性较高的Linux安全模块,它将访问控制的决策与应用程序分离,可以限制进程对系统资源的访问。但是,Kubernetes中的某些操作可能会与SELinux产生冲突,例如容器的运行和网络通信等。因此,为了避免这些冲突,Kubernetes安装需要关闭SELinux。这样可以确保Kubernetes的正常运行,同时也可能会降低系统的安全性。
[root@localhost ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g'  /etc/selinux/config
[root@localhost ~]# setenforce 0
# 以master1节点为例,其他节点根据实际主机名设置
[root@master1 ~]# hostnamectl set-hostname master1
[root@master1 ~]# cat >> /etc/hosts <<EOF
master1 192.168.4.55 
master2 192.168.4.56
master3 192.168.4.57
node1   192.168.4.58
EOF
[root@localhost ~]# sed -i 's/.*swap/#&/' /etc/fstab
# 将要加载的模块写入配置文件
[root@localhost ~]# cat <<EOF | tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
# 加载内核模块
[root@localhost ~]# modprobe overlay
[root@localhost ~]# modprobe br_netfilter
# 设置所需的 sysctl 参数,参数在重新启动后保持不变
[root@localhost ~]# cat <<EOF | tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
# 应用 sysctl 参数而不重新启动
[root@localhost ~]# sysctl --system
[root@localhost ~]# yum -y install yum-utils
[root@localhost ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
cat >> /etc/yum.repos.d/kubernetes.repo <<EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
EOF
[root@localhost ~]#  yum install docker-ce-20.10.7 docker-ce-cli-20.10.7 containerd.io 
# 配置docker驱动
[root@localhost ~]# mkdir /etc/docker
[root@localhost ~]# cat >> /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
[root@localhost ~]# systemctl enable --now docker
[root@localhost ~]# yum install -y kubelet-1.20.2 kubeadm-1.20.2 kubectl-1.20.2
[root@localhost ~]# systemctl enable kubelet
# 指定apiserver地址为vip,另外也可通过--service-cidr和--pod-network-cidr指定service和pod使用的网段
[root@localhost ~]# kubeadm init --apiserver-advertise-address 192.168.4.59
[root@localhost ~]# for i in {56..57}
> do
>   scp /etc/kubernetes/pki/{ca.crt,ca.key,sa.key,sa.pub,front-proxy-ca.crt,front-proxy-ca.key}  root@192.168.4.$i:/etc/kubernetes/pki/
>   scp /etc/kubernetes/pki/etcd/{ca.crt,ca.key}  root@192.168.4.$i:/etc/kubernetes/pki/etcd/
> done
[root@localhost ~]# kubeadm join 192.168.4.59:16443 \
--token was8zv.1jzzbub0kr0wmksg \ 
--discovery-token-ca-cert-hash sha256:8ef6ab4fbdd08443e6f24c8e3360c767bc591288d1fbbe9d0cee9e8287ca8d42 \
--control-plane
[root@localhost ~]# kubeadm join 192.168.4.59:16443 \
--token was8zv.1jzzbub0kr0wmksg \ 
--discovery-token-ca-cert-hash sha256:8ef6ab4fbdd08443e6f24c8e3360c767bc591288d1fbbe9d0cee9e8287ca8d42
[root@localhost ~]# wget https://docs.projectcalico.org/v3.20/manifests/calico.yaml
[root@localhost ~]# kubectl apply -f calico.yaml
[root@localhost ~]# kubectl get nodes
上一篇下一篇

猜你喜欢

热点阅读