vi /etc/kubernetes/cfg/token.csv
f89a76f197526a0d4bc2bf9c86e871c3,kubelet-bootstrap,10001,"system:bootstrappers"
#---
scp /etc/kubernetes/cfg/token.csv master-2:/etc/kubernetes/cfg/token.csv
scp /etc/kubernetes/cfg/token.csv master-3:/etc/kubernetes/cfg/token.csv
service kube-apiserver restart
#controller-manager
cat >/etc/kubernetes/cfg/kube-controller-manager.cfg<<EOFL
KUBE_CONTROLLER_MANAGER_OPTS="--logtostderr=true \
--v=4 \
--master=127.0.0.1:8080 \
--leader-elect=true \
--address=0.0.0.0 \
--service-cluster-ip-range=10.0.0.0/24 \
--cluster-name=kubernetes \
--feature-gates=RotateKubeletServerCertificate=true \
--experimental-cluster-signing-duration=87600h0m0s \
--cluster-signing-cert-file=/etc/kubernetes/ssl/ca.pem \
--cluster-signing-key-file=/etc/kubernetes/ssl/ca-key.pem \
--root-ca-file=/etc/kubernetes/ssl/ca.pem \
--service-account-private-key-file=/etc/kubernetes/ssl/ca-key.pem"
EOFL
看起来你提供的是与Kubernetes集群相关的命令行参数。这些参数通常用于Kubernetes集群的配置和启动。下面是每个参数的含义: 1. `--feature-gates=RotateKubeletServerCertificate=true`: - 这个参数是Kubernetes的一个特性门控(feature gate),用于启用或禁用某些实验性或alpha/beta特性。 - `RotateKubeletServerCertificate`是一个特性门控的名称。 - `true`表示启用这个特性。 - 启用`RotateKubeletServerCertificate`特性后,Kubernetes会定期自动旋转kubelet的服务器证书。 2. `--experimental-cluster-signing-duration=87600h0m0s`: - 这个参数用于设置Kubernetes集群中证书的有效期。 - `--experimental-`前缀表示这是一个实验性特性,可能在未来的版本中发生变化或被移除。 - `cluster-signing-duration`指定了集群签名证书的持续时间。 - `87600h0m0s`表示证书的有效期为87600小时,即10年。
service kube-controller-manager restart
#创建证书文件
vim tls-instructs-csr.yaml
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: system:certificates.k8s.io:certificatesigningrequests:selfnodeserver
rules:
- apiGroups: ["certificates.k8s.io"]
resources: ["certificatesigningrequests/selfnodeserver"]
verbs: ["create"]
kubectl apply -f tls-instructs-csr.yaml
#-------------------
#自动批准 kubelet-bootstrap 用户 TLS bootstrapping 首次申请证书的 CSR 请求
kubectl create clusterrolebinding node-client-auto-approve-csr --clusterrole=system:certificates.k8s.io:certificatesigningrequests:nodeclient --user=kubelet-bootstrap
#-----------------
#自动批准 system:nodes 组用户更新 kubelet 自身与 apiserver 通讯证书的 CSR 请求
kubectl create clusterrolebinding node-client-auto-renew-crt --clusterrole=system:certificates.k8s.io:certificatesigningrequests:selfnodeclient --group=system:nodes
#-------------
#自动批准 system:nodes 组用户更新 kubelet 10250 api 端口证书的 CSR 请求
kubectl create clusterrolebinding node-server-auto-renew-crt --clusterrole=system:certificates.k8s.io:certificatesigningrequests:selfnodeserver --group=system:nodes
#--------------------客户端删除现在的证书
rm -f /etc/kubernetes/ssl/kubelet-client-current.pem /etc/kubernetes/ssl/kubelet-client*pem /etc/kubernetes/ssl/kubelet.key kubelet.crt
#---------------客户端实现自动更新
cat >/etc/kubernetes/cfg/kubelet<<EOF
KUBELET_OPTS="--logtostderr=true \
--v=4 \
--hostname-override=192.168.91.21 \
--kubeconfig=/etc/kubernetes/cfg/kubelet.kubeconfig \
--bootstrap-kubeconfig=/etc/kubernetes/cfg/bootstrap.kubeconfig \
--config=/etc/kubernetes/cfg/kubelet.config \
--feature-gates=RotateKubeletClientCertificate=true,RotateKubeletServerCertificate=true \
--rotate-certificates \
--cert-dir=/etc/kubernetes/ssl \
--pod-infra-container-image=docker.io/kubernetes/pause:latest"
EOF
这两个参数同样是用于Kubernetes集群配置的命令行参数,它们与证书管理和特性门控有关。下面是每个参数的详细解释: 1. `--feature-gates=RotateKubeletClientCertificate=true,RotateKubeletServerCertificate=true`: - 这个参数设置了两个特性门控(feature gates),分别是`RotateKubeletClientCertificate`和`RotateKubeletServerCertificate`。 - `RotateKubeletClientCertificate`启用后,Kubernetes会定期自动旋转kubelet的客户端证书。 - `RotateKubeletServerCertificate`启用后,Kubernetes会定期自动旋转kubelet的服务器证书。 - `true`表示启用这些特性。 2. `--rotate-certificates`: - 这个参数是一个标志,用于指示Kubernetes在启动时检查并旋转所有即将到期的证书。 - 当与`RotateKubeletClientCertificate`和`RotateKubeletServerCertificate`特性门控一起使用时,它会确保kubelet的客户端和服务器证书在到期前被自动更新。 这些参数通常用于Kubernetes集群的控制平面组件,如kube-controller-manager和kube-apiserver。启用这些特性可以帮助自动化证书管理过程,减少手动干预,提高集群的安全性和稳定性。 如果你正在配置或管理Kubernetes集群,并希望启用这些特性,你需要确保你的Kubernetes版本支持这些特性,并且在启动控制平面组件时正确设置了这些参数。如果你有任何疑问或需要进一步的帮助,请随时提问。
service kubelet restart
#查看kubelet.crt 查看
#默认一年
openssl x509 -in kubelet-client-current.pem -noout -text | grep "Not"
openssl x509 -in server.crt -text
openssl x509 -in /etc/kubernetes/ssl/kubelet.crt -noout -text | grep -A2 "Validity"
#服务端状态
[root@master-1 config]# kubectl get csr
NAME AGE REQUESTOR CONDITION
csr-lh2v5 6s kubelet-bootstrap Approved,Issued
#-----------------------参考
#------------
Below is a list of K8s (1.16) internal files (on each master node) which include certificates.
/etc/kubernetes/admin.conf
/etc/kubernetes/controller-manager.conf
/etc/kubernetes/scheduler.conf
/etc/kubernetes/pki/apiserver.crt
/etc/kubernetes/pki/apiserver-kubelet-client.crt
/etc/kubernetes/pki/apiserver-etcd-client.crt
/etc/kubernetes/pki/ca.crt
/etc/kubernetes/pki/etcd/healthcheck-client.crt
/etc/kubernetes/pki/etcd/peer.crt
/etc/kubernetes/pki/etcd/server.crt
/etc/kubernetes/pki/front-proxy-ca.crt
/etc/kubernetes/pki/front-proxy-client.crt
/var/lib/kubelet/pki/kubelet.crt
/var/lib/kubelet/pki/kubelet-client-current.pem
There are also some certificates on each worker node, mainly used by kubelet.
/etc/kubernetes/kubelet.conf
/etc/kubernetes/pki/ca.crt
/var/lib/kubelet/pki/kubelet.crt
/var/lib/kubelet/pki/kubelet-client-current.pem
标签:pki,crt,kubernetes,证书,--,轮巡,kubelet,etc,k8s From: https://www.cnblogs.com/gaoyuechen/p/18524096