前言
通过kops创建出来的kubernetes集群,与我们使用kubeadm等其他安装方式不同。其默认证书不会存放在master所在服务器上,而是存放在了S3存储桶中。
但是出现另一个问题。kops的配置文件都没有明确指定每个组件所使用的证书是哪一个,我们应该如何确定证书的对应关系呢?如何确定我在存储桶里找到的证书文件就是我kops集群正在用的证书呢?
证书查看
存储桶中的证书文件
把这些文件下载下来,用openssl命令可以查看,这些证书有效期都是10年的。也就是kops创建出来的k8s集群默认证书有效时间是10年。
具体查看这些证书的详细步骤和命令,可以参考我的另一篇文章:kops部署的Kubernetes集群证书到期时间查看
集群使用证书查看
kOps 管理的凭据有两种类型:
"secrets" 对称凭证
"keypairs" 是一对X.509证书及其相应的私钥。例外情况是“service-account”密钥对,它们存储为证书和私钥对,但不使用除公钥以外的证书的任何部分。
###命令:kops get secrets | grep Keypair
[root@xxx /]# kops get secrets | grep Keypair
Using cluster from kubectl context: eukops-test-lq-auto.k8s.local
TYPE NAME ID
Keypair apiserver-aggregator 6995558755913360070226752929
Keypair apiserver-aggregator-ca 6995558743703419045259340948
Keypair apiserver-proxy-client 6995558758064744228746258831
Keypair ca 6995558745642787213921919813
Keypair kops 6995558758852530610829104699
Keypair kube-controller-manager 6995558753839274937271145793
Keypair kube-proxy 6995558752627877783512637002
Keypair kube-scheduler 6995558755413500694479918023
Keypair kubecfg 6995558750383384612080169723
Keypair kubelet 6995558756824688124484069245
Keypair kubelet-api 6995558754871173554508982679
Keypair master 6995558807604094491538917240
第三列的ID号,可以和存储桶中的crt文件一一对应
如 Keypair:apiserver-aggregator-ca;ID:6995558743703419045259340948
与存储桶中apiserver-aggregator-ca文件夹下crt文件匹配。
特殊的etcd-manager自签证书
etcd-manager 首次在 Kops 1.12 中引入。
etcd-manager 首次启动时,它会为每个主节点颁发证书。这些证书期限为1年
如果使用1.12版本以上的kops,会有一个坑。也就是etcd-manager默认办法1年自签证书。这个会导致你的集群,在一年期满后etcd节点证书过期。
详细的解决方案和查看这些证书的方法,可以查看我的另一篇文章:kops etcd证书过期问题
参考文档
Rotate Secrets:Rotate Secrets - kOps - Kubernetes Operations