suse 12 二进制部署 Kubernetets 1.19.7 - 第07章 - 部署kube-controller-manager组件

简介: suse 12 二进制部署 Kubernetets 1.19.7 - 第07章 - 部署kube-controller-manager组件
1.7、部署kube-controller-manager
  • 所有master节点需要kube-controller-manager
1.7.0、创建kube-controller-manager请求证书
k8s-01:~ # cd /opt/k8s/ssl/
k8s-01:/opt/k8s/ssl # cat > kube-controller-manager-csr.json <<EOF
{
    "CN": "system:kube-controller-manager",
    "key": {
        "algo": "rsa",
        "size": 2048
    },
    "hosts": [
      "127.0.0.1",
      "192.168.72.39",
      "192.168.72.40",
      "192.168.72.41"
    ],
    "names": [
      {
        "C": "CN",
        "ST": "ShangHai",
        "L": "ShangHai",
        "O": "system:kube-controller-manager",
        "OU": "bandian"
      }
    ]
}
EOF

1.7.1、生成kube-controller-manager证书和私钥

k8s-01:/opt/k8s/ssl # cfssl gencert -ca=/opt/k8s/ssl/ca.pem \
-ca-key=/opt/k8s/ssl/ca-key.pem \
-config=/opt/k8s/ssl/ca-config.json \
-profile=kubernetes kube-controller-manager-csr.json | cfssljson -bare kube-controller-manager

1.7.2、创建kube-controller-manager的kubeconfig文件

k8s-01:~ # cd /opt/k8s/ssl/
k8s-01:/opt/k8s/ssl # source /opt/k8s/bin/k8s-env.sh
"设置集群参数"
k8s-01:/opt/k8s/ssl # kubectl config set-cluster kubernetes \
--certificate-authority=/opt/k8s/ssl/ca.pem \
--embed-certs=true \
--server=${KUBE_APISERVER} \
--kubeconfig=kube-controller-manager.kubeconfig
"设置客户端认证参数"
k8s-01:/opt/k8s/ssl # kubectl config set-credentials system:kube-controller-manager \
--client-certificate=kube-controller-manager.pem \
--client-key=kube-controller-manager-key.pem \
--embed-certs=true \
--kubeconfig=kube-controller-manager.kubeconfig
"设置上下文参数"
k8s-01:/opt/k8s/ssl # kubectl config set-context system:kube-controller-manager \
--cluster=kubernetes \
--user=system:kube-controller-manager \
--kubeconfig=kube-controller-manager.kubeconfig
"设置默认上下文"
k8s-01:/opt/k8s/ssl # kubectl config use-context system:kube-controller-manager --kubeconfig=kube-controller-manager.kubeconfig

1.7.3、配置kube-controller-manager为systemctl启动

k8s-01:~ # cd /opt/k8s/conf/
k8s-01:/opt/k8s/conf # source /opt/k8s/bin/k8s-env.sh
k8s-01:/opt/k8s/conf # cat > kube-controller-manager.service <<EOF
[Unit]
Description=Kubernetes Controller Manager
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
[Service]
WorkingDirectory=${K8S_DIR}/kube-controller-manager
ExecStart=/opt/k8s/bin/kube-controller-manager \\
  --v=2 \\
  --cluster-name=kubernetes \\
  --profiling \\
  --logtostderr=true \\
  --leader-elect=true \\
  --bind-address=0.0.0.0 \\
  --allocate-node-cidrs=true \\
  --cluster-cidr=${CLUSTER_CIDR} \\
  --service-cluster-ip-range=${SERVICE_CIDR} \\
  --cluster-signing-cert-file=/etc/kubernetes/cert/ca.pem \\
  --cluster-signing-key-file=/etc/kubernetes/cert/ca-key.pem \\
  --root-ca-file=/etc/kubernetes/cert/ca.pem \\
  --service-account-private-key-file=/etc/kubernetes/cert/ca-key.pem \\
  --experimental-cluster-signing-duration=87600h0m0s \\
  --kubeconfig=/etc/kubernetes/cert/kube-controller-manager.kubeconfig \\
  --requestheader-allowed-names \\
  --requestheader-client-ca-file=/etc/kubernetes/cert/ca.pem \\
  --requestheader-extra-headers-prefix="X-Remote-Extra-" \\
  --requestheader-group-headers=X-Remote-Group \\
  --requestheader-username-headers=X-Remote-User \\
  --authorization-kubeconfig=/etc/kubernetes/cert/kube-controller-manager.kubeconfig \\
  --controllers=*,bootstrapsigner,tokencleaner \\
  --use-service-account-credentials=true
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
  • --controllers=*,bootstrapsigner,tokencleaner 启用的控制器列表,tokencleaner 用于自动清理过期的 Bootstrap token
  • --profiling 开启profilling,通过web接口host:port/debug/pprof/分析性能
  • --experimental-cluster-signing-duration 指定 TLS Bootstrap 证书的有效期
  • --root-ca-file 放置到容器 ServiceAccount 中的 CA 证书,用来对 kube-apiserver 的证书进行校验
  • --service-cluster-ip-range 指定 Service Cluster IP 网段,必须和 kube-apiserver 中的同名参数一致
  • --leader-elect=true 集群运行模式,启用选举功能被选为 leader 的节点负责处理工作,其它节点为阻塞状态
1.7.4、分发kube-controller-manager证书和文件到其他节点
#!/usr/bin/env bash
source /opt/k8s/bin/k8s-env.sh
for host in ${MASTER_IPS[@]}
do
    printf "\e[1;34m${host}\e[0m\n"
    scp /opt/k8s/conf/kube-controller-manager.service \
        ${host}:/etc/systemd/system/kube-controller-manager.service
    scp /opt/k8s/ssl/{kube-controller-manager*.pem,kube-controller-manager.kubeconfig} \
        ${host}:/etc/kubernetes/cert/
