• 部署k8s集群


    首先,查看k8s和docker的版本对应关系

    从版本对应关系可以看到我们要安装哪个版本的docker和k8s,本案例,我安装的docker是20.10.24 , k8s安装的是 1.22.17。注意,版本要对应,否则 执行 kubeadm init 的时候会报错!

    1、修改节点主机名

    hostnamectl --static set-hostname k8s-master

    修改hosts 

    vim /etc/hosts

    添加的内容如下 :

    1. 192.168.0.107 k8s-master
    2. 192.168.0.106 k8s-node1
    3. 192.168.0.108 k8s-node2

    2、关闭swap分区

    临时关闭

    swapoff -a
    

    永久关闭:

    sed -ri 's/.*swap.*/#&/' /etc/fstab
    

    3、关闭防火墙

    ufw disable

    4、安装docker

    1)首先删除电脑之前安装的docker

    apt-get purge docker-buildx-plugin docker-ce  docker-ce-cli docker-ce-rootless-extras docker-compose-plugin containerd.io  

    2)执行以下命令安装docker

    1. apt update
    2. apt install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common
    3. sudo curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
    4. add-apt-repository \
    5. "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
    6. $(lsb_release -cs) \
    7. stable"
    8. apt update
    9. apt install -y docker-ce=5:20.10.24~3-0~ubuntu-focal docker-ce-cli=5:20.10.24~3-0~ubuntu-focal
    10. docker version

    切换docker下载源为国内镜像站 以及 修改cgroups

    vim /etc/docker/daemon.json

    打开后输入以下内容:

    1. {
    2. "registry-mirrors": ["https://zfzbet67.mirror.aliyuncs.com"],
    3. "exec-opts": [ "native.cgroupdriver=systemd" ]
    4. }

    重启docker服务

    service docker restart

    5、安装k8s

    1. apt update && apt install apt-transport-https
    2. curl -fsSL https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
    3. add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main"
    4. apt-cache madison kubelet kubectl kubeadm |grep '1.22.17-00'
    5. apt install -y kubelet=1.22.17-00 kubectl=1.22.17-00 kubeadm=1.22.17-00

    配置禁用 swap

    vim /etc/default/kubelet
    

    添加以下内容:

    KUBELET_EXTRA_ARGS="--fail-swap-on=false"
    

    重启服务:

    systemctl daemon-reload && systemctl restart kubelet
    

    默认是pause:3.7 在kubeadm init 初始化会爆粗,所以需要pause:3.6

    1. ctr -n k8s.io image pull registry.aliyuncs.com/google_containers/pause:3.6
    2. ctr -n k8s.io image tag registry.aliyuncs.com/google_containers/pause:3.6 k8s.gcr.io/pause:3.6

    6、添加master节点和node节点

    注意 master节点和 node节点都是需要 执行 1-5一遍的

    1)master 节点初始化节点

    1. kubeadm init \
    2. --kubernetes-version=v1.22.17 \
    3. --image-repository registry.aliyuncs.com/google_containers \
    4. --pod-network-cidr=10.244.0.0/16 \
    5. --ignore-preflight-errors=Swap

    当你看到如下字样是,就说明初始化成功了,请把最后那行以kubeadm join开头的命令复制下来,之后安装工作节点时要用到的,如果你不慎遗失了该命令,可以在master节点上使用kubeadm token create --print-join-command命令来重新生成一条。

    接着,执行以下 命令:

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

    部署flannel网络

    flannel是什么?它是一个专门为 k8s 设置的网络规划服务,可以让集群中的不同节点主机创建的 docker 容器都具有全集群唯一的虚拟IP地址。想要部署flannel的话直接执行下述命令即可:

    kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml

    输出如下内容即为安装完成:

    1. clusterrole.rbac.authorization.k8s.io/flannel created
    2. clusterrolebinding.rbac.authorization.k8s.io/flannel created
    3. serviceaccount/flannel created
    4. configmap/kube-flannel-cfg created
    5. daemonset.extensions/kube-flannel-ds-amd64 created
    6. daemonset.extensions/kube-flannel-ds-arm64 created
    7. daemonset.extensions/kube-flannel-ds-arm created
    8. daemonset.extensions/kube-flannel-ds-ppc64le created
    9. daemonset.extensions/kube-flannel-ds-s390x created

    查看namespace为 kube-flannel的pod的运行状态,如果都是 Running状态,则flannel网络就安装成功,如下图:

    kubectl get pods --all-namespaces

    或者  kubectl get pods -n kube-flannel 查看kube-flannel命名空间的pod,如下图:

    kubectl get pods -n kube-flannel

    2)添加node到集群 

    将master的/etc/kubernetes/admin.conf拷贝到node上 (拷贝完成需要到node节点进行检查)

    scp -r -P22 /etc/kubernetes/admin.conf  zengyanhui@192.168.0.106:/etc/kubernetes/

    集群初始化时打印出来的命令,在所有node节点上输入命令:

    1. kubeadm join 192.168.0.107:6443 --token 5eyukl.0wjrcu9c9tvg5273 \
    2. --discovery-token-ca-cert-hash sha256:c6eb9ffcdbf458c9d40df9d8b0258a254db16da64f8feb9dc1a947165729e3fb

    如果执行 kubectl get nodes 报The connection to the server localhost:8080 was refused - did you specify the right host or port 则在在master和node都执行以下命令:

    1. echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile
    2. source /etc/profile
    kubectl get nodes

    7、注意事项

    如果在kubeadm init的时候报错 ,则 清理上次执行产生的数据

    kubeadm reset 

  • 相关阅读:
    Spring cloud—Netflix
    基于java+ssm幼儿园教学网站管理系统vue-计算机毕业设计
    常用 的 Vue3 新增方法及用法
    SpringBoot 02 自动装配原理和启动类
    流式结构化数据计算语言的进化与新选择
    Spring-依赖注入
    asp.net+sqlserver团购网站c#
    多维度聊一聊 k8s 和 openstack
    emqx broker安装
    论文笔记:Large Language Model for Participatory Urban Planning
  • 原文地址:https://blog.csdn.net/yh_zeng2/article/details/139069355