首页 > 其他分享 >k8s 证书自动轮巡

k8s 证书自动轮巡

时间:2024-11-03 22:09:14浏览次数:4  
标签:pki crt kubernetes 证书 -- 轮巡 kubelet etc k8s

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

相关文章

  • ArchLinux 删除证书
    证书列表机构根证书名称北京数字认证股份有限公司BeijingSM2CABJCA_Global_Root_CA4上海市数字证书认证中心有限公司SHECASM2UCARootSM2UniTrustGlobalRootCAR3数安时代科技股份有限公司GDCAGMSM2ROOTGDCA深圳市电子商务安全证书管理有......
  • Docker和k8s核心概念(理解友好版)
    背景这是在HWL负责网校云业务线测试时,给同事分享的基础概念文档。目录:一.Docker核心概念二.Kubernetes是什么及架构三.Kubernetes核心概念四.Deployment部署Pod操作一、Docker核心概念 1、为什么是Docker虚拟机:基础设施(Infrastructure)。服务器,或者是云主机。主......
  • 全网最详细K8S部署redis cluster
    K8S部署redisclusterRedisCluster介绍Redis是一个开源的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。Redis通过哨兵(Sentinel)和自动分区(Cluster)提供高可用性(highavailability)。在Redis集群中,节点负责保存数据并获取集群状态,包括将键映射到正确的......
  • 关于k8s api-server端口范围和node节点范围冲突会导致集群不正常故障总结
    1.故障背景由于需要部署新环境,于是在阿里云新建一个ack集群,部署了业务,结果整晚上的存活探针告警,新集群接近30个业务pod,整晚上将近50多条存活探针告警,这个结果明显不正常。但是查看所有pod状态事件全部正常,阿里云托管的ack也没有事件异常,第一反应确实是集群某些参数不对......
  • spark-on-k8s 介绍
    spark-on-k8s介绍摘要最近一段时间都在做与spark相关的项目,主要是与最近今年比较火的隐私计算相结合,主要是在机密计算领域使用spark做大数据分析、SQL等业务,从中也了解到了一些spark的知识,现在做一个简单的总结,主要关注sparkonk8s模式。需要先从大数据开始讲起,大数据......
  • 关于k8s优雅下线的解决思路
    因为在每次发版的时候,老的pod在要被删除的时候都会报一个存活探针失败的问题,所以这里按照思路,整理如下问题,说明为什么每次发版都会报存活探针失败的问题以及解决方案的思路。 1.启动探针,存活探针,就绪探针的检查顺序在Kubernetes中,启动探针(startupprobe)、存活探针(li......
  • 在K8S中,集群服务暴露失败 如何解决?
    在Kubernetes(K8S)中,集群服务暴露失败可能由多种原因引起。为了解决这个问题,可以按照以下步骤进行详细的排查和解决:1.检查服务是否存在首先,需要确认要暴露的服务是否已经存在。使用kubectlgetservices命令查看当前命名空间下的所有服务,确认目标服务是否在其中。如果服务不存在,......
  • 在K8S中,集群服务访问失败 如何解决?
    在Kubernetes(K8S)中,集群服务访问失败是一个常见的问题,可能由多种原因引起。下面是一些排查和解决问题的步骤,可以帮助你定位并解决服务访问失败的问题。1.检查服务定义首先,确保你的服务定义是正确的。检查服务的YAML文件,确认selector标签与后端Pod的标签匹配。如果服务定义有......