クラスター証明書が期限切れの場合、kubectl によるクラスター API サーバーとの通信や API の呼び出しができません。クラスターノード上の期限切れの証明書は、テンプレートのデプロイを通じて自動的に更新されません。
証明書の更新のために、それぞれのクラスターノードにログインし、コンテナー起動コマンド docker run
を実行します。
マスターノード上の期限切れ証明書の更新
- ルート権限でマスターノードにログインします。
- 以下のコマンドを実行し、マスターノード上の期限切れ証明書を更新します。コマンドを実行するディレクトリは問いません。
$ docker run -it --privileged=true -v /:/alicoud-k8s-host --pid host --net host \ registry.cn-hangzhou.aliyuncs.com/acs/cert-rotate:v1.0.0 /renew/upgrade-k8s.sh --role master
- 上記の手順をそれぞれのクラスターマスターノードで繰り返し、すべての期限切れ証明書を更新します。
ワーカーノード上の期限切れ証明書の更新
- ルート権限でマスターノードにログインします。
- 以下のコマンドを実行し、クラスター rootCA 秘密鍵を取得します。
$ cat /etc/kubernetes/pki/ca.key
- 以下のコマンドのどちらかを実行し、base64 でエンコードされたクラスタールート秘密鍵を取得します。
- クラスター rootCA 秘密鍵に空行がある場合、以下のコマンドを実行します。
$ sed '1d' /etc/kubernetes/pki/ca.key| base64 -w 0
- クラスター rootCA 秘密鍵に空行がない場合、以下のコマンドを実行します。
$ cat /etc/kubernetes/pki/ca.key | base64 -w 0
- クラスター rootCA 秘密鍵に空行がある場合、以下のコマンドを実行します。
- ルート権限でワーカーノードにログインします。
- 以下のコマンドを実行し、ワーカーノード上の期限切れ証明書を更新します。コマンドを実行するディレクトリは問いません。
$ docker run -it --privileged=true -v /:/alicoud-k8s-host --pid host --net host \ registry.cn-hangzhou.aliyuncs.com/acs/cert-rotate:v1.0.0 /renew/upgrade-k8s.sh --role node --rootkey ${base64CAKey}
注 手順 3 において、取得した "${base64CAKey}" は、base64 でエンコードされたクラスタールート秘密鍵です。 - 上記の手順をそれぞれのクラスターワーカーノードで繰り返し、すべての期限切れ証明書を更新します。