すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:有効期限が近づいている ACK 専用クラスター証明書の更新

最終更新日:Jun 24, 2026

コンソール、kubectl、または手動の Kubernetes Job を使用して、ACK 専用クラスター 内のすべてのノード証明書を更新します。

説明

Container Service for Kubernetes (ACK) は、ACK マネージドクラスター 内のマスターノード証明書を自動的に更新します。 手動操作は必要ありません。

コンソールでのすべてのノード証明書の更新

  1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. 証明書の有効期限が近づいているクラスターの横にある 証明書の更新 をクリックします。 証明書の更新 ページが開きます。

    説明

    証明書の更新 ボタンは、証明書の有効期限が約 2 か月で切れるクラスターに表示されます。

    クラスターリストの [操作] 列で [証明書の更新] をクリックします。

  3. 証明書の更新 ページで、証明書の更新 をクリックし、画面の指示に従います。

    更新後:

    • 証明書の更新 ページに、 [更新完了] のような成功メッセージが表示されます。

    • クラスターリスト ページで、クラスターの 証明書の更新 プロンプトが非表示になります。

kubectl を使用したすべてのノード証明書の自動更新

証明書の更新

任意のマスターノードで、すべてのノード証明書を更新します。

curl http://aliacs-k8s-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/public/cert-update/renew.sh | bash

結果の確認

kubectl を使用してクラスターに接続していることを確認してください。 詳細については、「kubectl を使用した Kubernetes クラスターへの接続」をご参照ください。
  1. マスターノードとワーカーノードのステータスを表示します。

    kubectl get nodes
    [root@xxx ~]# kubectl get nodes
    NAME                      STATUS    ROLES     AGE       VERSION
    cn-hangzhou.xxx           Ready     <none>    23d       v1.11.2
    cn-hangzhou.xxx           Ready     <none>    23d       v1.11.2
    cn-hangzhou.xxx           Ready     master    47d       v1.11.2
    cn-hangzhou.xxx           Ready     master    47d       v1.11.2
    cn-hangzhou.xxx           Ready     master    47d       v1.11.2
    cn-hangzhou.xxx           Ready     <none>    47d       v1.11.2
    cn-hangzhou.xxx           Ready     <none>    47d       v1.11.2
    [root@xxx ~]#
  2. Job のステータスを確認してください。 各マスターノード Job の COMPLETIONS1/1 になり、ワーカーノード Job の完了数がクラスター内のワーカーノード の総数と一致すると、更新は完了です。

    kubectl -n kube-system get job
    [root@                              ~]# kubectl get job -nkube-system
    NAME                                  COMPLETIONS   DURATION   AGE
    aliyun-cert-renew-master-1            1/1           46s        4m49s
    aliyun-cert-renew-master-2            1/1           28s        4m19s
    aliyun-cert-renew-master-3            1/1           26s        3m48s
    aliyun-cert-renew-worker              6/6           46s        3m18s
    ingress-nginx-admission-create        1/1           29s        3d
    ingress-nginx-admission-patch         1/1           43s        3d
    kube-eventer-init-1.5-5e0e7cl-aliyun  1/1           31s        3d

マスターノード証明書の手動更新

  1. 任意のディレクトリに、次の内容で job-master.yml ファイルを作成します。

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: ${jobname}
      namespace: kube-system
    spec:
      backoffLimit: 0
      completions: 1
      parallelism: 1
      template:
        spec:
          activeDeadlineSeconds: 3600
          affinity:
            nodeAffinity:
              requiredDuringSchedulingIgnoredDuringExecution:
                nodeSelectorTerms:
                - matchExpressions:
                  - key: kubernetes.io/hostname
                    operator: In
                    values:
                    - ${hostname}
          containers:
          - command:
            - /renew/upgrade-k8s.sh
            - --role
            - master
            image: registry.cn-hangzhou.aliyuncs.com/acs/cert-rotate:v1.0.0
            imagePullPolicy: Always
            name: ${jobname}
            securityContext:
              privileged: true
            volumeMounts:
            - mountPath: /alicoud-k8s-host
              name: ${jobname}       
          hostNetwork: true
          hostPID: true
          restartPolicy: Never
          schedulerName: default-scheduler
          securityContext: {}
          tolerations:
          - effect: NoSchedule
            key: node-role.kubernetes.io/master
          volumes:
          - hostPath:
              path: /
              type: Directory
            name: ${jobname}
  2. クラスター内のマスターノードの数と名前を取得します。

    • 方法 1:コマンドラインの使用

      次のコマンドを実行します。

      kubectl get nodes
      [root@xxx            ~]# kubectl get nodes
      NAME               STATUS    ROLES     AGE    VERSION
      cn-hangzhou.ixxx   Ready     <none>    22d    v1.11.2
      cn-hangzhou.ixxx   Ready     <none>    22d    v1.11.2
      cn-hangzhou.ixxx   Ready     master    46d    v1.11.2
      cn-hangzhou.ixxx   Ready     master    46d    v1.11.2
      cn-hangzhou.ixxx   Ready     master    46d    v1.11.2
      cn-hangzhou.ixxx   Ready     <none>    46d    v1.11.2
      cn-hangzhou.ixxx   Ready     <none>    46d    v1.11.2
      [root@xxx            ~]#
    • 方法 2:コンソールの使用

      1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

      2. [クラスター] ページで、管理するクラスターを見つけます。 次に、クラスターの名前をクリックするか、[操作] 列の [詳細] をクリックします。

      3. クラスター管理ページの左側のナビゲーションウィンドウでノード > ノード を選択すると、マスターノードの数、名前、IP アドレス、インスタンス ID が表示されます。

  3. job-master.yml 内の ${jobname} 変数と ${hostname} 変数を置き換えてください。

    sed 's/${jobname}/cert-job-2/g; s/${hostname}/hostname/g' job-master.yml > job-master2.yml

    パラメーター:

    • ${jobname} :Job 名。 この例では、cert-job-2 に設定されています。

    • ${hostname} :マスターノード名。 hostname を手順 2 で取得した名前に置き換えてください。

  4. Job を作成してください。

    kubectl create -f job-master2.yml
  5. Job のステータスを確認してください。 COMPLETIONS1/1 になると、証明書は更新されます。

    kubectl get job -nkube-system
  6. 残りの各マスターノードについて、手順 3〜5 を繰り返してください。

    [root@xxx ~]# kubectl get job -nkube-system
    NAME          COMPLETIONS   DURATION   AGE
    cert-job-2    1/1           46s        22m
    cert-job-3    1/1           28s        2m
    cert-job-4    1/1           26s        1m
    [root@xxx ~]#

