本页介绍如何使用 kubeadm 手动管理证书。
这些是需要将其组织的证书基础机构集成到 kubeadm 构建的集群中的用户的高级主题。如果具有默认配置的 kubeadm 满足您的需求,您应该让 kubeadm 管理证书。
您应该熟悉Kubernetes 中的 PKI 证书和要求。
Kubernetes 证书通常在一年后到期。
Kubeadm 可以使用kubeadm alpha certs renew
命令更新证书;您应该只在控制平面节点上运行这些命令。
通常,这是通过加载磁盘CA证书和密钥并使用它们来颁发新证书来完成的。 如果证书树是自包含的,则此方法很有效。 然而,如果您的证书是外部管理的,您可能需要一个不同的方法。
作为替代方案,Kubernetes 提供了自己的用于管理证书的 API。
使用 kubeadm,您可以通过运行kubeadm alpha certs renew --use-api
来使用此 API。
Kubernetes 证书颁发机构不是开箱即用。
你可以配置外部签名者,例如cert-manager,也可以使用内置签名者。
内置签名者是kube-controller-manager
的一部分。
要激活内置签名者,请传递--cluster-signing-cert-file
和 --cluster-signing-key-file
参数。
您可以通过以下任何方式传递这些参数:
/etc/kubernetes/manifests/kube-controller-manager.yaml
将参数添加到命令中。
请记住,升级时可能会覆盖您的更改。如果您要创建新集群,可以使用 kubeadm配置文件:
apiVersion: kubeadm.k8s.io/v1beta1
kind: ClusterConfiguration
controllerManager:
extraArgs:
cluster-signing-cert-file: /etc/kubernetes/pki/ca.crt
cluster-signing-key-file: /etc/kubernetes/pki/ca.key
kubeadm config upload from-files
上传配置文件如果您设置例如cert-manager等外部签名者,则会自动批准证书签名请求(CSRs)。
否者,您必须使用kubectl certificate
命令手动批准证书。
以下 kubeadm 命令输出要批准的证书名称,然后缓慢等待批准发生:
sudo kubeadm alpha certs renew apiserver --use-api &
[1] 2890
[certs] certificate request "kubeadm-cert-kube-apiserver-ld526" created
kubectl certificate approve kubeadm-cert-kube-apiserver-ld526
certificatesigningrequest.certificates.k8s.io/kubeadm-cert-kube-apiserver-ld526 approved
[1]+ Done sudo kubeadm alpha certs renew apiserver --use-api
您可以使用kubectl get csr
查看待处理证书列表。
为了更好的与外部 CA 集成,kubeadm 还可以生成证书签名请求(CSR)。 CSR 表示向 CA 请求客户的签名证书。 在 kubeadm 术语中,通常由磁盘 CA 签名的任何证书都可以作为 CSR 生成。但是,CA 不能作为 CSR 生成。
您可以使用kubeadm init phase certs apiserver --csr-only
创建单独的 CSR。
--csr-only
标志只能应用于各个阶段。在所有证书到位之后, 您可以运行kubeadm init --external-ca
。
您可以传入一个带有--csr-dir
的目录,将 CRS 输出到指定位置。
如果未指定--csr-dir
,则使用默认证书目录(/etc/kubernetes/pki
)。
CSR 和随附的私钥都在输出中给出。签署证书后,必须将证书和私钥复制到 PKI 目录(默认情况下为/etc/kubernetes/pki
)。
可以使用kubeadm alpha certs renew --csr-only
更新证书。
与kubeadm init
一样,可以使用--csr-dir
标志指定输出目录。
要使用新证书,请将签名证书和私钥复制到 PKI 目录中(默认情况下为/etc/kubernetes/pki
)
CSR 包含证书的名称、域和 IP,但不指定用法。 CA 颁发证书时,有责任指定[正确的证书用法][证书表] 。
openssl
中,这是通过 openssl ca
command完成的。cfssl
中指定 配置文件中的用法Kubeadm 默认设置三个 CA。确保使用相应的 CA 对 CSR 进行签名。
此页是否对您有帮助?
Thanks for the feedback. If you have a specific, answerable question about how to use Kubernetes, ask it on Stack Overflow. Open an issue in the GitHub repo if you want to report a problem or suggest an improvement.