Perbarui semua sertifikat node di ACK dedicated cluster melalui Konsol, kubectl, atau pekerjaan Kubernetes manual.
ACK secara otomatis memperbarui sertifikat node master di ACK managed cluster. Tidak diperlukan operasi manual.
Perbarui semua sertifikat node di konsol
Masuk ke ACK console. Di panel navigasi kiri, klik Clusters.
-
Klik Update Certificate di sebelah kluster yang sertifikatnya akan kedaluwarsa. Halaman Update Certificate akan terbuka.
CatatanTombol Update Certificate muncul untuk kluster yang sertifikatnya akan kedaluwarsa dalam waktu sekitar dua bulan.
Di daftar kluster, klik Update Certificate pada kolom Actions.
-
Di halaman Update Certificate, klik Update Certificate dan ikuti petunjuk yang muncul.
Setelah pembaruan:
-
Halaman Update Certificate menampilkan pesan sukses seperti The certificate has been updated..
-
Di halaman Clusters, prompt Update Certificate untuk kluster tersebut menghilang.
-
Perbarui semua sertifikat node secara otomatis dengan kubectl
Perbarui sertifikat
Di salah satu node master, perbarui semua sertifikat node:
curl http://aliacs-k8s-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/public/cert-update/renew.sh | bash
Verifikasi hasilnya
Pastikan Anda telah terhubung ke kluster menggunakan kubectl. Lihat Hubungkan ke kluster Kubernetes menggunakan kubectl.
-
Lihat status node master dan node pekerja.
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 ~]# -
Periksa status pekerjaan. Pembaruan selesai ketika nilai COMPLETIONS untuk setiap pekerjaan node master adalah 1/1 dan jumlah penyelesaian pekerjaan node pekerja sesuai dengan total jumlah worker node di kluster.
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
Perbarui sertifikat node master secara manual
-
Di direktori mana pun, buat file job-master.yml dengan konten berikut.
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} -
Dapatkan jumlah dan nama node master di kluster.
-
Metode 1: Gunakan command line
Jalankan perintah berikut:
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 ~]# -
Metode 2: Gunakan konsol
Masuk ke ACK console. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, klik nama kluster tujuan atau klik Details di kolom Actions.
-
Di panel navigasi kiri halaman manajemen kluster, pilih untuk melihat jumlah, nama, IP, dan ID instans node master.
-
-
Ganti variabel ${jobname} dan ${hostname} dalam file job-master.yml.
sed 's/${jobname}/cert-job-2/g; s/${hostname}/hostname/g' job-master.yml > job-master2.ymlParameter:
-
${jobname}: nama pekerjaan. Dalam contoh ini, diatur menjadi cert-job-2.
-
${hostname}: nama node master. Ganti hostname dengan nama yang diperoleh pada Langkah 2.
-
-
Buat pekerjaan tersebut.
kubectl create -f job-master2.yml -
Periksa status pekerjaan. Sertifikat telah diperbarui ketika nilai COMPLETIONS adalah 1/1.
kubectl get job -nkube-system -
Ulangi Langkah 3–5 untuk setiap node master yang tersisa.
[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 ~]#
Perbarui sertifikat node pekerja secara manual
-
Di direktori mana pun, buat file job-node.yml dengan konten berikut.
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}CatatanJika node pekerja memiliki Taint, tambahkan
tolerationsuntuk Taint tersebut ke file job-node.yml. Tambahkan konten berikut di antarasecurityContext: {}danvolumes:(jika Anda memiliki n node pekerja dengan Taint, salin bagian ini sebanyak n kali):tolerations: - effect: NoSchedule key: ${key} operator: Equal value: ${value}Untuk mendapatkan ${key} dan ${value}:
-
Di direktori mana pun, buat file taint.tml dengan konten berikut.
{{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}} -
Kueri ${name} dan ${value} dari node pekerja yang memiliki 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
-
-
Dapatkan kunci CA kluster.
sed '1d' /etc/kubernetes/pki/ca.key | base64 -w 0 -
Ganti variabel ${jobname}, ${nodesize}, dan ${key} dalam file job-node.yml.
sed 's/${jobname}/cert-node-2/g; s/${nodesize}/nodesize/g; s/${key}/key/g' job-node.yml > job-node2.ymlParameter:
-
${jobname}: nama pekerjaan. Dalam contoh ini, diatur menjadi cert-node-2.
-
${nodesize}: jumlah node pekerja. Lihat Langkah 2 di bagian Perbarui sertifikat node master secara manual untuk mendapatkan jumlah node pekerja. Ganti nodesize dengan jumlah aktual.
-
${key} adalah CAKey kluster. Ganti key dengan CAKey dari Langkah 2 di Perbarui sertifikat node pekerja secara manual.
-
-
Buat pekerjaan tersebut.
kubectl create -f job-node2.yml -
Periksa status pekerjaan. Sertifikat telah diperbarui ketika nilai COMPLETIONS sesuai dengan jumlah node pekerja.
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 ~]#