在 CentOS 上配置 Kubernetes(k8s)证书,通常分为 两种场景:
下面我分别说明,你可以按实际情况选择。
kubeadm 安装后,证书在:
/etc/kubernetes/pki/
常见证书:
ca.crt / ca.keyapiserver.crt / apiserver.keyapiserver-kubelet-client.crtfront-proxy-ca.*etcd/*kubeadm certs check-expiration
kubeadm certs renew all
然后重启控制平面组件:
systemctl restart kube-apiserver kube-controller-manager kube-scheduler
kubeadm init \
--cert-dir=/etc/kubernetes/pki \
--apiserver-cert-extra-sans=master.example.com,192.168.1.10
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
ca-csr.json
{
"CN": "kubernetes",
"key": {
"algo": "rsa",
"size": 2048
}
}
cfssl gencert -initca ca-csr.json | cfssljson -bare ca
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
--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
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
✅ 防火墙
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
我可以直接给你 可复制的配置文件。