Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Update expiring ACK dedicated cluster certificates

Dernière mise à jour :Aug 11, 2026

Renouvelez tous les certificats de nœud d'un ACK dedicated cluster via la console, kubectl ou des jobs Kubernetes manuels.

Remarque

ACK met automatiquement à jour les certificats des nœuds maîtres d'un ACK managed cluster. Aucune intervention manuelle n'est nécessaire.

Mettre à jour tous les certificats de nœud dans la console

  1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.

  2. Cliquez sur Update Certificate à côté du cluster dont le certificat arrive à expiration. La page Update Certificate s'ouvre.

    Remarque

    Le bouton Update Certificate apparaît pour les clusters dont les certificats expirent dans environ deux mois.

    Dans la liste des clusters, cliquez sur Update Certificate dans la colonne Actions.

  3. Sur la page Update Certificate, cliquez sur Update Certificate et suivez les instructions.

    Après la mise à jour :

    • La page Update Certificate affiche un message de réussite tel que The certificate has been updated..

    • Sur la page Clusters, l'invite Update Certificate associée au cluster disparaît.

Mettre à jour automatiquement tous les certificats de nœud avec kubectl

Mettre à jour les certificats

Sur n'importe quel nœud maître, mettez à jour tous les certificats de nœud :

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

Vérifier le résultat

Assurez-vous d'être connecté au cluster avec kubectl. Consultez Se connecter à un cluster Kubernetes à l'aide de kubectl .
  1. Consultez l'état des nœuds maîtres et de travail.

    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. Vérifiez l'état des jobs. La mise à jour est terminée lorsque le champ COMPLETIONS de chaque job de nœud maître est défini sur 1/1 et que le nombre de complétions des jobs des nœuds de travail correspond au nombre total de worker node du 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

Mettre à jour manuellement les certificats des nœuds maîtres

  1. Dans n'importe quel répertoire, créez un fichier job-master.yml contenant le code suivant.

    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. Récupérez le nombre et les noms des nœuds maîtres du cluster.

    • Méthode 1 : Utiliser la ligne de commande

      Exécutez la commande suivante :

      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éthode 2 : Utiliser la console

      1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.

      2. Sur la page Clusters, cliquez sur le nom du cluster cible ou sur Details dans la colonne Actions.

      3. Dans le volet de navigation de gauche de la page de gestion du cluster, sélectionnez Nodes > Nodes pour afficher le nombre de nœuds maîtres, leurs noms, adresses IP et ID d'instance.

  3. Remplacez les variables ${jobname} et ${hostname} dans le fichier job-master.yml.

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

    Paramètres :

    • ${jobname} : nom du job. Dans cet exemple, définissez-le sur cert-job-2.

    • ${hostname} : nom d'un nœud maître. Remplacez hostname par le nom obtenu à l'étape 2.

  4. Créez le job.

    kubectl create -f job-master2.yml
  5. Vérifiez l'état du job. Le certificat est mis à jour lorsque le champ COMPLETIONS indique 1/1.

    kubectl get job -nkube-system
  6. Répétez les étapes 3 à 5 pour chaque nœud maître restant.

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

Mettre à jour manuellement les certificats des nœuds de travail

  1. Dans n'importe quel répertoire, créez un fichier job-node.yml contenant le code suivant.

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

    Si un nœud de travail possède un Taint, ajoutez une tolérance tolerations correspondante au fichier job-node.yml. Ajoutez le contenu suivant entre securityContext: {} et volumes: (si vous avez n nœuds de travail avec des Taints, copiez cette section n fois) :

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

    Pour obtenir ${key} et ${value} :

    1. Dans n'importe quel répertoire, créez un fichier taint.tml contenant le code suivant.

      {{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. Interrogez ${name} et ${value} du nœud de travail comportant un 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. Récupérez la clé CA du cluster.

    sed '1d' /etc/kubernetes/pki/ca.key | base64 -w 0
  3. Remplacez les variables ${jobname}, ${nodesize} et ${key} dans le fichier job-node.yml.

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

    Paramètres :

  4. Créez le job.

    kubectl create -f job-node2.yml
  5. Vérifiez l'état du job. Les certificats sont mis à jour lorsque le champ COMPLETIONS correspond au nombre de nœuds de travail.

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