• kubeadm创建kubernetes集群


    kubeadm创建集群

    我们使用“公有云-青云”提供的服务器作为今天的演示操作。准备三台机器,一个主控节点,两个工作节点。

    alt

    前提条件

    Kubernetes集群的安装需要依赖于容器化的运行环境,所以我们首先要在每一个节点上安装docker。方法参考我之前的文章。

    Docker安装,环境配置说明,阿里云镜像加速配置

    1、基础环境

    所有机器执行以下操作。

    1. 各个机器设置自己的域名
    hostnamectl set-hostname xxxx
    • 1
    1. 禁用SELinux
    sudo setenforce 0
    sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
    • 1
    1. 关闭swap分区
    swapoff -a  
    sed -ri 's/.*swap.*/#&/' /etc/fstab
    • 1
    1. 允许 iptables 检查桥接流量
    cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
    br_netfilter
    EOF

    cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    EOF
    • 1
    sudo sysctl --system
    • 1

    2、安装kubelet、kubeadm、kubectl

    # 配置镜像仓库地址
    cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
    [kubernetes]
    name=Kubernetes
    baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
    enabled=1
    gpgcheck=0
    repo_gpgcheck=0
    gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
       http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
    exclude=kubelet kubeadm kubectl
    EOF
    • 1
    # 下载指定版本
    sudo yum install -y kubelet-1.20.9 kubeadm-1.20.9 kubectl-1.20.9 --disableexcludes=kubernetes
    • 1
    # 立即/开机自启动
    sudo systemctl enable --now kubelet
    • 1

    完成了这一步,kubelet 现在每隔几秒就会重启,因为它陷入了一个等待 kubeadm 指令的死循环

    3. 使用kubeadm引导集群

    下载各个机器需要的镜像

    # 编写脚本,指定每个组件需要的版本等内容
    sudo tee ./images.sh <<-'EOF'
    #!/bin/bash
    images=(
    kube-apiserver:v1.20.9
    kube-proxy:v1.20.9
    kube-controller-manager:v1.20.9
    kube-scheduler:v1.20.9
    coredns:1.7.0
    etcd:3.4.13-0
    pause:3.2
    )
    for imageName in ${images[@]} ; do
    docker pull registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/$imageName
    done
    EOF
    • 1
    # 添加可执行权限并执行脚本进行下载。
    chmod +x ./images.sh && ./images.sh
    • 1

    通过这个步骤可以将创建集群所需的组件下载下来。工作节点只需要下载kube-proxy即可,全部下载也没有关系。

    4. 初始化主节点

    #所有机器添加master域名映射
    echo "172.31.0.2  cluster-endpoint" >> /etc/hosts
    • 1

    这一步的目的是告诉每一个节点我将哪一个节点作为主节点(集群入口)。这里需要修改为自己的ip,我这里使用公有云的内网ip。

    #主节点初始化,只在主节点运行此命令
    kubeadm init \
    --apiserver-advertise-address=172.31.0.2 \
    --control-plane-endpoint=cluster-endpoint \
    --image-repository registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images \
    --kubernetes-version v1.20.9 \
    --service-cidr=10.96.0.0/16 \
    --pod-network-cidr=192.168.0.0/16
    • 1

    这里其实是定义了我将来在创建service和pod的时候所使用的网络段。需要注意apiserver-advertise-address为自己的主节点ip,并且要保证所有网络范围不重叠。pod-network-cidr如果有修改后面我们还需要修改网络组件的网络范围。

    出现以下内容说明集群master节点初始化成功。

    Your Kubernetes control-plane has initialized successfully!

    To start using your cluster, you need to run the following as a regular user:

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

    Alternatively, if you are the root user, you can run:

      export KUBECONFIG=/etc/kubernetes/admin.conf

    You should now deploy a pod network to the cluster.
    Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
      https://kubernetes.io/docs/concepts/cluster-administration/addons/

    You can now join any number of control-plane nodes by copying certificate authorities
    and service account keys on each node and then running the following as root:

      kubeadm join cluster-endpoint:6443 --token xsmvuy.43k3verg00x4s5gs \
        --discovery-token-ca-cert-hash sha256:2d4a06dfe981eb1274831a027690fdfa3a6c89d0968af331d6d26c16f35e7bdb \
        --control-plane 

    Then you can join any number of worker nodes by running the following on each as root:

    kubeadm join cluster-endpoint:6443 --token xsmvuy.43k3verg00x4s5gs \
        --discovery-token-ca-cert-hash sha256:2d4a06dfe981eb1274831a027690fdfa3a6c89d0968af331d6d26c16f35e7bdb
    • 1

    我们按照提示执行相应的命令即可。

    5. 安装网络组件

    # 只在主节点运行此命令
    curl https://docs.projectcalico.org/manifests/calico.yaml -O

    kubectl apply -f calico.yaml
    • 1

    6. 加入worker节点

    # 只在工作节点运行此命令
    kubeadm join cluster-endpoint:6443 --token xsmvuy.43k3verg00x4s5gs \
        --discovery-token-ca-cert-hash sha256:2d4a06dfe981eb1274831a027690fdfa3a6c89d0968af331d6d26c16f35e7bdb
    • 1

    这些内容还是根据提示信息来做。

    补充:上面token有效时间为24小时,过期之后使用以下命令在主节点重新生成。

    kubeadm token create --print-join-command
    • 1

    高可用部署方式,也是在这一步的时候,使用添加主节点的命令即可.

    7. 验证集群

    [root@k8s-master ~]# kubectl get nodes
    NAME          STATUS   ROLES                  AGE   VERSION
    k8s-master    Ready    control-plane,master   89m   v1.20.9
    k8s-worker1   Ready    <none>                 68m   v1.20.9
    k8s-worker2   Ready    <none>                 68m   v1.20.9
    [root@k8s-master ~]#
    • 1

    至此,一个kubernetes集群搭建完毕。

    本文由 mdnice 多平台发布

  • 相关阅读:
    docker-gitlab安装及配置
    linux服务器基本操作
    10. selenium API (二)
    uniapp 在uni.scss 根据@mixin定义方法 、通过@include全局使用
    【Django】执行查询——查询JSONField
    【 失踪人口回归】新·学期
    spring-boot 操作 mongodb 数据库
    地球的某一片红薯地中秋圆辉少许《乡村振兴战略下传统村落文化旅游设计》——2023学生旅行季许少辉八月新书想象和世界一样宽广
    java计算机毕业设计ssm宁夏源沣医药线上销售平台thd3v(附源码、数据库)
    SQL的约束(下)
  • 原文地址:https://blog.csdn.net/weixin_45842494/article/details/125474846