Dokumen ini menunjukkan cara menjalankan alat mandiri sebagai persiapan untuk {i>upgrade.<i} Sebelum mengupgrade admin atau cluster pengguna yang ada di Google Distributed Cloud versi 1.9 dan versi yang lebih baru, sebaiknya jalankan alat pra-upgrade.
Untuk menjalankan alat ini, gunakan skrip bash dalam dokumen ini yang menggunakan {i>Secure Hash Algorithms <i}(SHA) yang di-hard code. Untuk setiap rilis alat, dokumen akan diperbarui dengan SHA baru. Skrip membuat Tugas Kubernetes menjalankan pemeriksaan preflight versi tertentu, bergantung pada versi yang dipilih. meng-upgrade.
Pemeriksaan pra-upgrade
Alat ini akan memeriksa hal berikut sebelum Anda mengupgrade cluster pengguna:
Kategori | Deskripsi |
---|---|
Kondisi Cluster |
|
Konfigurasi |
|
Alat ini akan memeriksa hal berikut sebelum Anda mengupgrade cluster admin:
Kategori | Deskripsi |
---|---|
Kondisi Cluster | Memvalidasi PodDisruptionBudgets (PDB) di semua
namespace cluster admin. |
Konfigurasi |
|
Mempersiapkan untuk menjalankan alat
Mengupgrade workstation admin Anda jika Anda belum melakukannya.
Jalankan
gkectl prepare
untuk mengimpor OS image ke vSphere jika Anda belum melakukannya:gkectl prepare \ --bundle-path /var/lib/gke/bundles/gke-onprem-vsphere-TARGET_VERSION.tgz \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Ganti kode berikut:
TARGET_VERSION
: Versi patch Google Distributed Cloud tujuan upgrade. Format untuk nomor versi harus versi patch lengkap, seperti1.13.10-gke.42
.ADMIN_CLUSTER_KUBECONFIG
: Jalur ke admin {i>cluster kubeconfig<i}.
Jika Anda menggunakan registry pribadi, download container preflight gambar lengkap dengan docker digest yang disediakan, lalu upload gambar tersebut ke {i>registry<i}. Jika Anda tidak menggunakan registry pribadi, lanjutkan ke langkah berikutnya.
export SRC_IMAGE=gcr.io/gke-on-prem-release/preflight@sha256:9704315c6637750a014d0079ca04a8f97d0ca3735e175020377107c3181f6234 export DST_IMAGE=REGISTRY_ADDRESS/preflight:$(date +%Y-%m%d-%H%M%S) docker pull $SRC_IMAGE docker tag $SRC_IMAGE $DST_IMAGE docker push $DST_IMAGE
Ganti
REGISTRY_ADDRESS
dengan registry pribadi alamat IPv6Dalam skrip bash berikut, tetapkan nilai untuk placeholder ini:
ADMIN_CLUSTER_KUBECONFIG
: Jalur ke admin {i>cluster kubeconfig<i}.REGISTRY_ADDRESS
: Jika cluster admin menggunakan registry pribadi, ini adalah alamat {i> registry<i} pribadi yang Anda tentukan di langkah sebelumnya. Jika Anda tidak menggunakan registry pribadi, tentukan kantor pendaftaran publik:gcr.io/gke-on-prem-release
#!/bin/bash UPGRADE_TARGET_VERSION=${1} CLUSTER_NAME=${2} ADMIN_KUBECONFIG=ADMIN_CLUSTER_KUBECONFIG REGISTRY_ADDRESS=REGISTRY_ADDRESS pre_upgrade_namespace=kube-system if [[ -z "$CLUSTER_NAME" ]] then echo "Running the pre-ugprade tool before admin cluster upgrade" else echo "Running the pre-ugprade tool before user cluster upgrade" pre_upgrade_namespace=$CLUSTER_NAME-gke-onprem-mgmt fi kubectl apply --kubeconfig ${ADMIN_KUBECONFIG} -f - <<EOF apiVersion: v1 kind: ServiceAccount metadata: name: pre-upgrade-job namespace: $pre_upgrade_namespace EOF kubectl apply --kubeconfig ${ADMIN_KUBECONFIG} -f - <<EOF apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: creationTimestamp: null name: pre-upgrade-job-rolebinding-in-$pre_upgrade_namespace roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: onprem-user-cluster-controller-role subjects: - kind: ServiceAccount name: pre-upgrade-job namespace: $pre_upgrade_namespace EOF kubectl apply --kubeconfig ${ADMIN_KUBECONFIG} -f - <<EOF apiVersion: batch/v1 kind: Job metadata: name: pre-upgrade-$(date +%Y-%m%d-%H%M%S) namespace: $pre_upgrade_namespace labels: onprem.cluster.gke.io/job-usage: preflight spec: ttlSecondsAfterFinished: 2592000 backoffLimit: 2 template: metadata: labels: onprem.cluster.gke.io/pod-usage: preflight spec: containers: - name: preflight image: $REGISTRY_ADDRESS/preflight@sha256:9704315c6637750a014d0079ca04a8f97d0ca3735e175020377107c3181f6234 imagePullPolicy: Always command: - /preflight - --upgrade-target-version - "$UPGRADE_TARGET_VERSION" - --cluster-name - "$CLUSTER_NAME" - --scenario - pre-upgrade restartPolicy: Never serviceAccountName: pre-upgrade-job imagePullSecrets: - name: private-registry-creds EOF
Simpan skrip bash di atas ke file bernama
pre-upgrade.sh
dan buat file tersebut dapat dieksekusi:chmod +x pre-upgrade.sh
Jalankan skrip:
Argumen yang Anda berikan saat menjalankan skrip bergantung pada apakah Anda mengupgrade cluster pengguna atau cluster admin:
- Sebelum mengupgrade cluster admin, jalankan skrip sebagai berikut:
./pre-upgrade.sh TARGET_VERSION
- Sebelum mengupgrade cluster pengguna:
./pre-upgrade.sh TARGET_VERSION USER_CLUSTER_NAME
Ganti
USER_CLUSTER_NAME
dengan nama pengguna yang akan Anda upgrade.Outputnya mirip dengan hal berikut ini:
job.batch/pre-upgrade-2023-0822-213551 created
Jalankan perintah berikut di Pod yang dikontrol oleh tugas untuk mendapatkan daftar hasil validasi.
kubectl logs -n JOB_NAMESPACE jobs/JOB_NAME \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Ganti kode berikut:
JOB_NAME
: Ini adalah nama tugas yang skrip output dari langkah sebelumnya.JOB_NAMESPACE
: Nilai yang Anda tetapkan bergantung pada baik Anda mengupgrade cluster admin atau pengguna. Jika Anda mengupgrade cluster admin, tentukankube-system
. Jika Anda mengupgrade cluster pengguna, menentukanUSER_CLUSTER_NAME-gke-onprem-mgmt
.
Tunggu beberapa menit sampai tugas selesai atau sampai batas backoff dan gagal. Dalam hasilnya, tinjau
Reason
untuk memeriksa apakah ada pemeriksaan dengan statusWarning
,Unknown
, atauFailure
untuk mengetahui apakah Anda dapat menyelesaikan menyelesaikan masalah.Sebelum mengupgrade cluster, jalankan perintah berikut untuk menghapus Tugas:
kubectl delete jobs JOB_NAME -n JOB_NAMESPACE \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG