kubernetes证书介绍

发布时间 2023-04-03 18:03:26作者: du-z

kubernetes证书介绍

不管是二进制搭建还是kubeadm安装kubernetes集群都需要有证书,因为在Kubernetes 集群中通过证书才能进行基于 TLS 的身份验证;在Kubernetes 的组件之间进行通信时,数字证书的验证是在协议层面通过 TLS 完成的,除了需要在建立通信时提供相关的证书和密钥外,在应用层面并不需要进行特殊处理。采用 TLS 进行验证有两种方式:

  1. 服务器单向认证:只需要服务器端提供证书,客户端通过服务器端证书验证服务的身份,但服务器并不验证客户端的身份。这种情况一般适用于对 Internet 开放的服务,例如搜索引擎网站,任何客户端都可以连接到服务器上进行访问,但客户端需要验证服务器的身份,以避免连接到伪造的恶意服务器。
  2. 双向 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

2