美文网首页
Kubernetes之PKI证书

Kubernetes之PKI证书

作者: 宏势 | 来源:发表于2023-03-01 18:06 被阅读0次

    一、集群使用证书

    使用 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小时有效期

    三、CA证书轮换

    相关文章

      网友评论

          本文标题:Kubernetes之PKI证书

          本文链接:https://www.haomeiwen.com/subject/icipkdtx.html