Dokumen ini menunjukkan cara menjalankan alat mandiri sebagai persiapan untuk upgrade. Sebelum mengupgrade cluster admin atau pengguna yang menggunakan Google Distributed Cloud versi 1.9 dan yang lebih baru, sebaiknya jalankan alat pra-upgrade.
Untuk menjalankan alat ini, gunakan skrip bash dalam dokumen ini yang menggunakan Secure Hash Algorithms (SHA) yang di-hardcode. Untuk setiap rilis alat ini, dokumen ini akan diperbarui dengan SHA baru. Skrip ini membuat Tugas Kubernetes untuk menjalankan versi pemeriksaan pra-penerbangan tertentu, bergantung pada versi yang Anda upgrade.
Pemeriksaan pra-upgrade
Alat ini memeriksa hal-hal berikut sebelum Anda mengupgrade cluster pengguna:
Kategori | Deskripsi |
---|---|
Kesehatan Cluster |
|
Konfigurasi |
|
Alat ini memeriksa hal berikut sebelum Anda mengupgrade cluster admin:
Kategori | Deskripsi |
---|---|
Kesehatan Cluster | Memvalidasi PodDisruptionBudgets (PDB) di semua
namespace cluster admin. |
Konfigurasi |
|
Bersiap untuk menjalankan alat
Upgrade workstation admin jika Anda belum melakukannya.
Jalankan
gkectl prepare
untuk mengimpor image OS 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 yang ingin Anda upgrade. Format untuk nomor versi harus versi patch lengkap, seperti1.13.10-gke.42
.ADMIN_CLUSTER_KUBECONFIG
: Jalur ke kubeconfig cluster admin.
Jika Anda menggunakan registry pribadi, download image container preflight dengan ringkasan docker yang disediakan, lalu upload image ke registry pribadi. 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 alamat registry pribadi.Dalam skrip bash berikut, tetapkan nilai untuk placeholder ini:
ADMIN_CLUSTER_KUBECONFIG
: Jalur ke kubeconfig cluster admin.REGISTRY_ADDRESS
: Jika cluster admin menggunakan registry pribadi, ini adalah alamat registry pribadi yang Anda tentukan di langkah sebelumnya. Jika Anda tidak menggunakan registry pribadi, tentukan registry 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 cluster pengguna yang akan Anda upgrade.Outputnya mirip dengan hal berikut ini:
job.batch/pre-upgrade-2023-0822-213551 created
Jalankan perintah berikut pada 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 dihasilkan skrip dari langkah sebelumnya.JOB_NAMESPACE
: Nilai yang Anda tetapkan bergantung pada apakah Anda mengupgrade cluster admin atau pengguna. Jika Anda mengupgrade cluster admin, tentukankube-system
. Jika Anda mengupgrade cluster pengguna, tentukanUSER_CLUSTER_NAME-gke-onprem-mgmt
.
Tunggu beberapa menit hingga tugas selesai atau mencapai batas waktu tunggu dan gagal. Dalam hasil, tinjau
Reason
untuk pemeriksaan apa pun dengan statusWarning
,Unknown
, atauFailure
untuk melihat apakah Anda dapat menyelesaikan masalah tersebut.Sebelum mengupgrade cluster, jalankan perintah berikut untuk menghapus Tugas:
kubectl delete jobs JOB_NAME -n JOB_NAMESPACE \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG