K8s 证书认知
在谈起 Kubernetes 证书时,总感觉其涵盖的内容繁多,仿佛千头万绪,让人不知该从何处着手阐述。为了更好地理清思路,本文将对相关内容进行系统的梳理和记录。
1、证书及链路关系
Kubeadm部署的集群,K8s CA证书是10年,其他组件的证书日期是1年,etcd证书日期可以通过配置设置为10年。
-
服务端证书: 服务端证书是安装在服务器端的证书,主要用于服务器向客户端证明自己的合法身份,确保客户端连接到正确的服务器,有效时间一般设置比较长。
-
客户端证书: 客户端证书是安装在客户端的证书,主要用于向服务器证明客户端的身份,确保服务器只接受合法的客户端请求,有效时间相对可以设置短些。
-
CA证书: 服务端或客户端证书都通过CA生成的,Kubeadm安装的集群一般有三套CA证书,一套给etcd、一套给K8s内部使用、一套给聚合层使用,他们都是10年。
-
证书配置一般有三个文件,含CA,证书和私钥(key字样): 证书是验证对方证书有效性,私钥是解密和签名操作。
1.1、etcd证书
通过ps -ef| grep etcd或systemctl status etcd查看etcd配置从而知道证书目录。
链路关系:服务本身、etcd集群节点间和客户端(etcdctl指令和kube-apiserver访问etcd的客户端证书)。
1.2、kubeadm token令牌
当kubeadm init或一个新节点或组件启动时,它可以使用Token向kube-apiserver进行身份认证,一般是24h。可通过kubeadm token create命令生成,kubeadm token list查看。
1.3、kube-apiserver证书
最复杂,需要和多个组件链接认证,通过查看apiserver配置文件,一般在/etc/kubernetes/manifests目录下kube-apiserver.yaml
链路关系:服务本身、客户端证书(kube-apiserver访问etcd、kubelet和front-proxy)。
1.4、kubelet证书
kubelet有客户端证书和服务端证书,客户端证书可以通过设置自动续签。
链路关系:客户端(kubelet访问kube-apiserver,是通过kubeconfig,其中客户端证书和私钥为:kubelet-client-current.pem)、服务端(可以在kube-apiserver和metric-server访问时使用,但一般不会设置)。