• kubernetes 高可用集群


    目录

    一、haproxy负载均衡

    二、pacemaker高可用

    三、部署control-plane

    四、部署worker node


    实验环境

    主机名

    IP

    角色

    docker

    192.168.67.10

    harbor

    k8s1

    192.168.67.11

    control-plane

    k8s2

    192.168.67.12

    control-plane

    k8s3

    192.168.67.13

    control-plane

    k8s4

    192.168.56.14

    haproxy,pacemaker

    k8s5

    192.168.67.15

    haproxy,pacemaker

    k8s6

    192.168.67.16

    worker node

    一、haproxy负载均衡

    配置软件仓库

    1. vim yyl.repo
    2. #高可用的
    3. [HighAvailability]
    4. name=rhel7.6 HighAvailability
    5. baseurl=file:///media/addons/HighAvailability
    6. gpgcheck=0

    下载软件

    yum install -y haproxy net-tools

    编辑配置文件

    测试:

    测试成功后关闭服务,不要设置自启动

    二、pacemaker高可用

    同步配置文件
    scp yyl.repo  k8s5:/etc/yum.repos.d/
    
    安装软件
    1. yum install -y pacemaker pcs psmisc policycoreutils-python
    2. 两个节点都要

    启动pcsd服务  设置用户密码   节点认证
    1. systemctl enable --now pcsd.service
    2. ssh k8s5 systemctl enable --now pcsd.service
    3. echo westos | passwd --stdin hacluster
    4. ssh k8s6 'echo westos | passwd --stdin hacluster'
    5. pcs cluster auth k8s4 k8s5

     创建集群

    pcs cluster setup --name mycluster k8s5 k8s4
    

    启动集群

    pcs cluster start --all
    

     集群自启动

    pcs cluster enable --all
    

    禁用stonith

    pcs property set stonith-enabled=false
    

    添加集群资源

    1. pcs resource create vip ocf:heartbeat:IPaddr2 ip=192.168.67.200 op monitor interval=30s
    2. pcs resource create haproxy systemd:haproxy op monitor interval=60s
    3. pcs resource group add hagroup vip haproxy

    测试

    pcs node standby
    
    资源全部迁移到k8s5 恢复:
    pcs node  unstandby

    测试:

    三、部署control-plane

    k8s1、k8s2、k8s3在配置前需要重置节点

    1. kubeadm reset
    2. kubeadm reset --cri-socket unix:///var/run/cri-dockerd.sock
    3. kubeadm reset --cri-socket unix:///var/run/cri-dockerd.sock
    4. cd /etc/cni/net.d 初始化需要清除
    5. rm -fr *
    6. reboot 可以使iptable 和 ipvs 策略被自动清除

    加载内核模块

    1. modprobe overlay
    2. modprobe br_netfilter
    生成初始化配置文件
    kubeadm config print init-defaults > kubeadm-init.yaml
    

    修改配置

    初始化集群

    kubeadm init   --config kubeadm-init.yaml --upload-certs
    

    部署网络组件

    kubectl apply -f calico.yaml
    

    添加其它control-plane节点
    kubeadm join 192.168.56.200:6443 --token abcdef.0123456789abcdef         --discovery-token-ca-cert-hash sha256:51184d632ecb2f9e6c7f82b064e07c01974924d359eb98035aae7ce98e56d60d         --control-plane --certificate-key cb28e3d92a419945a34a6a2d1db49c80fbf5d8275c28e40f8c7e0450a9ad8fb5
    

    四、部署worker node

    新添加的节点需要初始化配置

    1. 禁用selinux、firewalld、swap分区
    2. 部署containerd
    3. 安装kubelet、kubeadm、kubectl
    4. 配置内核模块

    禁用swap

    1. swapoff -a
    2. vim /etc/fstab

    安装containerd、kubelet、kubeadm、kubectl  从其它节点拷贝repo文件

    1. scp k8s.repo docker.repo k8s6:/etc/yum.repos.d/
    2. yum install -y containerd.io kubeadm-1.24.17-0 kubelet-1.24.17-0 kubectl-1.24.17-0

    自启动服务

    1. systemctl enable --now containerd
    2. systemctl enable --now kubelet

    拷贝containerd的配置文件

    scp -r * k8s6:/etc/containerd/
    

    重启服务:

    1. systemctl restart containerd
    2. crictl config runtime-endpoint unix:///run/containerd/containerd.sock
    3. crictl pull myapp:v1

    配置内核模块:

    1. cd /etc/sysctl.d/
    2. scp docker.conf k8s7:/etc/sysctl.d/
    3. modprobe overlay
    4. modprobe br_netfilter
    5. sysctl --system

    添加worker节点

    kubeadm join 192.168.56.200:6443 --token abcdef.0123456789abcdef         --discovery-token-ca-cert-hash sha256:8845bd441093179e02b51a239075a64b5386085bb702c11397c21abebb132d25
    

    测试:

  • 相关阅读:
    数据库联查json解析后排序失败
    spring的redis注解@Cacheable @Cacheput @CacheEvict的condition、unless
    1.1 数据库系统概述
    Java基础(一文读懂Java基础)
    Vue vue.config.js 的详解与配置
    触摸屏驱动
    QT blockingFilter blockingMap blockingMapped
    数据结构---顺序表,链表
    Android内核模块编译
    GDPU 数据结构 天码行空2
  • 原文地址:https://blog.csdn.net/weixin_56744753/article/details/134468499