• k8s--基础--6.2--环境搭建--单master高可用集群


    k8s–基础–6.2–环境搭建–单master高可用集群


    前提

    使用root用户
    
    • 1

    1、机器

    主机名IP说明
    master1192.168.187.1542核4G,硬盘20G,核数最小要求是2
    node1192.168.187.1552核4G,硬盘20G,核数最小要求是2

    2、公共配置

    所有机器都要做

    2.1、修改主机名

    hostnamectl set-hostname master1
    hostnamectl set-hostname node1
    
    • 1
    • 2

    2.2、配置hosts文件

    cat >> /etc/hosts  <
    • 1
    • 2
    • 3
    • 4
    • 5

    2.3、安装kubeadm和kubelet

    # 安装kubeadm和kubelet,kubeadm和kubelet版本一定要一致
    yum  -y  install kubelet-1.18.2  kubeadm-1.18.2  kubectl-1.18.2  --disableexcludes=kubernetes 
    # 查看版本
    kubeadm   version
    # 查看版本
    kubelet --version
    
    # 开机启动
    systemctl enable kubelet
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述

    2.3.1、解决kubeadm自动安装高版本问题

    在这里插入图片描述

    重新安装对应的kubelet版本

    yum -y remove kubelet
    yum  -y  install kubelet-1.18.2  kubeadm-1.18.2  kubectl-1.18.2  --disableexcludes=kubernetes 
    
    # 查看版本
    kubeadm   version
    # 查看版本
    kubelet --version
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

    2.4、安装镜像

    2.4.1、安装资料

    在这里插入图片描述

    2.4.2、安装镜像

    docker load -i 1-18-kube-apiserver.tar.gz
    docker load -i 1-18-kube-scheduler.tar.gz
    docker load -i 1-18-kube-controller-manager.tar.gz
    docker load -i 1-18-pause.tar.gz
    docker load -i 1-18-cordns.tar.gz
    docker load -i 1-18-etcd.tar.gz
    docker load -i 1-18-kube-proxy.tar.gz
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

    2.4.3、镜像版本

    k8s.gcr.io/pause:3.2
    k8s.gcr.io/etcd:3.4.3-0 
    k8s.gcr.io/coredns:1.6.7
    k8s.gcr.io/kube-apiserver:v1.18.2
    k8s.gcr.io/kube-controller-manager:v1.18.2
    k8s.gcr.io/kube-scheduler:v1.18.2
    k8s.gcr.io/kube-proxy:v1.18.2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    3、初始化k8s集群

    在master1节点初始化k8s集群。

    3.1、初始化k8s集群

    kubeadm init --kubernetes-version=v1.18.2 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.187.154
    
    
    • 1
    • 2

    在这里插入图片描述

    kubeadm join … 这条命令需要记住,我们把k8s的node1节点加入到集群需要输入这条命令。

    3.2、在master1节点执行如下,这样才能有权限操作k8s资源

    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
    • 1
    • 2
    • 3

    3.3、检测上面命令是否成功

    只有成功,下面的命令才有权限执行

    3.3.1、获取节点

    kubectl get nodes
    
    • 1

    在这里插入图片描述

    3.3.2、获取pod

    kubectl get pods -n kube-system
    
    • 1

    在这里插入图片描述

    3.3.3、问题

    上面可以看到master1的STATUS状态是NotReady,pods的cordns是pending。
    这是因为没有安装网络插件,需要安装calico或者flannel。

    4、安装网络插件:calico

    在master1节点安装calico网络插件

    4.1、安装镜像

    在master1,node1上安装

    4.1.1、安装资料

    在这里插入图片描述

    4.1.2、安装镜像

    
    docker load -i cni.tar.gz
    docker load -i calico-node.tar.gz
     
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    4.1.3、镜像版本

    quay.io/calico/node:v3.5.3  
    quay.io/calico/cni:v3.5.3   
     
    
    • 1
    • 2
    • 3

    4.2、上传配置文件

    在master1执行

    在这里插入图片描述

    在这里插入图片描述

    4.2.1、修改内容

    在这里插入图片描述

    4.3、执行操作

    在master1执行

    kubectl apply -f /root/k8s/calico.yaml
    
    
    • 1
    • 2

    4.4、检测

    在master1执行

    kubectl get nodes
    kubectl get pods -n kube-system
    # 显示节点信息
    kubectl get pods -n kube-system -o wide
     
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    上面可以看到master1的STATUS状态是Ready,pods的cordns是running
    说明master1节点的calico安装完成

    5、node1节点加入到k8s集群

    在node1节点操作

    5.1、加入集群

    kubeadm join 192.168.187.154:6443 --token 87nfih.visq5bbumu0x3er8 \
        --discovery-token-ca-cert-hash sha256:9d31a1f45b6a8a684bd12de939b483a0d8029eeedf2e78a9471b78c2bc3c1e89 
    
    • 1
    • 2

    5.2、查看节点信息

    在master1上执行

    kubectl get nodes
    
    
    • 1
    • 2

    在这里插入图片描述

    说明node1节点也加入到k8s集群了

    通过以上就完成了k8s单master高可用集群的搭建

    6、最终节点状态

    kubectl get pods -n kube-system -o wide
    
    
    
    • 1
    • 2
    • 3

    在这里插入图片描述

  • 相关阅读:
    一篇文章让你理解TCP协议,搭建TCP flood攻击实验以及了解其防御原理
    c++ noexcept与constexpr解析
    函数柯里化
    A Review of Generalized Zero-Shot Learning Methods
    初步了解Nginx
    怎么保护苹果手机移动应用程序ipa中文件安全?
    Linux Shell 编程基础语法汇总
    猿创征文|【云原生】学习云原生经验分享
    cd /op-bash: 无法为立即文档创建临时文件: 设备上没有空间
    Java中常见锁的分类及概念分析
  • 原文地址:https://blog.csdn.net/zhou920786312/article/details/126222879