ワーカーノード証明書の手動更新

  1. 任意のディレクトリに、次の内容で job-node.yml ファイルを作成します。

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: ${jobname}
      namespace: kube-system
    spec:
      backoffLimit: 0
      completions: ${nodesize}
      parallelism: ${nodesize}
      template:
        spec:
          activeDeadlineSeconds: 3600
          affinity:
            podAntiAffinity:
              requiredDuringSchedulingIgnoredDuringExecution:
              - labelSelector:
                  matchExpressions:
                  - key: job-name
                    operator: In
                    values:
                    - ${jobname}
                topologyKey: kubernetes.io/hostname
          containers:
          - command:
            - /renew/upgrade-k8s.sh
            - --role
            - node
            - --rootkey
            - ${key}
            image: registry.cn-hangzhou.aliyuncs.com/acs/cert-rotate:v1.0.0
            imagePullPolicy: Always
            name: ${jobname}
            securityContext:
              privileged: true
            volumeMounts:
            - mountPath: /alicoud-k8s-host
              name: ${jobname}
          hostNetwork: true
          hostPID: true
          restartPolicy: Never
          schedulerName: default-scheduler
          securityContext: {}
          volumes:
          - hostPath:
              path: /
              type: Directory
            name: ${jobname}
    説明

    ワーカーノードに Taint がある場合は、その Taint に対する tolerationsjob-node.yml ファイルに追加してください。 securityContext: {}volumes: の間に次の内容を追加してください (Taint を持つワーカーノードが n 個ある場合は、このセクションを n 回コピーしてください):

          tolerations:
          - effect: NoSchedule
            key: ${key}
            operator: Equal
            value: ${value}

    ${key}${value}を取得するには:

    1. 任意のディレクトリに、次の内容で taint.tml ファイルを作成します。

      {{printf "%-50s %-12s\n" "Node" "Taint"}}
                          {{- range .items}}
                          {{- if $taint := (index .spec "taints") }}
                          {{- .metadata.name }}{{ "\t" }}
                          {{- range $taint }}
                          {{- .key }}={{ .value }}:{{ .effect }}{{ "\t" }}
                          {{- end }}
                          {{- "\n" }}
                          {{- end}}
                          {{- end}}
    2. Taint が付加されたワーカーノードの ${key}${value} をクエリしてください。

      kubectl get nodes -o go-template-file="taint.tml"
      [root@xxx                       ~]# kubectl get nodes -o go-template-file="taint.tml"
      Node                              Taint
      cn-hangzhou.i-xxx                 key1=value1:NoSchedule
      cn-hangzhou.i-xxx                 node-role.kubernetes.io/master=<no value>:NoSchedule
      cn-hangzhou.i-xxx                 node-role.kubernetes.io/master=<no value>:NoSchedule
      cn-hangzhou.i-xxx                 node-role.kubernetes.io/master=<no value>:NoSchedule
  2. クラスターの CA キーを取得してください。

    sed '1d' /etc/kubernetes/pki/ca.key | base64 -w 0
  3. job-node.yml 内の ${jobname}${nodesize}、および ${key} 変数を置き換えてください。

    sed 's/${jobname}/cert-node-2/g; s/${nodesize}/nodesize/g; s/${key}/key/g' job-node.yml > job-node2.yml

    パラメーター:

    • ${jobname} :Job 名。 この例では、cert-node-2 に設定されています。

    • ${nodesize} :ワーカーノードの数。 ワーカーノードの数を取得するには、「マスターノード証明書の手動更新」の手順 2 をご参照ください。 nodesize を実際の数に置き換えてください。

    • ${key} はクラスターの CA キーです。 key を「ワーカーノード証明書の手動更新」の手順 2 の CA キーに置き換えてください。

  4. Job を作成してください。

    kubectl create -f job-node2.yml
  5. Job のステータスを確認してください。 COMPLETIONS がワーカーノードの数と一致すると、証明書は更新されます。

    kubectl get job -nkube-system
    [root@xxx ~]# kubectl get job -nkube-system
    NAME          COMPLETIONS   DURATION   AGE
    cert-job-2    1/1           46s        1h
    cert-job-3    1/1           28s        47m
    cert-job-4    1/1           26s        46m
    cert-node-2   4/4           46s        1m
    [root@xxx ~]#