一、集群使用证书
使用 kubeadm 安装Kubernetes,会自动生成集群所需的证书。
默认证书路径:/etc/kubernetes/pki
, 但用户账户证书除外
- 证书清单如下:
├── apiserver.crt #apiserver服务端证书
├── apiserver.key #apiserver 服务端证书
├── apiserver-etcd-client.crt #apiserver访问etcd的证书(外部 etcd 拓扑不需要)
├── apiserver-etcd-client.key #apiserver访问etcd的证书
├── apiserver-kubelet-client.crt #kubelet证书
├── apiserver-kubelet-client.key #kubelet证书
├── ca.crt #根证书
├── ca.key #根证书
├── etcd (外部 etcd 拓扑不需要)
│ ├── ca.crt #etcd根证书
│ ├── ca.key #etcd根证书
│ ├── healthcheck-client.crt #pod中liveness探针客户端证书
│ ├── healthcheck-client.key #pod中liveness探针客户端证书
│ ├── peer.crt #etcd节点互通证书,由根证书签发
│ ├── peer.key #etcd节点互通证书,由根证书签发
│ ├── server.crt #etcd服务端证书,由根证书签发
│ └── server.key #etcd服务端证书,由根证书签发
├── front-proxy-ca.crt #代理根证书
├── front-proxy-ca.key #代理根证书
├── front-proxy-client.crt #由代理根证书签发的客户端证书
├── front-proxy-client.key #由代理根证书签发的客户端证书
├── sa.key #私钥 kube-controller-manager 用于为所生成的服务账号令牌签名
└── sa.pub #公钥 kube-apiserver 用于进行验签
二、证书轮换
kubeadm 生成的证书默认有效期是1年,CA证书默认有效期是10年
- 检查证书是否过期
kubeadm certs check-expiration
输出如下:
certs.png
该命令显示 /etc/kubernetes/pki 文件夹中的客户端证书以及 kubeadm(admin.conf、controller-manager.conf 和 scheduler.conf) 使用的 kubeconfig 文件中嵌入的客户端证书的到期时间/剩余时间
上面的列表中没有包含
kubelet.conf
,因为 kubeadm 将 kubelet 配置为自动更新证书(在有效时间剩下 30% 到 10% 之间的任意时间发起自动更新证书)。 轮换的证书位于目录/var/lib/kubelet/pki
。
手动更新证书
- 1.执行更新命令
kubeadm certs renew all
renew.png
此命令不更新CA证书以及sa公私钥,而是利用CA证书签发和更新证书,需要在所有控制面板节点上执行
- 2.重启控制面 Pods
重启静态 Pod 可以临时将清单文件从 /etc/kubernetes/manifests/ 移除并等待 20 秒
利用
kubeadm init phase certs
可以生成具体的证书,比如kubeadm init phase certs ca
生成kubernetes ca证书
手动更新kubelet证书
当自动更新kubelet证书失败的时候(或者证书已过期),需要手动更新kubelet证书
- 1.在机器上生成配置文件node2 是节点名称
kubeadm init phase kubeconfig kubelet --node-name node2 --kubeconfig-dir /tmp/ 生成配置文件
- 2.修改配置文件server地址,拷贝kubelet.conf 到节点/etc/kubenetes/目录下
- 3.重启节点kubelet
工作节点启动过程:
- 1.kubelet 发现没有对应的 kubeconfig 文件
- 2.kubelet 搜索并发现 bootstrap-kubeconfig 文件
- 3.kubelet 读取该启动引导文件,利用文件中引导令牌(Token)与kube-apiserver通讯,获取签名的kubelet证书
- 4.kubelet 创建一个合适的 kubeconfig,其中包含密钥和已签名的证书
- 5.kubelet 开始正常操作
- 6.kubelet 在证书接近于过期时自动请求更新证书(利用快过期的证书与kube-apiserver通讯)
引导令牌方式安全性较低一般只用于节点初始化安全认证,只有24小时有效期
网友评论