k8s1.18.1用kubeadm安装证书续期

k8s1.18.1用kubeadm安装证书续期

2023年6月30日发(作者:)

k8s1.18.1⽤kubeadm安装证书续期查看k8s中所有证书的到期时间:kubeadm alpha certs 查看CA证书过期时间:openssl x509 -in /etc/kubernetes/pki/ -noout -text |grep 查看集群证书过期时间:openssl x509 -in /etc/kubernetes/pki/ -noout -text |grep ' Not '如果集群证书还没有过期获取⼀个创建好的 k8s集群的初始化配置⽂件kubeadm config view > 如果证书已经过期了:vim on: /v1beta1kind: ClusterConfigurationkubernetesVersion: v1.15.0 # kubernetes 版本apiServer: certSANs: - # master 所有节点IP地址,包括master和slave - # slave1 - # slave2 extraArgs: service-node-port-range: 80-32767 advertise-address: 0.0.0.0controlPlaneEndpoint: ":6443" # APIserver 地址,也就是master节点地址imageRepository: /google_containers #这⾥使⽤国内阿⾥云的镜像仓库或者更简单的:apiVersion: /v1beta1kind: ClusterConfigurationkubernetesVersion: v1.13.5 #--------这⾥改成你集群对应的版本imageRepository: #-------k8s官⽅的镜像仓库重新⽣成默认⼀年时长证书在集群已经部署好的情况下集群的证书过期,可以选择对证书进⾏重新⽣成。单master或多master集群(etcd在集群内)处理:1)、备份原先的证书⽂件和配置⽂件:cp -rp /etc/kubernetes /etc/2)、删除过期的证书⽂件:(注意:1.13.0以下的版本需要删除旧的证书,不然不会重新⽣成,1.13.5以上的就不⽤操作了会⾃动更新的。的这些证书不要删除ca默认就是10年没必要重新⽣成,同时kubeadm在重新⽣成apiserver这些组件的证书的时候需要使⽤ca证书来进⾏签发)$ rm -f /etc/kubernetes/pki/apiserver*$ rm -f /etc/kubernetes/pki/front-proxy-client.*$ rm -rf /etc/kubernetes/pki/etcd/healthcheck-client.*$ rm -rf /etc/kubernetes/pki/etcd/server.*$ rm -rf /etc/kubernetes/pki/etcd/peer.*3)、获取k8s集群初始化的配置⽂件yaml⽂件:kubeadm config view > 4)、⽣成新的证书⽂件⽣成证书有两种⽅式⼀种是重新⽣成私钥和公钥,⼀种是使⽤存在的私钥重新签发。⽣成相应组件的证书(此格式会使⽤相应组件的原来的key重新签发证书):$kubeadm alpha phase certs renew etcd-healthcheck-client --config $kubeadm alpha phase certs renew etcd-peer --config $kubeadm alpha phase certs renew etcd-server --config $kubeadm alpha phase certs renew front-proxy-client--config $kubeadm alpha phase certs renew apiserver-etcd-client --config $kubeadm alpha phase certs renew apiserver-kubelet-client --config $kubeadm alpha phase certs renew apiserver --config ##或者重新签发全部组件的证书$kubeadm alpha phase certs renew all --config kubeadm alpha certs renew all --config= #我⽤的这个,上边那个我的平台运⾏失败。或如下格式(这种格式需要删除原来存在的相应证书和key,此格式会重新创建相应组件的私钥和公钥):$kubeadm init phase certs apiserver --config ⽣成新的配置⽂件(、、、):mv /etc/kubernetes/*.conf ~/.kubeadm alpha phase kubeconfig all --config 或如下格式重新⽣成相关组件的配置⽂件:kubeadm init phase kubeconfig all --config #我⽤的这个将新⽣成的⽂件覆盖掉.kube/config⽂件:mv $HOME/.kube/config $HOME/.kube/ -i /etc/kubernetes/ $HOME/.kube/configchown $(id -u):$(id -g) $HOME/.kube/configchmod 644 $HOME/.kube/config5)、重启kube-apiserver,kube-controller,kube-scheduler,etcd这4个容器:(⼀定要ps -a要不有可能服务容器没启动)docker ps -a | grep -v pause | grep -E "etcd|scheduler|controller|apiserver" | awk '{print $1}' | awk '{print "docker","restart",$1}' | bash6)、各节点重启kubelet或相关组件:systemctl restart kubelet注意:若集群式采⽤⾼可⽤ha⽅式安装的话有所区别,etd的相关证书需要另外签发操作,要是之前搭建集群的时候已经使⽤了长时间的则仅仅需要处理k8s其它组件的证书即可。再查看证书过期时间已经更新了。客户端kubelet证书轮换⾃动续期:kubectl证书轮换是在当前证书即将过期时,将⾃动⽣成新的密钥,并从k8s api申请新的证书。kubelet 进程接收 --rotate-certificates 参数,该参数决定 kubelet 在当前使⽤的证书即将到期时,是否会⾃动申请新的证书。 由于证书轮换是 beta 特性,必须通过参数 --feature-gates=RotateKubeletClientCertificate=true 进⾏启⽤。kube-controller-manager 进程接收 --experimental-cluster-signing-duration 参数,该参数控制证书签发的有效期限。当 kubelet 启动时,如被配置为⾃举(使⽤--bootstrap-kubeconfig 参数),kubelet 会使⽤其初始证书连接到 Kubernetes API ,并发送证书签名的请求。 可以通过以下⽅式查看证书签名请求的状态:$kubectl get csr最初,来⾃节点上 kubelet 的证书签名请求处于 Pending 状态。 如果证书签名请求满⾜特定条件, 控制管理器会⾃动批准,此时请求会处于Approved 状态。 接下来,控制器管理器会签署证书, 证书的有效期限由 --experimental-cluster-signing-duration 参数指定,签署的证书会被附加到证书签名请求中。Kubelet 会从 Kubernetes API 取回签署的证书,并将其写⼊磁盘,存储位置通过 --cert-dir 参数指定。 然后 kubelet 会使⽤新的证书连接到Kubernetes API。当签署的证书即将到期时,kubelet 会使⽤ Kubernetes API,发起新的证书签名请求。 同样地,控制管理器会⾃动批准证书请求,并将签署的证书附加到证书签名请求中。 Kubelet 会从 Kubernetes API 取回签署的证书,并将其写⼊磁盘。 然后它会更新与 Kubernetes API 的连接,使⽤新的证书重新连接到 Kubernetes API。1)、开启证书轮换:修改kubelet启动配置⽂件增加如下参数在/usr/lib/systemd/system/e.d/增加如下参数:Environment="KUBELET_EXTRA_ARGS=--feature-gates=RotateKubeletServerCertificate=true --feature-gates=RotateKubeletClientCertificate=true"修改配置⽂件在/etc/kubernetes/manifests/ 添加如下参数: - command: - kube-controller-manager - --experimental-cluster-signing-duration=87600h0m0s #10年 - --feature-gates=RotateKubeletServerCertificate=true - ....创建 rbac 对象创建rbac对象,允许节点轮换kubelet server证书:vim iVersion: /v1kind: ClusterRolemetadata: annotations: /autoupdate: "true" labels: /bootstrapping: rbac-defaults name: system::certificatesigningrequests:selfnodeserverrules:- apiGroups: - resources: - certificatesigningrequests/selfnodeserver verbs: - create---apiVersion: /v1kind: ClusterRoleBindingmetadata: name: kubeadm:node-autoapprove-certificate-serverroleRef: apiGroup: kind: ClusterRole name: system::certificatesigningrequests:selfnodeserversubjects:- apiGroup: kind: Group name: system:nodeskubectl create -f

发布者:admin,转转请注明出处:http://www.yc00.com/news/1688055843a72132.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信