您现在的位置是:首页 >技术教程 >《Kubernetes证书篇:二进制手动生成kubernetes集群相关证书》网站首页技术教程
《Kubernetes证书篇:二进制手动生成kubernetes集群相关证书》
简介《Kubernetes证书篇:二进制手动生成kubernetes集群相关证书》
一、背景
K8S二进制部署,有两大难点,第一个就是证书的生成,第二个就是需要部署哪些组件。这里就首先介绍一下,K8S需要生成哪些证书文件?
1.1、ca证书
我们先简单说一下证书签发,首先需要签发一个根CA(证书签发机构),然后使用CA来签发服务端证书(server)、客户端证书(client)、对等证书(peer),其中对等证书就是既可以做服务端证书,也可以做客户端证书。
我们需要三个CA(当然你懒一些用同一个CA也是可以的),这里就介绍三个CA,如下所示:
证书及密钥路径 | 证书文件 | 密钥文件 | 默认CN | 说明 |
---|---|---|---|---|
/etc/kubernetes/pki | ca.pem | ca-key.pem | kubernetes-ca | Kubernetes 通用 CA |
/etc/kubernetes/pki/etcd | ca.pem | ca-key.pem | etcd-ca | 与 etcd 相关的所有功能 |
/etc/kubernetes/pki | front-proxy-ca.pem | front-proxy-ca-key.pem | kubernetes-front-proxy-ca | 用于前端代理 |
1.2、etcd应用需要的证书
证书及密钥路径 | 证书文件 | 密钥文件 | 父级CA | 默认CN | 说明 |
---|---|---|---|---|---|
/etc/kubernetes/pki/etcd | server.pem | server-key.pem | etcd-ca | kube-etcd | etcd对外提供服务,要有一套etcd server证书 |
/etc/kubernetes/pki/etcd | healthcheck-client.pem | healthcheck-client-key.pem | etcd-ca | kube-etcd-healthcheck-client | 客户端证书 |
/etc/kubernetes/pki/etcd | peer.pem | peer-key.pem | etcd-ca | kube-etcd-peer | etcd各节点之间进行通信,要有一套etcd peer证书 |
1.3、kube-apiserver应用需要的证书
证书及密钥路径 | 证书文件 | 密钥文件 | 父级CA | 默认CN | 证书类型 | 说明 |
---|---|---|---|---|---|---|
/etc/kubernetes/pki | apiserver-etcd-client.pem | apiserver-etcd-client-key.pem | etcd-ca | kube-apiserver-etcd-client | client | kube-apiIserver访问etcd,要有一套etcd客户端证书 |
/etc/kubernetes/pki | apiserver.pem | apiserver-key.pem | kubernetes-ca | kube-apiserver | server | kube-apiserver对外提供服务,要有一套kube-apiserver服务端证书 |
/etc/kubernetes/pki | apiserver-kubelet-client.pem | apiserver-kubelet-client-key.pem | kubernetes-ca | kube-apiserver-kubelet-client | client | 用于API服务器安全地连接到kubelet的客户端证书 |
/etc/kubernetes/pki | front-proxy-ca.pem | front-proxy-ca-key.pem | 无 | kubernetes-front-proxy-ca | ca | 用于前端代理证书颁发机构 |
/etc/kubernetes/pki | front-proxy-client.pem | front-proxy-client-key.pem | kubernetes-front-proxy-ca | front-proxy-client | client | 用于前端代理客户端 |
/etc/kubernetes/pki | sa.pub | sa.key | 无 | 无 | 密钥对 | 用于控制器管理器签署ServiceAccount时使用的密钥 |
1.4、kube-controller-manager应用需要的证书
1.5、kube-scheduler应用需要的证书
1.6、kube-proxy应用需要的证书
1.7、kubelet应用需要的证书
kubelet证书推荐使用TLS bootstrap方式自动签发,手动签发的话需要给每一个node节点的kubelet签发证书,因为kubelet证书CN要为system:node:,O要为system:nodes。
总结:整理不易,如果对你有帮助,可否点赞关注一下?
更多详细内容请参考:企业级K8s集群运维实战
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。