二进制部署 kube-controller-manager

116 阅读3分钟

下载文件

下载地址:kubernetes.io/zh-cn/relea…
将二进制文件复制到 /usr/local/bin 目录下

sudo cp kube-controller-manager /usr/local/bin/

赋予执行权限

sudo chmod +x /usr/local/bin/kube-controller-manager

签发 kube-controller-manager 证书

cfssl 证书配置新增 kube-controller-manager 配置

cat config.json 
{
    "signing": {
        "default": {
            "expiry": "8760h"
        },
        "profiles": {
            "kubernetes": {
                "usages": [
                    "signing",
                    "digital signature",
                    "key encipherment",
                    "cert sign",
                    "crl sign"
                ],
                "expiry": "43800h",
                "ca_constraint": {
                    "is_ca": true,
                    "max_path_len": 0
                }
            },
            "etcd": {
                "usages": [
                    "digital signature",
                    "key encipherment",
                    "server auth",
                    "client auth"
                ],
                "expiry": "8760h"
            },
            "kube-apiserver": {
                "usages": [
                    "digital signature",
                    "key encipherment",
                    "server auth"
                ],
                "expiry": "8760h"
            },
            "kube-controller-manager": {
                "usages": [
                    "digital signature",
                    "key encipherment",
                    "server auth",
                    "client auth"
                ],
                "expiry": "8760h"
            }
        }
    }
}

创建证书请求文件 kube-controller-manager-csr.json

cat kube-controller-manager-csr.json 
{
    "CN": "system:kube-controller-manager",
    "key": {
        "algo": "rsa",
        "size": 2048
    },
    "names": [
        {
            "C": "CN",
            "ST": "Guangdong",
            "L": "Guangzhou",
            "O": "system:kube-controller-manager",
            "OU": "Technology"
        }
    ]
}

签发证书

cfssl gencert -ca=kubernetes-ca.pem -ca-key=kubernetes-ca-key.pem -config=config.json -profile=kube-controller-manager kube-controller-manager-csr.json | cfssljson -bare kube-controller-manager
2024/11/27 23:35:12 [INFO] generate received request
2024/11/27 23:35:12 [INFO] received CSR
2024/11/27 23:35:12 [INFO] generating key: rsa-2048
2024/11/27 23:35:12 [INFO] encoded CSR
2024/11/27 23:35:12 [INFO] signed certificate with serial number 204110259641379798009299667947650411027522667012
2024/11/27 23:35:12 [WARNING] This certificate lacks a "hosts" field. This makes it unsuitable for
websites. For more information see the Baseline Requirements for the Issuance and Management
of Publicly-Trusted Certificates, v.1.1.6, from the CA/Browser Forum (https://cabforum.org);
specifically, section 10.2.3 ("Information Requirements").
ls kube-controller-manager*
kube-controller-manager.csr  kube-controller-manager-csr.json  kube-controller-manager-key.pem  kube-controller-manager.pem

安装 kubectl

下载地址:kubernetes.io/zh-cn/relea…
将二进制文件复制到 /usr/local/bin 目录下

sudo cp kubectl /usr/local/bin/

赋予执行权限

sudo chmod +x /usr/local/bin/kubectl

生成 kubeconfig 文件

创建 kubeconfig 文件

kubectl config set-cluster kubernetes --certificate-authority=/home/we8/k8s/cfssl/kubernetes-chain.pem --embed-certs=true  --server=https://10.0.30.47:6443 --kubeconfig=/home/we8/k8s/kubeconfig/kube-controller-manager
Cluster "kubernetes" set.

设置凭证

kubectl config set-credentials system:kube-controller-manager --client-certificate=/home/we8/k8s/cfssl/kube-controller-manager.pem --client-key=/home/we8/k8s/cfssl/kube-controller-manager-key.pem --embed-certs=true  --kubeconfig=/home/we8/k8s/kubeconfig/kube-controller-manager
User "system:kube-controller-manager" set.

设置上下文

kubectl config set-context system:kube-controller-manager@kubernetes --cluster=kubernetes --user=system:kube-controller-manager --kubeconfig=/home/we8/k8s/kubeconfig/kube-controller-manager
Context "system:kube-controller-manager@kubernetes" created.

切换上下文

kubectl config use-context system:kube-controller-manager@kubernetes --kubeconfig=/home/we8/k8s/kubeconfig/kube-controller-manager
Switched to context "system:kube-controller-manager@kubernetes"

启动 kube-controller-manager

创建 systemd 配置文件

cat /etc/systemd/system/kube-controller-manager.service
[Unit]
Description=Kubernetes Controller Manager
Documentation=https://github.com/kubernetes/kubernetes
After=network.target
[Service]
ExecStart=/usr/local/bin/kube-controller-manager \
--allocate-node-cidrs=true \
--authentication-kubeconfig=/home/we8/k8s/kubeconfig/kube-controller-manager \
--authorization-kubeconfig=/home/we8/k8s/kubeconfig/kube-controller-manager \
--bind-address=0.0.0.0 \
--client-ca-file=/home/we8/k8s/cfssl/kubernetes-chain.pem \
--cluster-cidr=10.244.0.0/16 \
--cluster-name=kubernetes \
--cluster-signing-cert-file=/home/we8/k8s/cfssl/kube-controller-manager.pem \
--cluster-signing-key-file=/home/we8/k8s/cfssl/kube-controller-manager-key.pem \
--kubeconfig=/home/we8/k8s/kubeconfig/kube-controller-manager \
--leader-elect=true \
--node-cidr-mask-size=24 \
--root-ca-file=/home/we8/k8s/cfssl/kubernetes-chain.pem \
--service-account-private-key-file=/home/we8/k8s/cfssl/root-ca-key.pem \
--service-cluster-ip-range=10.96.0.0/12 \
--requestheader-client-ca-file=/home/we8/k8s/cfssl/kubernetes-chain.pem \
--v=2
Restart=on-failure
RestartSec=5
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable kube-controller-manager.service
sudo systemctl start kube-controller-manager.service
sudo systemctl status kube-controller-manager.service

虽然 kube-controller-manager 查看 status 启动成功了,注意要看看 systemd 日志是否有报错,对报错进行排查解决