• kubernetes-v1.20.4 二进制部署-kubelet、kube-proxy


    一、部署kubelet组件

              获取最新更新以及文章用到的软件包,请移步点击查看更新

      1、创建安装目录

    mkdir -p /opt/kubernetes/{bin,cfg,ssl,logs}   

      2、拷贝二进制文件

    cd kubernetes/server/bin
    cp kubelet kube-proxy /opt/kubernetes/bin   #本地拷贝
    scp kubelet kube-proxy root@192.168.112.111:/opt/kubernetes/bin
    scp kubelet kube-proxy root@192.168.112.112:/opt/kubernetes/bin
    scp kubelet kube-proxy root@192.168.112.113:/opt/kubernetes/bin
    scp kubelet kube-proxy root@192.168.112.114:/opt/kubernetes/bin
    scp kubelet kube-proxy root@192.168.112.115:/opt/kubernetes/bin

      3、创建配置文件

    cat > /opt/kubernetes/cfg/kubelet.conf << EOF
    KUBELET_OPTS="--logtostderr=false \
    --v=4 \
    --log-dir=/opt/kubernetes/logs \
    --hostname-override=k8s-master2 \
    --network-plugin=cni \
    --kubeconfig=/opt/kubernetes/cfg/kubelet.kubeconfig \
    --bootstrap-kubeconfig=/opt/kubernetes/cfg/bootstrap.kubeconfig \
    --config=/opt/kubernetes/cfg/kubelet-config.yml \
    --cert-dir=/opt/kubernetes/ssl \
    --pod-infra-container-image=lizhenliang/pause-amd64:3.0"
    EOF

      –hostname-override:显示名称,集群中唯一
      –network-plugin:启用CNI
      –kubeconfig:空路径,会自动生成,后面用于连接apiserver
      –bootstrap-kubeconfig:首次启动向apiserver申请证书
      –config:配置参数文件
      –cert-dir:kubelet证书生成目录
      –pod-infra-container-image:管理Pod网络容器的镜像

      4、配置参数文件

    cat > /opt/kubernetes/cfg/kubelet-config.yml << EOF
    kind: KubeletConfiguration
    apiVersion: kubelet.config.k8s.io/v1beta1
    address: 0.0.0.0
    port: 10250
    readOnlyPort: 10255
    cgroupDriver: cgroupfs
    clusterDNS:
    - 10.0.0.2
    clusterDomain: cluster.local 
    failSwapOn: false
    authentication:
      anonymous:
        enabled: false
      webhook:
        cacheTTL: 2m0s
        enabled: true
      x509:
        clientCAFile: /opt/kubernetes/ssl/ca.pem 
    authorization:
      mode: Webhook
      webhook:
        cacheAuthorizedTTL: 5m0s
        cacheUnauthorizedTTL: 30s
    evictionHard:
      imagefs.available: 15%
      memory.available: 100Mi
      nodefs.available: 10%
      nodefs.inodesFree: 5%
    maxOpenFiles: 1000000
    maxPods: 110
    EOF

      5、生成bootstrap.kubeconfig文件

    KUBE_APISERVER="https://192.168.112.120:7443" # apiserver IP:PORT
    TOKEN="c47ffb939f5ca36231d9e3121a252940" # 与token.csv里保持一致
    
    # 生成 kubelet bootstrap kubeconfig 配置文件
    kubectl config set-cluster kubernetes 
      --certificate-authority=/opt/kubernetes/ssl/ca.pem 
      --embed-certs=true 
      --server=${KUBE_APISERVER} 
      --kubeconfig=bootstrap.kubeconfig
    kubectl config set-credentials "kubelet-bootstrap" 
      --token=${TOKEN} 
      --kubeconfig=bootstrap.kubeconfig
    kubectl config set-context default 
      --cluster=kubernetes 
      --user="kubelet-bootstrap" 
      --kubeconfig=bootstrap.kubeconfig
    kubectl config use-context default --kubeconfig=bootstrap.kubeconfig

      拷贝到配置文件路径:

    cp bootstrap.kubeconfig /opt/kubernetes/cfg

      6、systemd管理kubelet

    cat > /usr/lib/systemd/system/kubelet.service << EOF
    [Unit]
    Description=Kubernetes Kubelet
    After=docker.service
    [Service]
    EnvironmentFile=/opt/kubernetes/cfg/kubelet.conf
    ExecStart=/opt/kubernetes/bin/kubelet $KUBELET_OPTS
    Restart=on-failure
    LimitNOFILE=65536
    [Install]
    WantedBy=multi-user.target
    EOF

      7、启动并设置开机启动

    systemctl daemon-reload
    systemctl start kubelet
    systemctl enable kubelet

      8、批准kubelet证书申请并加入集群

    # 查看kubelet证书请求
    kubectl get csr
    NAME                                                   AGE    SIGNERNAME                                    REQUESTOR           CONDITION
    node-csr-uCEGPOIiDdlLODKts8J658HrFq9CZ--K6M4G7bjhk8A   6m3s   kubernetes.io/kube-apiserver-client-kubelet   kubelet-bootstrap   Pending
    
    # 批准申请
    kubectl certificate approve node-csr-uCEGPOIiDdlLODKts8J658HrFq9CZ--K6M4G7bjhk8A
    
    # 查看节点
    kubectl get nodes
    NAME         STATUS     ROLES    AGE   VERSION
    k8s-master   NotReady   <none>   7s    v1.20.4

      注:由于网络插件还没有部署,节点会没有准备就绪 NotReady

    二、部署kube-proxy组件

      1、创建配置文件

    cat > /opt/kubernetes/cfg/kube-proxy.conf << EOF
    KUBE_PROXY_OPTS="--logtostderr=false \
    --v=2 \
    --log-dir=/opt/kubernetes/logs \
    --config=/opt/kubernetes/cfg/kube-proxy-config.yml"
    EOF

      2、配置参数文件

    cat > /opt/kubernetes/cfg/kube-proxy-config.yml << EOF
    kind: KubeProxyConfiguration
    apiVersion: kubeproxy.config.k8s.io/v1alpha1
    bindAddress: 0.0.0.0
    metricsBindAddress: 0.0.0.0:10249
    clientConnection:
      kubeconfig: /opt/kubernetes/cfg/kube-proxy.kubeconfig
    hostnameOverride: k8s-master
    clusterCIDR: 10.0.0.0/24
    EOF

      3、生成kube-proxy.kubeconfig文件

    cd ~/TLS/k8s
    
    # 创建证书请求文件
    cat > kube-proxy-csr.json << EOF
    {
      "CN": "system:kube-proxy",
      "hosts": [],
      "key": {
        "algo": "rsa",
        "size": 2048
      },
      "names": [
        {
          "C": "CN",
          "L": "BeiJing",
          "ST": "BeiJing",
          "O": "k8s",
          "OU": "System"
        }
      ]
    }
    EOF
    
    cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes kube-proxy-csr.json | cfssljson -bare kube-proxy        生成证书
    
    ls kube-proxy*pem
    kube-proxy-key.pem  kube-proxy.pem

      4、生成kubeconfig文件

    KUBE_APISERVER="https://192.168.112.120:7443"
    
    kubectl config set-cluster kubernetes 
      --certificate-authority=/opt/kubernetes/ssl/ca.pem 
      --embed-certs=true 
      --server=${KUBE_APISERVER} 
      --kubeconfig=kube-proxy.kubeconfig
    kubectl config set-credentials kube-proxy 
      --client-certificate=./kube-proxy.pem 
      --client-key=./kube-proxy-key.pem 
      --embed-certs=true 
      --kubeconfig=kube-proxy.kubeconfig
    kubectl config set-context default 
      --cluster=kubernetes 
      --user=kube-proxy 
      --kubeconfig=kube-proxy.kubeconfig
    kubectl config use-context default --kubeconfig=kube-proxy.kubeconfig

      拷贝到配置文件指定路径:

    cp kube-proxy.kubeconfig /opt/kubernetes/cfg/

      5、systemd管理kube-proxy

    cat > /usr/lib/systemd/system/kube-proxy.service << EOF
    [Unit]
    Description=Kubernetes Proxy
    After=network.target
    [Service]
    EnvironmentFile=/opt/kubernetes/cfg/kube-proxy.conf
    ExecStart=/opt/kubernetes/bin/kube-proxy $KUBE_PROXY_OPTS
    Restart=on-failure
    LimitNOFILE=65536
    [Install]
    WantedBy=multi-user.target
    EOF

      6、启动并设置开机启动

    systemctl daemon-reload
    systemctl start kube-proxy
    systemctl enable kube-proxy

       7、查看集群

    kubectl get nodes
      NAME            STATUS   ROLES    AGE    VERSION
      k8s-master1    NotReady  <none>   101s   v1.20.4
     
      kubectl label node  k8s-master1 node-role.kubernetes.io/master=
      kubectl label node  k8s-master1 node-role.kubernetes.io/node=
  • 相关阅读:
    诸侯安置
    可可西里
    直线交点
    切割多边形
    ACM挑战程序设计竞赛1.1抽签
    朝鲜战争:轰炸大小和岛
    星际争霸II 战斗问题
    乒乓球
    瑞士轮
    NOIP 2010 普及组解题报告
  • 原文地址:https://www.cnblogs.com/aqicheng/p/14632564.html
Copyright © 2020-2023  润新知