zoukankan      html  css  js  c++  java
  • Centos使用kubeadm安装kubernetes 1.17.2 集群

    安装环境:centos7.7+kubernetes 1.17.2+calico 3.12.0

    1、虚拟机新建三个节点,并修改主机名和设置固定ip

    #设置主机名(三台机器操作一样,只是对应IP不一样)
    hostnamectl set-hostname k8s-master
    echo "192.168.2.130   $(hostname)" >> /etc/hosts
    
    #设置固定IP
    vi /etc/sysconfig/network-scripts/ifcfg-ens33
    #更改后的内容:    
    TYPE=Ethernet
    PROXY_METHOD=none
    BROWSER_ONLY=no
    BOOTPROTO=static  #dhcp改为static 
    DEFROUTE=yes
    IPV4_FAILURE_FATAL=no
    IPV6INIT=yes
    IPV6_AUTOCONF=yes
    IPV6_DEFROUTE=yes
    IPV6_FAILURE_FATAL=no
    IPV6_ADDR_GEN_MODE=stable-privacy
    DEVICE=eno1 
    NAME=eno1 
    UUID=3088fb60-91da-4256-9f37-527f51a64e9a
    NM_CONTROLLED=no      #表示该接口将通过该配置文件进行设置,而不是通过网络管理器进行管理
    ONBOOT=yes  #开机启动
    IPADDR=192.168.2.130   #本机地址
    NETMASK=255.255.255.0  #子网掩码
    GATEWAY=192.168.2.2    #默认网关
    #修改network
    vi /etc/sysconfig/network

      NETWORKING=yes
      GATEWAY=192.168.2.2
      DNS1=192.168.2.2

      #重启服务

      service network restart

    2、安装docker及kubelet

    # 在 master 节点和 worker 节点都要执行
    # 最后一个参数 1.17.2 用于指定 kubenetes 版本,支持所有 1.17.x 版本的安装
    
    curl -sSL https://kuboard.cn/install-script/v1.17.x/install_kubelet.sh | sh -s 1.17.2
    #为使镜像能正常下载,设置docker加速器(该步骤很重要)
    vi /etc/docker/daemon.json
    {"registry-mirrors": ["https://registry.cn-hangzhou.aliyuncs.com","https://quay-mirror.qiniu.com/","https://registry.docker-cn.com","https://registry.docker-cn.com","http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn"]}

    3、初始化Master

    # 只在 master 节点执行
    # 替换 x.x.x.x 为 master 节点的内网IP
    # export 命令只在当前 shell 会话中有效,开启新的 shell 窗口后,如果要继续安装过程,请重新执行此处的 export 命令
    export MASTER_IP=192.168.2.130
    # 替换 apiserver.demo 为 您想要的 dnsName
    export APISERVER_NAME=apiserver.demo
    # Kubernetes 容器组所在的网段,该网段安装完成后,由 kubernetes 创建,事先并不存在于您的物理网络中
    export POD_SUBNET=192.168.0.0/16
    echo "${MASTER_IP}    ${APISERVER_NAME}" >> /etc/hosts
    if [ ${#POD_SUBNET} -eq 0 ] || [ ${#APISERVER_NAME} -eq 0 ]; then
      echo -e "33[31;1m请确保您已经设置了环境变量 POD_SUBNET 和 APISERVER_NAME 33[0m"
      echo 当前POD_SUBNET=$POD_SUBNET
      echo 当前APISERVER_NAME=$APISERVER_NAME
      exit 1
    fi
    
    
    # 查看完整配置选项 https://godoc.org/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2
    rm -f ./kubeadm-config.yaml
    cat <<EOF > ./kubeadm-config.yaml
    apiVersion: kubeadm.k8s.io/v1beta2
    kind: ClusterConfiguration
    kubernetesVersion: v${1}
    imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
    controlPlaneEndpoint: "${APISERVER_NAME}:6443"
    networking:
      serviceSubnet: "10.96.0.0/16"
      podSubnet: "${POD_SUBNET}"
      dnsDomain: "cluster.local"
    EOF
    
    # kubeadm init
    # 根据您服务器网速的情况,您需要等候 3 - 10 分钟
    kubeadm init --config=kubeadm-config.yaml --upload-certs
    
    # 配置 kubectl
    rm -rf /root/.kube/
    mkdir /root/.kube/
    cp -i /etc/kubernetes/admin.conf /root/.kube/config

    4、安装Calico

    去官网找下载链接https://docs.projectcalico.org/getting-started/kubernetes/quickstart

    wget https://docs.projectcalico.org/manifests/calico.yaml
    sed -i "s#192.168.0.0/16#${POD_SUBNET}#" calico.yaml
    kubectl apply -f calico.yaml

    此步骤中,如果出现calico-node的PullImageBackOff错误,其原因大多是镜像下载失败。

    解决方法:

    可以先将镜像下载下来,使用命令:cat calico.yaml |grep image 列出需要下载的镜像

    image: calico/cni:v3.12.0
    image: calico/cni:v3.12.0
    image: calico/pod2daemon-flexvol:v3.12.0
    image: calico/node:v3.12.0
    image: calico/kube-controllers:v3.12.0
    # 逐条执行下面命令
    docker pull quay-mirror.qiniu.com/calico/cni:v3.12.0
    docker pull quay-mirror.qiniu.com/calico/pod2daemon-flexvol:v3.12.0
    docker pull quay-mirror.qiniu.com/calico/node:v3.12.0
    docker pull quay-mirror.qiniu.com/calico/kube-controllers:v3.12.0

    下载完成后,执行 kubectl apply -f calico.yaml

    # 只在 master 节点执行
    
    # 执行如下命令,等待 3-10 分钟,直到所有的容器组处于 Running 状态
    watch kubectl get pod -n kube-system -o wide
    
    # 查看 master 节点初始化结果
    kubectl get nodes -o wide

    5、初始化worker节点

    master节点上执行命令:kubeadm token create --print-join-command 

    可获取kubeadm join 命令及参数,如下所示

    # kubeadm token create 命令的输出
    kubeadm join apiserver.demo:6443 --token mpfjma.4vjjg8flqihor4vt     --discovery-token-ca-cert-hash sha256:6f7a8e40a810323672de5eee6f4d19aa2dbdb38411845a1bf5dd63485c43d303

    所有worker节点执行下面命令

    # 只在 worker 节点执行
    # 替换 x.x.x.x 为 master 节点的内网 IP
    export MASTER_IP=x.x.x.x(192.168.2.130# 替换 apiserver.demo 为初始化 master 节点时所使用的 APISERVER_NAME
    export APISERVER_NAME=apiserver.demo
    echo "${MASTER_IP}    ${APISERVER_NAME}" >> /etc/hosts
    
    # 替换为 master 节点上 kubeadm token create 命令的输出
    kubeadm join apiserver.demo:6443 --token mpfjma.4vjjg8flqihor4vt     --discovery-token-ca-cert-hash sha256:6f7a8e40a810323672de5eee6f4d19aa2dbdb38411845a1bf5dd63485c43d303

    6、检查初始化结果

    在master节点上执行命令: kubectl get nodes -o wide 

    [root@k8s-master ~]# kubectl get nodes
    NAME         STATUS   ROLES    AGE     VERSION
    k8s-master   Ready    master   6h45m   v1.17.2
    k8s-node1    Ready    <none>   26m     v1.17.2
    k8s-node2    Ready    <none>   62s     v1.17.2

    至此,集群安装成功。希望对您有帮助

  • 相关阅读:
    python如何使用Matplotlib的作图
    python如何使用Matplotlib的作图
    Python下载M3U8小鹅通回放视频代码
    Python下载M3U8小鹅通回放视频代码
    python自动化之JS处理滚动条
    python自动化之JS处理滚动条
    数据分析项目-数据分析岗位近况分析
    数据分析项目-数据分析岗位近况分析
    Python安装模块常用镜像源
    使用ABSL(ABAP Script Language)完成SAP Cloud for Customer里Customer Quote以及行项目的增删改查
  • 原文地址:https://www.cnblogs.com/Chaser-Eagle/p/12267107.html
Copyright © 2011-2022 走看看