全部产品
Search
文档中心

Container Service for Kubernetes:Perbarui Sertifikat yang Akan Kedaluwarsa di Klaster ACK Khusus

更新时间:Jun 26, 2025

Topik ini menjelaskan cara memperbarui sertifikat di Klaster ACK Khusus yang akan segera kedaluwarsa. Semua sertifikat node dapat diperbarui melalui konsol atau baris perintah kubectl. Sebagai alternatif, Anda dapat secara manual memperbarui sertifikat untuk Node Master dan Worker secara terpisah.

Catatan

Dalam Klaster ACK Dikelola, ACK secara otomatis memperbarui sertifikat untuk node master.

Perbarui sertifikat untuk semua node melalui konsol ACK

  1. Masuk ke Konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.

  2. Pilih klaster yang ingin Anda perbarui sertifikatnya dan klik Update Certificate. Pesan Update Certificate muncul.

    Catatan

    Tombol Update Certificate muncul jika sertifikat klaster akan kedaluwarsa dalam sekitar dua bulan.

    Renew Certificate

  3. Di pesan Update Certificate, klik Update Certificate, dan perbarui sertifikat sesuai petunjuk.

    Pesan berikut muncul setelah sertifikat klaster diperbarui:

    • Di pesan Update Certificate, The certificate has been updated muncul.

    • Di halaman Clusters, tombol Update Certificate menghilang.

Perbarui sertifikat untuk semua node menggunakan kubectl

Perbarui sertifikat

Masuk ke node master dari klaster dan jalankan perintah berikut untuk memperbarui sertifikat untuk semua node:

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

Verifikasi hasil

Klien kubectl terhubung ke klaster. Untuk informasi lebih lanjut, lihat Dapatkan file kubeconfig klaster dan gunakan kubectl untuk terhubung ke klaster.
  1. Jalankan perintah berikut untuk menanyakan node master dan worker di klaster:

    kubectl get nodes

    nodes

  2. Jalankan perintah berikut dan verifikasi bahwa nilai di kolom COMPLETIONS setiap node master adalah 1 dan nilai di kolom COMPLETIONS setiap node worker sama dengan jumlah node worker di klaster. Ini menunjukkan bahwa semua sertifikat telah diperbarui.

    kubectl -n kube-system get job

    nodes

Secara manual memperbarui sertifikat untuk node master

  1. Buat file bernama job-master.yml di jalur acak dan salin kode berikut ke dalam file:

    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: null
          tolerations:
          - effect: NoSchedule
            key: node-role.kubernetes.io/master
          volumes:
          - hostPath:
              path: /
              type: Directory
            name: ${jobname}
  2. Dapatkan jumlah node master di klaster dan hostname dari setiap node master.

    • Metode 1: Gunakan CLI

      Jalankan perintah berikut:

      kubectl get nodes

      nodes

    • Metode 2: Gunakan Konsol

      1. Masuk ke Konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.

      2. Di halaman Clusters, temukan klaster yang ingin Anda kelola. Lalu, klik nama klaster atau klik Details di kolom Actions.

      3. Di panel navigasi di sebelah kiri halaman detail klaster, pilih Nodes > Nodes untuk mendapatkan jumlah node master, serta nama, alamat IP, dan ID instance dari setiap node master.

  3. Jalankan perintah berikut untuk menetapkan variabel ${jobname} dan ${hostname} di file job-master.yml:

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

    Dimana:

    • ${jobname} adalah nama Job. Dalam contoh ini, cert-job-2 digunakan.

    • ${hostname} adalah nama node master. Dalam contoh ini, hostname diatur ke nama node master yang diperoleh di Langkah 2.

  4. Jalankan perintah berikut untuk membuat Job:

    kubectl create -f job-master2.yml
  5. Jalankan perintah berikut untuk menanyakan Job. Jika nilai di kolom COMPLETIONS adalah 1, itu menunjukkan bahwa sertifikat node master telah diperbarui.

    kubectl get job -nkube-system
  6. Ulangi Langkah 3 hingga 5 untuk memperbarui sertifikat untuk node master lainnya di klaster.

Secara manual memperbarui sertifikat untuk node worker

  1. Buat file bernama job-node.yml di jalur acak dan salin kode berikut ke dalam file:

    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: null
          volumes:
          - hostPath:
              path: /
              type: Directory
            name: ${jobname}
    Catatan

    Jika sebuah node worker memiliki taint, Anda harus menambahkan tolerations yang cocok dengan taint di file job-node.yml. Untuk melakukan ini, tambahkan kode berikut antara bagian securityContext: {} dan volumes:. Jika Anda memiliki n node worker yang memiliki taint, tambahkan kode berikut sebanyak n kali.

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

    Untuk mendapatkan nilai dari ${name} dan ${value}, lakukan langkah-langkah berikut:

    1. Buat file bernama taint.yml di jalur acak dan salin kode berikut ke dalam file:

      {{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. Jalankan perintah berikut untuk menanyakan nilai dari ${name} dan ${value} untuk node worker yang memiliki taint:

      kubectl get nodes -o go-template-file="taint.tml"

  2. Jalankan perintah berikut untuk mendapatkan kunci Certificate Authority (CA) klaster:

    sed '1d' /etc/kubernetes/pki/ca.key | base64 -w 0
  3. Jalankan perintah berikut untuk menetapkan variabel ${jobname}, ${nodesize}, dan ${key} di file job-node.yml:

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

    Dimana:

  4. Jalankan perintah berikut untuk membuat Job:

    kubectl create –f job-node2.yml
  5. Jalankan perintah berikut untuk menanyakan Job. Jika nilai di kolom COMPLETIONS sama dengan jumlah node worker di klaster, itu menunjukkan bahwa sertifikat semua node worker telah diperbarui.

    kubectl get job –nkube-system

    nodes