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.
Dalam Klaster ACK Dikelola, ACK secara otomatis memperbarui sertifikat untuk node master.
Perbarui sertifikat untuk semua node melalui konsol ACK
Masuk ke Konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.
Pilih klaster yang ingin Anda perbarui sertifikatnya dan klik Update Certificate. Pesan Update Certificate muncul.
CatatanTombol Update Certificate muncul jika sertifikat klaster akan kedaluwarsa dalam sekitar dua bulan.

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 | bashVerifikasi hasil
Klien kubectl terhubung ke klaster. Untuk informasi lebih lanjut, lihat Dapatkan file kubeconfig klaster dan gunakan kubectl untuk terhubung ke klaster.
Jalankan perintah berikut untuk menanyakan node master dan worker di klaster:
kubectl get nodes
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
Secara manual memperbarui sertifikat untuk node master
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}Dapatkan jumlah node master di klaster dan hostname dari setiap node master.
Metode 1: Gunakan CLI
Jalankan perintah berikut:
kubectl get nodes
Metode 2: Gunakan Konsol
Masuk ke Konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.
Di halaman Clusters, temukan klaster yang ingin Anda kelola. Lalu, klik nama klaster atau klik Details di kolom Actions.
Di panel navigasi di sebelah kiri halaman detail klaster, pilih untuk mendapatkan jumlah node master, serta nama, alamat IP, dan ID instance dari setiap node master.
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.ymlDimana:
${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.
Jalankan perintah berikut untuk membuat Job:
kubectl create -f job-master2.ymlJalankan perintah berikut untuk menanyakan Job. Jika nilai di kolom COMPLETIONS adalah 1, itu menunjukkan bahwa sertifikat node master telah diperbarui.
kubectl get job -nkube-systemUlangi Langkah 3 hingga 5 untuk memperbarui sertifikat untuk node master lainnya di klaster.

Secara manual memperbarui sertifikat untuk node worker
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}CatatanJika sebuah node worker memiliki taint, Anda harus menambahkan
tolerationsyang cocok dengan taint di file job-node.yml. Untuk melakukan ini, tambahkan kode berikut antara bagiansecurityContext: {}danvolumes:. 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:
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}}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"
Jalankan perintah berikut untuk mendapatkan kunci Certificate Authority (CA) klaster:
sed '1d' /etc/kubernetes/pki/ca.key | base64 -w 0Jalankan 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.ymlDimana:
${jobname} adalah nama Job. Dalam contoh ini, cert-node-2 digunakan.
${nodesize} adalah jumlah node worker. Untuk informasi lebih lanjut tentang cara mendapatkan nilai ini, lihat Langkah 1 di Secara manual memperbarui sertifikat untuk node worker. Ganti nodesize dengan nilai aktual.
${key} adalah kunci CA klaster. Dalam contoh ini, key diatur ke kunci CA yang diperoleh di Langkah 2 dari Secara manual memperbarui sertifikat untuk node worker.
Jalankan perintah berikut untuk membuat Job:
kubectl create –f job-node2.ymlJalankan 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