kubernetes证书介绍
不管是二进制搭建还是kubeadm安装kubernetes集群都需要有证书,因为在Kubernetes 集群中通过证书才能进行基于 TLS 的身份验证;在Kubernetes 的组件之间进行通信时,数字证书的验证是在协议层面通过 TLS 完成的,除了需要在建立通信时提供相关的证书和密钥外,在应用层面并不需要进行特殊处理。采用 TLS 进行验证有两种方式:
- 服务器单向认证:只需要服务器端提供证书,客户端通过服务器端证书验证服务的身份,但服务器并不验证客户端的身份。这种情况一般适用于对 Internet 开放的服务,例如搜索引擎网站,任何客户端都可以连接到服务器上进行访问,但客户端需要验证服务器的身份,以避免连接到伪造的恶意服务器。
- 双向 TLS 认证:除了客户端需要验证服务器的证书,服务器也要通过客户端证书验证客户端的身份。这种情况下服务器提供的是敏感信息,只允许特定身份的客户端访问。
1 kubernetes集群中有哪些证书文件
1.1 二进制安装的集群证书
# .conf文件为服务配置文件
# .kubeconfig文件为授权信息文件,对标kubeadm集群的.conf文件
[root@master ~]# tree /etc/kubernetes/
/etc/kubernetes/
├── kube-apiserver.conf
├── kube-controller-manager.conf
├── kube-controller-manager.kubeconfig
├── kubelet-bootstrap.kubeconfig
├── kubelet.conf
├── kubelet-conf.yaml
├── kubelet.kubeconfig
├── kube-proxy.kubeconfig
├── kube-proxy.yaml
├── kube-scheduler.conf
├── kube-scheduler.kubeconfig
├── ssl
│ ├── admin-key.pem
│ ├── admin.pem
│ ├── ca-key.pem
│ ├── ca.pem
│ ├── kube-apiserver-key.pem
│ ├── kube-apiserver.pem
│ ├── kube-controller-manager-key.pem
│ ├── kube-controller-manager.pem
│ ├── kubelet-client-2023-04-01-20-00-28.pem
│ ├── kubelet-client-current.pem -> /etc/kubernetes/ssl/kubelet-client-2023-04-01-20-00-28.pem
│ ├── kubelet.crt
│ ├── kubelet.key
│ ├── kube-proxy-key.pem
│ ├── kube-proxy.pem
│ ├── kube-scheduler-key.pem
│ └── kube-scheduler.pem
└── token.csv
1 directory, 28 files
[root@master ~]# tree /etc/etcd/
/etc/etcd/
├── etcd.conf
└── ssl
├── ca-key.pem
├── ca.pem
├── etcd-key.pem
└── etcd.pem
1 directory, 5 files
1.2 kubeadm安装的集群证书
[root@kubeadm ~]# tree /etc/kubernetes/
/etc/kubernetes/
├── admin.conf #admin.conf是kubeadm集群管理的核心配置文件,包含整个集群各个节点的授权信息,以及本身的一些配置信息;
├── controller-manager.conf
├── kubelet.conf
├── manifests #资源清单
│ ├── etcd.yaml
│ ├── kube-apiserver.yaml
│ ├── kube-controller-manager.yaml
│ └── kube-scheduler.yaml
├── pki
│ ├── apiserver.crt
│ ├── apiserver.key
│ ├── apiserver-etcd-client.crt
│ ├── apiserver-etcd-client.key
│ ├── apiserver-kubelet-client.crt
│ ├── apiserver-kubelet-client.key
│ ├── ca.crt
│ ├── ca.key
│ ├── etcd
│ │ ├── ca.crt
│ │ ├── ca.key
│ │ ├── healthcheck-client.crt
│ │ ├── healthcheck-client.key
│ │ ├── peer.crt
│ │ ├── peer.key
│ │ ├── server.crt
│ │ └── server.key
│ ├── front-proxy-ca.crt
│ ├── front-proxy-ca.key
│ ├── front-proxy-client.crt
│ ├── front-proxy-client.key
│ ├── sa.key
│ └── sa.pub
└── scheduler.conf
3 directories, 30 files