在管理證書之前,你需要了解kubernetes如何使用PKI證書的相關(guān)知識:官方文檔
成都創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營銷、網(wǎng)站重做改版、大安市網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、HTML5建站、商城網(wǎng)站制作、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為大安市等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
check-expiration可用于檢查證書過期時間:
kubeadm alpha certs check-expiration
輸出如下內(nèi)容;
CERTIFICATE EXPIRES RESIDUAL TIME EXTERNALLY MANAGED
admin.conf Oct 06, 2020 03:56 UTC 364d no
apiserver Oct 06, 2020 10:41 UTC 364d no
apiserver-etcd-client Oct 06, 2020 03:55 UTC 364d no
apiserver-kubelet-client Oct 06, 2020 03:55 UTC 364d no
controller-manager.conf Oct 06, 2020 03:56 UTC 364d no
etcd-healthcheck-client Oct 02, 2020 12:14 UTC 361d no
etcd-peer Oct 02, 2020 12:14 UTC 361d no
etcd-server Oct 02, 2020 12:14 UTC 361d no
front-proxy-client Oct 06, 2020 03:55 UTC 364d no
scheduler.conf Oct 06, 2020 03:56 UTC 364d no
該命令顯示了 所有證書的到期/剩余時間,包括在etc/kubernetes/pki目錄下的客戶端證書及由kubeadm嵌入到KUBECONFIG文件中的客戶端證書(admin.conf,controller-manager.conf和scheduler.conf)。
注意:
- kubelet.conf未包含在上面的列表中,因為kubeadm將已將其配置為自動更新。
- kubeadm無法管理由外部CA簽名的證書。
自動續(xù)訂指的是,在用kubeadm升級控制平面時 自動更新所有證書。
如果對證書續(xù)約沒有要求,并定期升級kubernetes版本,每次升級間隔時間少于1年,最佳做法是經(jīng)常升級集群以確保安全。
如果不想在升級集群時續(xù)約證書,則給 kubeadm upgrade apply 或 kubeadm upgrade node 傳遞參數(shù):--certificate-renewal=false
使用 kubeadm alpha certs renew命令 可以隨時手動續(xù)訂證書,該命令使用存儲在/etc/kubernetes/pki中的 CA (or front-proxy-CA)證書和密鑰來更新證書。
如果是HA集群,則在所有控制平面執(zhí)行。
kubeadm alpha certs 命令詳解:
Available Commands:
certificate-key 生成證書和key
check-expiration 檢測證書過期時間
renew 續(xù)訂Kubernetes集群的證書
用的最多的續(xù)訂證書的 renew子命令,現(xiàn)在來看下該命令幫助:
root@k8s-master:~# kubeadm alpha certs renew -h
This command is not meant to be run on its own. See list of available subcommands.
Usage:
kubeadm alpha certs renew [flags]
kubeadm alpha certs renew [command]
Available Commands:
admin.conf Renew the certificate embedded in the kubeconfig file for the admin to use and for kubeadm itself
all Renew all available certificates
apiserver Renew the certificate for serving the Kubernetes API
apiserver-etcd-client Renew the certificate the apiserver uses to access etcd
apiserver-kubelet-client Renew the certificate for the API server to connect to kubelet
controller-manager.conf Renew the certificate embedded in the kubeconfig file for the controller manager to use
etcd-healthcheck-client Renew the certificate for liveness probes to healtcheck etcd
etcd-peer Renew the certificate for etcd nodes to communicate with each other
etcd-server Renew the certificate for serving etcd
front-proxy-client Renew the certificate for the front proxy client
scheduler.conf Renew the certificate embedded in the kubeconfig file for the scheduler manager to use
Flags:
-h, --help help for renew
Global Flags:
--log-file string If non-empty, use this log file
--log-file-max-size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800)
--rootfs string [EXPERIMENTAL] The path to the 'real' host root filesystem.
--skip-headers If true, avoid header prefixes in the log messages
--skip-log-headers If true, avoid headers when opening log files
-v, --v Level number for the log level verbosity
如上所知,指定某個證書就能續(xù)訂該證書,指定 all
則續(xù)訂所有證書。
命令執(zhí)行后,注意:
kubeadm alpha certs命令僅支持v1.15及其以上的版本。
從上面檢測中知道,當(dāng)前 apiserver.crt 到期時間是 Oct 06, 2020 03:55 UTC ,剩余364d。
1. 執(zhí)行renew更新:
root@k8s-master:~# kubeadm alpha certs renew apiserver
certificate for serving the Kubernetes API renewed
2. 重啟控制平面:
重啟kubelet會自動重新創(chuàng)建核心組件
systemctl restart kubelet
3. 驗證:
root@k8s-master:~# kubeadm alpha certs check-expiration
CERTIFICATE EXPIRES RESIDUAL TIME EXTERNALLY MANAGED
apiserver Oct 06, 2020 10:41 UTC 364d no
apiserver證書到期時間發(fā)生了變化, 不過不是順延一年, 而是 從你 執(zhí)行renew成功的時間開始續(xù)簽一年。
如果要將所有證書續(xù)簽一年,則執(zhí)行:
kubeadm alpha certs renew all
通過外部CA簽發(fā)證書,需要kubeadm 生成一個CSR提交給CA。
1. 生成CSR和私鑰:
kubeadm alpha certs renew apiserver --csr-only --csr-dir /tmp/apiserver.csr
2. 查看CSR和私鑰:
命令輸出結(jié)果中提供了CSR和私鑰。
root@k8s-master:~# ls /tmp/apiserver.csr/
apiserver.csr apiserver.key
3. 使用該私鑰到CA上請求簽發(fā)證書。
將頒發(fā)的證書及私鑰復(fù)制到PKI目錄/etc/kubernetes/pki中。