温馨提示×

centos k8s怎么配置证书

小樊
39
2026-10-09 07:14:14
栏目: 智能运维

在 CentOS 上配置 Kubernetes(k8s)证书,通常分为 两种场景:

  1. kubeadm 部署的 K8s(推荐,自动管理证书)
  2. 二进制/手动部署 K8s(手动生成和管理证书)

下面我分别说明,你可以按实际情况选择。


一、kubeadm 方式(CentOS 最常见)

1. 证书默认位置

kubeadm 安装后,证书在:

/etc/kubernetes/pki/

常见证书:

  • ca.crt / ca.key
  • apiserver.crt / apiserver.key
  • apiserver-kubelet-client.crt
  • front-proxy-ca.*
  • etcd/*

2. 查看证书有效期

kubeadm certs check-expiration

3. 手动更新证书(未过期也可)

kubeadm certs renew all

然后重启控制平面组件:

systemctl restart kube-apiserver kube-controller-manager kube-scheduler

4. 自定义 CA 或证书(初始化时)

kubeadm init \
  --cert-dir=/etc/kubernetes/pki \
  --apiserver-cert-extra-sans=master.example.com,192.168.1.10

二、手动 / 二进制部署 K8s(CentOS)

1. 安装 cfssl(推荐)

yum install -y wget
wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
chmod +x cfssl_linux-amd64 cfssljson_linux-amd64
mv cfssl_linux-amd64 /usr/local/bin/cfssl
mv cfssljson_linux-amd64 /usr/local/bin/cfssljson

2. 生成 CA 证书

ca-csr.json

{
  "CN": "kubernetes",
  "key": {
    "algo": "rsa",
    "size": 2048
  }
}
cfssl gencert -initca ca-csr.json | cfssljson -bare ca

3. 生成 apiserver 证书

apiserver-csr.json

{
  "CN": "kube-apiserver",
  "hosts": [
    "127.0.0.1",
    "10.96.0.1",
    "kubernetes",
    "kubernetes.default",
    "master.example.com",
    "192.168.1.10"
  ],
  "key": {
    "algo": "rsa",
    "size": 2048
  }
}
cfssl gencert \
  -ca=ca.pem \
  -ca-key=ca-key.pem \
  -config=ca-config.json \
  apiserver-csr.json | cfssljson -bare apiserver

4. 配置 kube-apiserver 使用证书

--tls-cert-file=/etc/kubernetes/pki/apiserver.pem
--tls-private-key-file=/etc/kubernetes/pki/apiserver-key.pem
--client-ca-file=/etc/kubernetes/pki/ca.pem

三、kubeconfig 中的证书配置

生成 admin 证书并配置 kubeconfig

kubectl config set-cluster kubernetes \
  --certificate-authority=ca.pem \
  --server=https://192.168.1.10:6443

kubectl config set-credentials admin \
  --client-certificate=admin.pem \
  --client-key=admin-key.pem

kubectl config set-context kubernetes \
  --cluster=kubernetes \
  --user=admin

四、常见坑(CentOS)

✅ 防火墙

firewall-cmd --add-port=6443/tcp --permanent
firewall-cmd --reload

✅ SELinux

setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config

✅ 时间同步

yum install -y chrony
systemctl enable --now chronyd

五、如果你能补充这些信息,我可以给你精确步骤

  1. CentOS 版本(7 / 8 / Stream)
  2. K8s 版本
  3. 部署方式(kubeadm / 二进制)
  4. 是 API Server / Etcd / Ingress / Webhook 证书?

我可以直接给你 可复制的配置文件。

0 踩