zoukankan      html  css  js  c++  java
  • kubernetes-v1.20.4 二进制部署-kube-controller-manager、kube-scheduler

    一、部署kube-controller-manager组件

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

      1、创建配置文件

    cat > /opt/kubernetes/cfg/kube-controller-manager.conf << EOF
    KUBE_CONTROLLER_MANAGER_OPTS="--logtostderr=false \
    --v=2 \
    --log-dir=/opt/kubernetes/logs \
    --leader-elect=true \
    --master=127.0.0.1:8080 \
    --bind-address=127.0.0.1 \
    --allocate-node-cidrs=true \
    --cluster-cidr=10.244.0.0/16 \
    --service-cluster-ip-range=10.0.0.0/24 \
    --cluster-signing-cert-file=/opt/kubernetes/ssl/ca.pem \
    --cluster-signing-key-file=/opt/kubernetes/ssl/ca-key.pem  \
    --root-ca-file=/opt/kubernetes/ssl/ca.pem \
    --service-account-private-key-file=/opt/kubernetes/ssl/ca-key.pem \
    --experimental-cluster-signing-duration=87600h0m0s"
    EOF

      –master:通过本地非安全本地端口8080连接apiserver。
      –leader-elect:当该组件启动多个时,自动选举(HA)
      –cluster-signing-cert-file/–cluster-signing-key-file:自动为kubelet颁发证书的CA,与apiserver保持一致

           注意:k8s  1.20版本以后的api就没有8080端口了,kube-controller-manager.conf配置文件替换成下面一个。

    KUBE_CONTROLLER_MANAGER_OPTS="--logtostderr=false 
    --v=2 
    --log-dir=/opt/kubernetes/logs 
    --leader-elect=true 
    --kubeconfig=/opt/kubernetes/cfg/kube-controller-manager.kubeconfig 
    --bind-address=127.0.0.1 
    --allocate-node-cidrs=true 
    --cluster-cidr=10.244.0.0/16 
    --service-cluster-ip-range=10.0.0.0/24 
    --cluster-signing-cert-file=/opt/kubernetes/ssl/ca.pem 
    --cluster-signing-key-file=/opt/kubernetes/ssl/ca-key.pem  
    --root-ca-file=/opt/kubernetes/ssl/ca.pem 
    --service-account-private-key-file=/opt/kubernetes/ssl/ca-key.pem 
    --cluster-signing-duration=87600h0m0s"

      2、创建连接文件

    cat > /opt/kubernetes/cfg/kube-controller-manager.kubeconfig << EOF
    apiVersion: v1
    clusters:
    - cluster:
        certificate-authority: /opt/kubernetes/ssl/ca.pem
        server: https://192.168.112.120:7443
      name: kubernetes
    contexts:
    - context:
        cluster: kubernetes
        user: kube-controller-manager
      name: default
    current-context: default
    kind: Config
    preferences: {}
    users:
    - name: kube-controller-manager
      user:
        client-certificate: /opt/kubernetes/ssl/kube-controller-manager.pem
        client-key: /opt/kubernetes/ssl/kube-controller-manager-key.pem
    EOF

      3、签发证书

    cd /root/TLS/k8s/
    cat > kube-controller-manager-csr.json << EOF
    {
      "CN": "system:kube-controller-manager",
      "hosts": [],
      "key": {
        "algo": "rsa",
        "size": 2048
      },
      "names": [
        {
          "C": "CN",
          "L": "BeiJing", 
          "ST": "BeiJing",
          "O": "system:masters",
          "OU": "System"
        }
      ]
    }
    EOF
    cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes kube-controller-manager-csr.json | cfssljson -bare kube-controller-manager 生成证书 scp kube
    -controller-manager.pem kube-controller-manager-key.pem /opt/kubernetes/ssl/ 拷贝证书

      4、systemd管理controller-manager

    cat > /usr/lib/systemd/system/kube-controller-manager.service << EOF
    [Unit]
    Description=Kubernetes Controller Manager
    Documentation=https://github.com/kubernetes/kubernetes
    [Service]
    EnvironmentFile=/opt/kubernetes/cfg/kube-controller-manager.conf
    ExecStart=/opt/kubernetes/bin/kube-controller-manager $KUBE_CONTROLLER_MANAGER_OPTS
    Restart=on-failure
    [Install]
    WantedBy=multi-user.target
    EOF

      5、启动并设置开机启动

    systemctl daemon-reload
    systemctl start kube-controller-manager
    systemctl enable kube-controller-manager

    二、 部署kube-scheduler组件

      1、创建配置文件

    cat > /opt/kubernetes/cfg/kube-scheduler.conf << EOF
    KUBE_SCHEDULER_OPTS="--logtostderr=false \
    --v=2 \
    --log-dir=/opt/kubernetes/logs \
    --leader-elect \
    --master=127.0.0.1:8080 \
    --bind-address=127.0.0.1"
    EOF

      注意:k8s  1.20版本以后的api就没有8080端口了,kube-scheduler.conf 配置文件替换成下面一个。

    vim /opt/kubernetes/cfg/kube-scheduler.conf
    KUBE_SCHEDULER_OPTS="--logtostderr=false 
    --v=2 
    --log-dir=/opt/kubernetes/logs 
    --leader-elect 
    --kubeconfig=/opt/kubernetes/cfg/kube-scheduler.kubeconfig 
    --bind-address=127.0.0.1"

           –master:通过本地非安全本地端口8080连接apiserver。
      –leader-elect:当该组件启动多个时,自动选举(HA)

      2、创建连接文件  

    cat > /opt/kubernetes/cfg/kube-scheduler.kubeconfig << EOF
    apiVersion: v1
    clusters:
    - cluster:
        certificate-authority: /opt/kubernetes/ssl/ca.pem
        server: https://192.168.112.120:7443
      name: kubernetes
    contexts:
    - context:
        cluster: kubernetes
        user: kube-scheduler
      name: default
    current-context: default
    kind: Config
    preferences: {}
    users:
    - name: kube-scheduler
      user:
        client-certificate: /opt/kubernetes/ssl/kube-scheduler.pem
        client-key: /opt/kubernetes/ssl/kube-scheduler-key.pem
    EOF

      3、签发证书

    cd /root/TLS/k8s/
    cat > kube-scheduler-csr.json << EOF { "CN": "system:kube-scheduler", "hosts": [], "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "L": "BeiJing", "ST": "BeiJing", "O": "system:masters", "OU": "System" } ] } EOF

    cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes kube-scheduler-csr.json | cfssljson -bare kube-scheduler 生成证书
    scp kube-scheduler.pem kube-scheduler-key.pem /opt/kubernetes/ssl/ 拷贝证书

      4、systemd管理scheduler

    cat > /usr/lib/systemd/system/kube-scheduler.service << EOF
    [Unit]
    Description=Kubernetes Scheduler
    Documentation=https://github.com/kubernetes/kubernetes
    [Service]
    EnvironmentFile=/opt/kubernetes/cfg/kube-scheduler.conf
    ExecStart=/opt/kubernetes/bin/kube-scheduler $KUBE_SCHEDULER_OPTS
    Restart=on-failure
    [Install]
    WantedBy=multi-user.target
    EOF

      5、启动并设置开机启动

    systemctl daemon-reload
    systemctl start kube-scheduler
    systemctl enable kube-scheduler

      6、查看集群状态

      所有组件都已经启动成功,通过kubectl工具查看当前集群组件状态:

    kubectl get cs
    NAME                 STATUS    MESSAGE             ERROR
    scheduler            Healthy   ok                  
    controller-manager   Healthy   ok                  
    etcd-2               Healthy   {"health":"true"}   
    etcd-1               Healthy   {"health":"true"}   
    etcd-0               Healthy   {"health":"true"}

      如上输出说明Master节点组件运行正常。

  • 相关阅读:
    二维数组转换
    二维数组转换
    二分法原理
    二维数组举例
    二分法原理
    二维数组举例
    二分法原理
    二分法原理
    linux中BIND服务程序安全的加密传输TSIG机制
    linux系统中部署DNS从服务器
  • 原文地址:https://www.cnblogs.com/aqicheng/p/14632492.html
Copyright © 2011-2022 走看看