Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Atualizar certificados expirados de cluster dedicado ACK

Última atualização: Jun 27, 2026

Renove todos os certificados de nó em um cluster dedicado ACK pelo console, kubectl ou jobs manuais do Kubernetes.

Nota

O ACK atualiza automaticamente os certificados dos nós mestre em um cluster gerenciado ACK. Nenhuma operação manual é necessária.

Atualizar todos os certificados de nó no console

  1. Faça login no console ACK. No painel de navegação à esquerda, clique em Clusters.

  2. Clique em Update Certificate ao lado do cluster com certificado prestes a expirar. A página Update Certificate será aberta.

    Nota

    O botão Update Certificate aparece para clusters cujos certificados expiram em aproximadamente dois meses.

    Na lista de clusters, clique em Update Certificate na coluna Actions.

  3. Na página Update Certificate, clique em Update Certificate e siga as instruções na tela.

    Após a atualização:

    • A página Update Certificate exibe uma mensagem de sucesso, como The certificate has been updated..

    • Na página Clusters, o aviso de Update Certificate para o cluster desaparece.

Atualizar automaticamente todos os certificados de nó com kubectl

Atualizar certificados

Em qualquer nó mestre, atualize todos os certificados de nó:

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

Verificar o resultado

Certifique-se de estar conectado ao cluster com kubectl. Consulte Conectar-se a um cluster Kubernetes usando kubectl .
  1. Visualize o status dos nós mestre e worker.

    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. Verifique o status dos jobs. A atualização estará concluída quando COMPLETIONS de cada job de nó mestre for 1/1 e as conclusões do job de nó worker corresponderem ao total de nós worker no cluster.

    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

Atualizar manualmente os certificados dos nós mestre

  1. Em qualquer diretório, crie um arquivo job-master.yml com o seguinte conteúdo.

    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. Obtenha a quantidade e os nomes dos nós mestre no cluster.

    • Método 1: Linha de comando

      Execute o seguinte comando:

      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            ~]#
    • Método 2: Console

      1. Faça login no console ACK. No painel de navegação à esquerda, clique em Clusters.

      2. Na página Clusters, clique no nome do cluster de destino ou em Details na coluna Actions.

      3. No painel de navegação à esquerda da página de gerenciamento do cluster, escolha Nodes > Nodes para visualizar a quantidade, nomes, IPs e IDs das instâncias dos nós mestre.

  3. Substitua as variáveis ${jobname} e ${hostname} no arquivo job-master.yml.

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

    Parâmetros:

    • ${jobname}: nome do job. Neste exemplo, defina como cert-job-2.

    • ${hostname}: nome de um nó mestre. Substitua hostname pelo nome obtido na Etapa 2.

  4. Crie o job.

    kubectl create -f job-master2.yml
  5. Verifique o status do job. O certificado será atualizado quando COMPLETIONS for 1/1.

    kubectl get job -nkube-system
  6. Repita as Etapas 3 a 5 para cada nó mestre restante.

    [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 ~]#

Atualizar manualmente os certificados dos nós worker

  1. Em qualquer diretório, crie um arquivo job-node.yml com o seguinte conteúdo.

    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}
    Nota

    Se um nó worker tiver um Taint, adicione uma tolerations para esse Taint no arquivo job-node.yml. Insira o seguinte conteúdo entre securityContext: {} e volumes: (se houver n nós worker com Taints, copie esta seção n vezes):

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

    Para obter ${key} e ${value}:

    1. Em qualquer diretório, crie um arquivo taint.tml com o seguinte conteúdo.

      {{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. Consulte o ${name} e o ${value} do nó worker com Taint.

      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. Obtenha a chave CA do cluster.

    sed '1d' /etc/kubernetes/pki/ca.key | base64 -w 0
  3. Substitua as variáveis ${jobname}, ${nodesize} e ${key} no arquivo job-node.yml.

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

    Parâmetros:

  4. Crie o job.

    kubectl create -f job-node2.yml
  5. Verifique o status do job. Os certificados serão atualizados quando COMPLETIONS corresponder ao número de nós worker.

    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 ~]#