美文网首页
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