首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Kubernetes(k8s)-证书介绍

Kubernetes(k8s)-证书介绍

作者头像
运维小路
发布2025-02-10 15:52:45
发布2025-02-10 15:52:45
34100
代码可运行
举报
文章被收录于专栏:运维小路运维小路
运行总次数:0
代码可运行

我们上一章介绍了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协议,所以这个健康检查证书是没有被使用的。

代码语言:javascript
代码运行次数:0
运行
复制
    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签发

历史推荐内容Docker-docker基本信息,基本命令,dockerfile,原理,仓库,存储网络日志,番外篇云计算&虚拟化-包括服务器购买,虚拟化介绍,虚拟磁盘,虚拟网络,创建虚拟机,安装虚拟机,dashboard,xml解释,克隆,快照,初始化,esxi介绍。Linux进阶-包括硬件,日常运维,基础软件,日志,进阶命令,防火墙,shell编程,内核,linux系统及初始化Linux基础-包括文件的增删改查,磁盘管理,网络配置,用户配置,权限配置

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-02-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维小路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • CA证书
    • 普通证书
    • etcd证书
    • Kube-apiserver证书(作为客户端)
    • 在Kubernetes集群里面,etcd的唯一访问者就是kube-apiserver,前面提到etcd对外提供服务使用的证书服务,那么kube-apiserver访问etcd必然也是带证书的。
    • kube-apiserver证书(作为服务端)
    • kube-controller-manager证书
    • kubelet证书
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档