Kubernetes(k8s)-证书介绍

作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

图片

我们上一章介绍了Docker基本情况,目前在规模较大的容器集群基本都是Kubernetes,但是Kubernetes涉及的东西和概念确实是太多了,而且随着版本迭代功能在还增加,笔者有些功能也确实没用过,所以只能按照我自己的理解来讲解。

当我第一次部署Kubernnetes是在2017年,当时使用的部署方式是yum安装的,当时的版本是1.5.2。部署出来以后kube-apiserver默认端口是8080,走的http协议,目前的kubectl命令在没有配置/root/.kube/config文件情况下,默认走也是http的8080端口。

目前的版本默认走的都是6443的https协议,而且这个和我们常见的https协议不一样,普通的https协议是服务端配置证书,客户端不需要做任何配置。但是在Kubernetes里面这里的https走的是双向证书,简单来说就是客户端也必须带上自己证书,并且这个证书还是有权限控制的,然后才能请求服务端。

所以本小节来讲讲Kubernetes的证书。

图片

这个图片里面的箭头在Kubernetes内部,都是双向证书,下面的内容来源于我多年前的一篇文章,本次编写进行了略为修改。

CA证书

简单来说就是证书的颁发机构,也可以叫根证书。本身也是一个证书,并不会直接提供服务。当然他也是有有效期的,这个证书默认是10年。

路径 解释 年限
/etc/kubernetes/pki/etcd/ca.crt etcd根证书 默认10年
/etc/kubernetes/pki/ca.crt k8s集群根证书 默认10年
/etc/kubernetes/pki/front-proxy-ca.crt 代理访问k8s根证书(较少使用) 默认10年

图片

普通证书

就是由CA证书颁发的普通证书,直接应用于业务的,他也有有效期的,比如10年,当然他的有效期还受CA的影响,如果颁发CA证书过期,即便他自己没过期,证书也是会失效。默认是1年。

etcd证书

ca.crt作为etcd的根证书,签发etcd对外提供服务的server证书和签发etcd节点之间同步使用的peer证书,kubelet向etcd发起健康检查的证书。但是查看etcd静态pod的yaml文件发现健康检查走的http协议,所以这个健康检查证书是没有被使用的。

    livenessProbe:
      failureThreshold: 8
      httpGet:
        host: 127.0.0.1
        path: /health
        port: 2381
        scheme: HTTP
      initialDelaySeconds: 10
      periodSeconds: 10
      timeoutSeconds: 15

配置 文件 解释 签发关系
--cert-file /etc/kubernetes/pki/etcd/server.crt 对外提供服务的服务器证书 被ca.crt签发
--trusted-ca-file /etc/kubernetes/pki/etcd/ca.crt 用于验证访问 etcd 服务器的客户端证书的 CA 根证书 签发server和peer证书
--peer-cert-file /etc/kubernetes/pki/etcd/peer.crt 节点之间相互通信的证书 被ca.crt签发
--peer-trusted-ca-file /etc/kubernetes/pki/etcd/ca.crt 用于验证 peer 证书的 CA 根证书 签发peer.crt
/etc/kubernetes/pki/etcd/healthcheck-client.crt 用于kubelet向etcd发起健康检查的证书 被ca.crt签发

Kube-apiserver证书(作为客户端)

在Kubernetes集群里面,etcd的唯一访问者就是kube-apiserver,前面提到etcd对外提供服务使用的证书服务,那么kube-apiserver访问etcd必然也是带证书的。

配置 文件 解释 签发关系
--etcd-cafile /etc/kubernetes/pki/etcd/ca.crt 用于验证kube-apiserver向etcd请求证书的CA根证书 签发apiserver-etcd-client.crt
--etcd-certfile /etc/kubernetes/pki/apiserver-etcd-client.crt 用于kube-apiserver向etcd请求的客户端证书 被etcd的ca.crt签发

kube-apiserver证书(作为服务端)

Kube-apiserver不仅作为客户端连接etcd,更重要的是它作为集群的入口,面向集群的其他组件和kubectl命令提供服务,那么它涉及到的证书会更多。

配置 文件 解释 签发关系
--client-ca-file /etc/kubernetes/pki/ca.crt 集群CA根证书 签发apiserver.crt
--tls-cert-file /etc/kubernetes/pki/apiserver.crt 对外提供服务的的服务器证书 被ca.crt签发
--kubelet-client-certificate /etc/kubernetes/pki/apiserver-kubelet-client.crt 用于kube-apiserver访问kubelet的证书 被ca.crt签发
--proxy-client-cert-file /etc/kubernetes/pki/front-proxy-client.crt kube-proxy启用代理以后,我们通过请求代理端口,代理请求kube-apiserver所需要的证书 被front-proxy-ca.crt签发
--requestheader-client-ca-file /etc/kubernetes/pki/front-proxy-ca.crt 签发代理证书 签发front-proxy-client.crt
--service-account-key-file /etc/kubernetes/pki/sa.pub 服务账号(Service Account)公钥文件,等同于ssh免密登录放置在被登录服务器的公钥)kube-proxy ,flannel,coreDNS等用此方式和apiserver进行通信,后面会单独讲。
--token-auth-file /etc/kubernetes/known_tokens.csv

旧版本有,当前版本没有这个配置

kube-scheduler证书

配置 文件 解释 签发关系
certificate-authority-data /etc/kubernetes/scheduler.conf 集群CA根证书,通过base64加密以后存储到配置文件里面。 签发client-certificate-data
client-certificate-data /etc/kubernetes/scheduler.conf 作为客户端请求kube-apiserver的证书。 被certificate-authority-data签发

kube-controller-manager证书

配置 文件 解释 签发关系
certificate-authority-data /etc/kubernetes/controller-manager.conf 集群CA根证书,通过base64加密以后存储到配置文件里面 签发client-certificate-data
client-certificate-data /etc/kubernetes/controller-manager.conf 作为客户端请求kube-apiserver的证书 被certificate-authority-data签发

kubelet证书

配置 文件 解释 签发关系
certificate-authority-data /etc/kubernetes/kubelet.conf 集群CA根证书,通过base64加密以后存储到配置文件里面 签发client-certificate-data
client-certificate /var/lib/kubelet/pki/kubelet-client-current.pem 作为客户端请求kube-apiserver的证书 被certificate-authority-data签发

kubectl证书

配置 文件 解释 签发关系
certificate-authority-data /etc/kubernetes/admin.conf

/root/.kube/config

集群CA根证书,通过base64加密以后存储到配置文件里面 签发client-certificate-data
client-certificate-data /etc/kubernetes/admin.conf

/root/.kube/config

作为客户端请求kube-apiserver的证书 被certificate-authority-data签发

运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

关注微信公众号《运维小路》获取更多内容。

猜你喜欢

转载自blog.csdn.net/dessler/article/details/146511528