美文网首页
Kubernetes高可用集群安装

Kubernetes高可用集群安装

作者: Sean_w | 来源:发表于2023-04-25 17:11 被阅读0次

环境规划

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
  • 关闭防火墙和Selinux(所有节点执行)
# 关闭防火墙并禁用开机自启
[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
  • 配置主机名并写入到hosts文件(所有节点执行)
# 以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
  • 关闭swap分区(所有节点执行)
[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
  • 配置docker的repo源(所有节点执行)
[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
  • 配置k8s组件的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
  • 安装docker engine(所有节点执行)
[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
  • 部署keepalived(三台master节点操作),keepalived布署完成后,vip将会被绑定到其中一台master节点上

  • 安装HAproxy(三台master节点操作),亦可使用nginx代替,用于通过vip轮询三台master节点的apiserver,代理端口不能使用6443,使用未被占用的端口做服务代理,以下使用16443

  • 安装kubernetes相关软件包,并初始化vip绑定的节点

[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
  • 将vip节点/etc/kubernetes/pki/相关证书拷贝到其他主节点
[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
  • 加入worker节点
[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

相关文章

网友评论

      本文标题:Kubernetes高可用集群安装

      本文链接:https://www.haomeiwen.com/subject/degikdtx.html