done

1.7.5、启动kube-controller-manager服务

#!/usr/bin/env bash
source /opt/k8s/bin/k8s-env.sh
for host in ${MASTER_IPS[@]}
do
    printf "\e[1;34m${host}\e[0m\n"
    ssh root@${host} "mkdir -p ${K8S_DIR}/kube-controller-manager"
    ssh root@${host} "systemctl daemon-reload && \
                      systemctl enable kube-controller-manager --now && \
                      systemctl status kube-controller-manager | grep Active"
done

1.7.6、查看kube-controller-manager端口

k8s-01:~ # ss -nltp | grep kube-contro
LISTEN     0      128         :::10252                   :::*                   users:(("kube-controller",pid=65221,fd=7))
LISTEN     0      128         :::10257                   :::*                   users:(("kube-controller",pid=65221,fd=8))

1.7.7、查看当前的leader

k8s-01:~ # kubectl get endpoints kube-controller-manager --namespace=kube-system -o yaml
apiVersion: v1
kind: Endpoints
metadata:
  annotations:
    control-plane.alpha.kubernetes.io/leader: '{"holderIdentity":"k8s-01_d04c6ed1-5048-4fe2-aaee-ed3043b24e6b","leaseDurationSeconds":15,"acquireTime":"2021-02-12T16:52:57Z","renewTime":"2021-02-12T16:53:07Z","leaderTransitions":0}'
  creationTimestamp: "2021-02-12T16:52:57Z"
  managedFields:
  - apiVersion: v1
    fieldsType: FieldsV1
    fieldsV1:
      f:metadata:
        f:annotations:
          .: {}
          f:control-plane.alpha.kubernetes.io/leader: {}
    manager: kube-controller-manager
    operation: Update
    time: "2021-02-12T16:52:57Z"
  name: kube-controller-manager
  namespace: kube-system
  resourceVersion: "355"
  selfLink: /api/v1/namespaces/kube-system/endpoints/kube-controller-manager
  uid: fc7f643d-a71f-4a58-b66c-2edcacbda693


相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务&nbsp;ACK 容器服务&nbsp;Kubernetes&nbsp;版(简称&nbsp;ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
目录
相关文章
|
6月前
|
Linux Perl
suse 12 二进制部署 Kubernetets 1.19.7 - 第12章 - 部署dashboard插件
suse 12 二进制部署 Kubernetets 1.19.7 - 第12章 - 部署dashboard插件
24 0
|
6月前
|
Kubernetes 应用服务中间件 Linux
suse 12 二进制部署 Kubernetets 1.19.7 - 第05章 - 部署kube-nginx
suse 12 二进制部署 Kubernetets 1.19.7 - 第05章 - 部署kube-nginx
32 0
|
Kubernetes Cloud Native 网络协议
云原生|kubernetes|kubernetes-1.18 二进制安装教程单master(其它的版本也基本一样)(三)
云原生|kubernetes|kubernetes-1.18 二进制安装教程单master(其它的版本也基本一样)
255 0
云原生|kubernetes|kubernetes-1.18 二进制安装教程单master(其它的版本也基本一样)(三)
|
Kubernetes API Perl
Kubernetes核心原理(二)之Controller Manager
1. Controller Manager简介 Controller Manager作为集群内部的管理控制中心,负责集群内的Node、Pod副本、服务端点(Endpoint)、命名空间(Namespace)、服务账号(ServiceAccount)、资源定额(ResourceQuota)的管理,当某个Node意外宕机时,Controller Manager会及时发现并执行自动化修复流程,确保集群始终处于预期的工作状态。
5054 0
|
6天前
|
存储 Kubernetes Cloud Native
云原生|kubernetes|centos7下离线化部署kubesphere-3.3.2---基于kubernetes-1.22.16(从网络插件开始记录)
云原生|kubernetes|centos7下离线化部署kubesphere-3.3.2---基于kubernetes-1.22.16(从网络插件开始记录)
100 0
|
6天前
|
Kubernetes Cloud Native Linux
云原生|kubernetes |kubelet服务加入系统守护进程supervisor(centos7系统下演示通过)
云原生|kubernetes |kubelet服务加入系统守护进程supervisor(centos7系统下演示通过)
64 0
|
6天前
|
Kubernetes Cloud Native Linux
云原生|kubernetes|kubernetes-1.18 二进制安装教程单master(其它的版本也基本一样)(上)
云原生|kubernetes|kubernetes-1.18 二进制安装教程单master(其它的版本也基本一样)
41 0
|
6天前
|
Kubernetes Cloud Native 网络协议
云原生|kubernetes|kubernetes-1.18 二进制安装教程单master(其它的版本也基本一样)(下)
云原生|kubernetes|kubernetes-1.18 二进制安装教程单master(其它的版本也基本一样)
39 0
|
6月前
|
存储 Kubernetes 应用服务中间件
使用CoreOS来部署一个Kubernetes集群,包括必要的步骤和关键概念
使用kubeadm join命令将其他CoreOS节点加入Kubernetes集群。在每个节点上运行以下命令,其中<控制平面节点IP>是Kubernetes控制平面节点的IP地址,<令牌>是在初始化控制平面时生成的令牌。
124 0
|
6月前
|
负载均衡 Linux
suse 12 二进制部署 Kubernetets 1.19.7 - 第10章 - 部署kube-proxy组件
suse 12 二进制部署 Kubernetets 1.19.7 - 第10章 - 部署kube-proxy组件
27 0