Artifact Registry
Error rekonsiliasi subkomponen sar-failoverregistry
Versi: 1.13.1, 1.13.3, 1.13.4
Gejala: Saat membuat cluster admin root dengan perintah gdcloud system admin-cluster install, operasi dapat gagal jika ada daftar server yang panjang saat bootstrapping. Pesan output error adalah sebagai berikut:
Secret "sar-failoveregistry-backend-parameter" is invalid: data: Too long: must have at most 1048576 bytes
Solusi: Untuk mengurangi masalah ini, ikuti langkah-langkah berikut:
Di cluster Kubernetes yang sama dengan subkomponen, cantumkan server dan konfirmasi bahwa setiap resource kustom server memiliki label dengan kunci sebagai
cluster.private.gdc.goog/inventory-machine:kubectl get servers -n gpc-systemTemukan resource kustom komponen yang terlihat seperti berikut:
apiVersion: lcm.private.gdc.goog/v1 kind: Component metadata: creationTimestamp: "2025-01-06T12:00:41Z" generation: 1 name: sar-v1.14.2-sar-acbf97caf6 resourceVersion: "3199" uid: 681ec5cb-9eb3-423b-ac1d-f6aa27abfd75 spec: name: sarDi resource kustom komponen System Artifact Registry (SAR), tambahkan pemilih label di server
runtimeParameterSourcesuntuksar-failover-registry:Melihat resource
serveryang ada:servers: targetCluster: Local object: apiVersion: system.private.gdc.goog/v1alpha1 kind: ServerList namespace: gpc-systemPerbarui kolom server di resource kustom komponen:
servers: targetCluster: Local object: apiVersion: system.private.gdc.goog/v1alpha1 kind: ServerList namespace: gpc-system labelSelector: - key: cluster.private.gdc.goog/inventory-machine operator: "in" strValues: - "bm-1" - "bm-2" - "bm-3"
Verifikasi bahwa perubahan pada komponen SAR di langkah sebelumnya diteruskan ke subkomponen
sar-failverregistry:Dapatkan detail komponen SAR:
kubectl get component | grep sarDapatkan detail komponen
sar-failoverregistry:kubectl get subcomponent sar-failoverregistry -n rootGunakan flag
-nuntuk menentukan namespace.
Pencadangan dan pemulihan
Snapshot gagal karena ruang volume tidak cukup
Versi: Semua versi 1.13.x
Gejala: Ada masalah sesekali dengan pencadangan volume persisten yang dapat memengaruhi alur kerja tugas pencadangan berkala. Untuk beberapa volume dengan laju perubahan yang tinggi, snapshot volume yang diambil untuk pencadangan berkelanjutan dapat menyebabkan volume kehabisan ruang, yang kemudian membuat volume menjadi mode hanya baca.
Solusi: Untuk menghindari potensi dampak pada workload produksi, ikuti langkah-langkah dalam runbook BACK-R0104. Secara opsional, Anda juga dapat menghapus snapshot yang terakumulasi dengan mengikuti runbook BACK-R0106.
Pod bidang kontrol dan agen dimulai ulang karena kurangnya memori
Versi: Semua versi 1.13.x
Gejala: Pod agen dan bidang kontrol dapat dimulai ulang jika kehabisan memori.
Solusi: Tingkatkan memori untuk pod agen dan bidang kontrol dengan mengikuti petunjuk dalam runbook BACK-R0005. Tingkatkan memori untuk pod menjadi 2 GiB.
Pencadangan gagal untuk snapshot PVC
Versi: Semua versi 1.13.x
Gejala: Kegagalan pencadangan terjadi karena melebihi batas snapshot ONTAP, yaitu 1023 per resource
PersistentVolumeClaim (PVC).
Solusi: Untuk mengurangi masalah ini, ikuti langkah-langkah berikut:
Perbarui rencana pencadangan agar batas tidak pernah tercapai. Konfigurasi rencana pencadangan untuk melakukan pencadangan setiap jam atau kurangi
deleteLockDaysmenjadi tiga agar jumlah snapshot tidak bertambah lebih dari 1023:apiVersion: backup.gdc.goog/v1 kind: BackupPlan metadata: name: test-backup-plan spec: clusterName: system-cluster backupSchedule: cronSchedule: "*/10 * * * *" paused: false backupConfig: backupScope: selectedApplications: namespacedNames: - name: test-protected-application namespace: release-namespace backupRepository: gdchservices-backup-repository includeVolumeData: true volumeStrategy: LocalSnapshotOnly retentionPolicy: backupDeleteLockDays: LOCK_DAYS backupRetainDays: RETENTION_DAYSGanti kode berikut:
LOCK_DAYS: mengunci penghapusan cadangan selama jumlah hari yang ditentukan setelah pembuatan cadangan. Gunakan nilai berikut:- Jika kolom
volumeStrategyditetapkan ke nilaiLocalSnapshotOnly, gunakan nilai2. - Jika kolom
volumeStrategyditetapkan ke nilaiProvisionerSpecific, gunakan nilai7.
- Jika kolom
RETENTION_DAYS: menghapus cadangan setelah jumlah hari yang ditentukan setelah pembuatan cadangan. Jika kolomvolumeStrategyditetapkan ke nilaiLocalSnapshotOnly, gunakan nilai yang kurang dari3.
Untuk menghapus snapshot berlebih secara manual dari lingkungan Anda menggunakan perintah penghapusan snapshot volume, ikuti langkah-langkah berikut:
Lakukan inisialisasi variabel:
export RKCNF=/root/release/root-admin/root-admin-kubeconfig export KCNF=/root/release/org-admin/gdchservices-admin-kubeconfig export ORG_NAME=ORG_NAME export PVC=PVC_NAMEGanti kode berikut:
ORG_NAME: nama organisasi Anda.PVC_NAME: nama resourcePVCyang terkait dengan rencana cadangan.
NetApp ONTAP adalah sistem operasi yang digunakan untuk mengelola penyimpanan untuk GDC. Mendapatkan akses ONTAP:
export USERNAME="$(kubectl --kubeconfig ${RKCNF?} -n gpc-system get secret storage-root-level1 -o jsonpath='{.data.username}' | base64 -d)" export MGMT_IP="$(kubectl --kubeconfig ${RKCNF?} get storagecluster -A -o jsonpath='{.items[0].spec.network.clusterManagement.ip}')" export PASSWORD="$(kubectl --kubeconfig ${RKCNF?} -n gpc-system get secret storage-root-level1 -o jsonpath='{.data.password}' | base64 -d)" echo $PASSWORDMencantumkan semua snapshot untuk resource
PVCyang dipilih:ssh ${USERNAME?}@${MGMT_IP?} "volume snapshot show -vserver ${ORG_NAME?} -fields volume,snapshot,size,create-time" | grep "snapshot-" > /tmp/snapshot_unsort.listGunakan sandi dari langkah sebelumnya untuk login ke mesin di alamat IP yang ditentukan oleh variabel
MGMT_IP.Temukan PVC dengan jumlah snapshot tertinggi:
grep ${ORG_NAME?} /tmp/snapshot_unsort.list | grep snapshot | awk '{print $2}' | sort | uniq -cTetapkan nama resource
PVCke nama resource dengan jumlah snapshot yang tinggi:export PV_NAME=Hapus snapshot untuk resource
PVCyang berisi jumlah snapshot tinggi. Batas jumlah snapshot untuk resourcePVCadalah 1023:for snap_name in `grep ${ORG_NAME?} /tmp/snapshot_unsort.list | grep snapshot | grep ${PV_NAME?} | awk '{print $3}'` do echo "volume snapshot delete -vserver ${ORG_NAME} -volume ${PV_NAME} -snapshot $snap_name" echo "Y" doneLogin ke ONTAP dan jalankan perintah berikut untuk menghapus snapshot:
echo $PASSWORD #Use this password to login to ontap ssh ${username?}@${mgmt_ip?}Jalankan perintah yang tercantum di langkah sebelumnya untuk menghapus snapshot. Setelah selesai, keluar dari sesi SSH
Ulangi langkah-langkah penghapusan hingga semua snapshot
PVCyang melanggar dibersihkan.
Memulihkan dari cadangan yang tidak kompatibel dengan kuota SVM
Versi: 1.13.1
Gejala: Masalahnya adalah inkompatibilitas antara fitur NetApp. Ketidakcocokan ini mencegah pengiriman kuota tenant dan keberhasilan penerapan pemulihan. Masalah ini hanya terjadi saat memulihkan cadangan ke cluster pengguna yang dibatasi kuotanya.
Solusi: Jika masalah ini terjadi, pemulihan akan gagal dengan pesan error DP volumes are not supported on storage-limit enabled Vserver dan Operator Infrastruktur (IO) harus menonaktifkan kuota untuk cluster pengguna tersebut dan memulai ulang proses pemulihan. Setelah pemulihan selesai, IO harus mengaktifkan kembali kuota tenant dan sistem akan terus berfungsi sebagaimana mestinya. Lihat runbook FILE A0030 untuk mengetahui detail selengkapnya.
Penagihan
Metrik penagihan tidak ditampilkan dengan benar di dasbor penagihan
Versi: 1.13.1
Gejala: Metrik penagihan tidak dipancarkan dengan benar ke cortex karena MetricsProxySidecar tidak ada.
Solusi sementara: Buat resource billing-monetizer MetricsProxySidecar. Kemudian, jalankan skrip untuk memperbarui metricExpression.
Ekspor variabel kubeconfig berikut:
export KUBECONFIG=KUBECONFIG_PATHGanti variabel
KUBECONFIG_PATHdengan jalur ke file kubeconfig untuk cluster admin org. Ikuti langkah-langkah di Service-manual IAM-R0101 untuk membuat filekubeconfigyang diperlukan untuk solusi ini.Buat resource
billing-monetizerMetricsProxySidecaruntuk namespacebilling-systemdanpartner-billing-system:Untuk
billing-system:cat <<EOF | kubectl --kubeconfig=$KUBECONFIG apply -n billing-system -f - apiVersion: monitoring.private.gdc.goog/v1alpha1 kind: MetricsProxySidecar metadata: name: billing-monetizer namespace: billing-system annotations: lcm.private.gdc.goog/claim-by-force: "true" helm.sh/resource-policy: keep spec: restartUninjectedPods: true restartUnsyncedPods: false sources: - port: 8080 scrapeInterval: 60s destinations: - certificate: secretName: billing-monetizer-monitoring-target-infra-obs-cert port: 9090 - certificate: secretName: billing-monetizer-monitoring-target-platform-obs-cert port: 9091 --- apiVersion: monitoring.private.gdc.goog/v1alpha1 kind: MetricsProxySidecar metadata: name: usagemetering namespace: billing-system annotations: lcm.private.gdc.goog/claim-by-force: "true" helm.sh/resource-policy: keep spec: restartUninjectedPods: true restartUnsyncedPods: false sources: - port: 8099 scrapeInterval: 60s destinations: - port: 9090 certificate: secretName: bil-usagemetering-monitoring-target-cert EOFUntuk
partner-billing-system:cat <<EOF | kubectl --kubeconfig=$KUBECONFIG apply -n partner-billing-system -f - apiVersion: monitoring.private.gdc.goog/v1alpha1 kind: MetricsProxySidecar metadata: name: billing-monetizer namespace: partner-billing-system annotations: lcm.private.gdc.goog/claim-by-force: "true" helm.sh/resource-policy: keep spec: restartUninjectedPods: true restartUnsyncedPods: false sources: - port: 8080 scrapeInterval: 60s destinations: - certificate: secretName: billing-monetizer-monitoring-target-infra-obs-cert port: 9090 EOFJalankan skrip berikut untuk memperbarui
metricExpression. Tindakan ini akan menghapuscontainer_name="monetizer"dariskuconfig, yang mencakupbilling_total_cost{container_name="monetizer":cat <<EOF | kubectl --kubeconfig=$KUBECONFIG -n billing-system patch skuconfig bc73-b150-e0ea --type=merge -p ' { "metricMappingTimeline": [ { "billingModel": "Generic", "usageAggregationLevel": "Organization", "revision": 1, "generic": { "metricExpression": "sum( increase( billing_total_cost{sku !~ \"BC4D-B784-EA3C|BC73-B150-E0EA|BD0C-C8CF-658B|BD1A-9464-9DF9|BD5A-044C-4860|BDB4-6C62-00BE|BDB4-BBA6-3EEE|3034-EE51-7404|3160-1596-5D9B|54AD-8EBC-8BB1\"}\n [{{.Range}}:1m] ) ) * max(metering_premium_support_base_fee)" } } ] }' EOF cat <<EOF | kubectl --kubeconfig=$KUBECONFIG -n billing-system patch skuconfig bd1a-9464-9df9 --type=merge -p ' { "metricMappingTimeline": [ { "billingModel": "Generic", "usageAggregationLevel": "Organization", "revision": 1, "generic": { "metricExpression": "sum( increase( billing_total_cost{sku !~ \"BC4D-B784-EA3C|BC73-B150-E0EA|BD0C-C8CF-658B|BD1A-9464-9DF9|BD5A-044C-4860|BDB4-6C62-00BE|BDB4-BBA6-3EEE|3034-EE51-7404|3160-1596-5D9B|54AD-8EBC-8BB1\"}\n [{{.Range}}:1m] ) ) * max(metering_enhanced_support_base_fee)" } } ] }' EOF cat <<EOF | kubectl --kubeconfig=$KUBECONFIG -n billing-system patch skuconfig b93c-effb-6d6b --type=merge -p ' { "metricMappingTimeline": [ { "billingModel": "Generic", "usageAggregationLevel": "Organization", "revision": 1, "generic": { "metricExpression": "sum( increase( billing_total_cost{sku !~ \"B853-4EA7-4587|B871-C5E5-BAC1|B874-4D01-5058|B8D9-1200-1016|B93C-EFFB-6D6B|B995-6E8E-BF8D|B9B4-1B11-A9F1|B9B5-DFDA-8526|BA38-E4BE-BA5D|BB08-6B46-E1B3|BB51-EA7D-1728|BBE8-7B7A-03DE|BBF1-CE8E-CD24|BC4C-AC45-6448|34A1-F9B1-DC13|53F3-F2F8-54A9|3674-F9D1-120A|5463-A50F-B07D\"}\n [{{.Range}}:1m] ) ) * max(metering_premium_support_base_fee)" } } ] }' EOF cat <<EOF | kubectl --kubeconfig=$KUBECONFIG -n billing-system patch skuconfig b871-c5e5-bac1 --type=merge -p ' { "metricMappingTimeline": [ { "billingModel": "Generic", "usageAggregationLevel": "Organization", "revision": 1, "generic": { "metricExpression": "sum( increase( billing_total_cost{sku !~ \"B853-4EA7-4587|B871-C5E5-BAC1|B874-4D01-5058|B8D9-1200-1016|B93C-EFFB-6D6B|B995-6E8E-BF8D|B9B4-1B11-A9F1|B9B5-DFDA-8526|BA38-E4BE-BA5D|BB08-6B46-E1B3|BB51-EA7D-1728|BBE8-7B7A-03DE|BBF1-CE8E-CD24|BC4C-AC45-6448|34A1-F9B1-DC13|53F3-F2F8-54A9|3674-F9D1-120A|5463-A50F-B07D\"}\n [{{.Range}}:1m] ) ) * max(metering_enhanced_support_base_fee)" } } ] }' EOF cat <<EOF | kubectl --kubeconfig=$KUBECONFIG -n billing-system patch skuconfig ba38-e4be-ba5d --type=merge -p ' { "metricMappingTimeline": [ { "billingModel": "Generic", "usageAggregationLevel": "Organization", "revision": 1, "generic": { "metricExpression": "sum( increase( billing_total_cost{sku !~ \"B853-4EA7-4587|B871-C5E5-BAC1|B874-4D01-5058|B8D9-1200-1016|B93C-EFFB-6D6B|B995-6E8E-BF8D|B9B4-1B11-A9F1|B9B5-DFDA-8526|BA38-E4BE-BA5D|BB08-6B46-E1B3|BB51-EA7D-1728|BBE8-7B7A-03DE|BBF1-CE8E-CD24|BC4C-AC45-6448|34A1-F9B1-DC13|53F3-F2F8-54A9|3674-F9D1-120A|5463-A50F-B07D\"}\n [{{.Range}}:1m] ) ) * max(metering_enhanced_support_base_fee)" } } ] }' EOF cat <<EOF | kubectl --kubeconfig=$KUBECONFIG -n billing-system patch skuconfig bbe8-7b7a-03de --type=merge -p ' { "metricMappingTimeline": [ { "billingModel": "Generic", "usageAggregationLevel": "Organization", "revision": 1, "generic": { "metricExpression": "sum( increase( billing_total_cost{sku !~ \"B853-4EA7-4587|B871-C5E5-BAC1|B874-4D01-5058|B8D9-1200-1016|B93C-EFFB-6D6B|B995-6E8E-BF8D|B9B4-1B11-A9F1|B9B5-DFDA-8526|BA38-E4BE-BA5D|BB08-6B46-E1B3|BB51-EA7D-1728|BBE8-7B7A-03DE|BBF1-CE8E-CD24|BC4C-AC45-6448|34A1-F9B1-DC13|53F3-F2F8-54A9|3674-F9D1-120A|5463-A50F-B07D\"}\n [{{.Range}}:1m] ) ) * max(metering_premium_support_base_fee)" } } ] }' EOF
Pengguna gagal membuat BillingAccountBinding karena bug di webhook validasi
Versi: 1.13.0, 1.13.1, 1.13.3
Gejala: Bug ini ada di logika webhook validasi BillingAccountBinding. Jika pengguna mencoba membuat resource BillingAccountBinding, webhook akan menampilkan error permission denied.
Solusi: Untuk membuat resource BillingAccountBinding, beri tahu operator infrastruktur dan buat resource yang sesuai melalui IAC.
Block storage
Pod Grafana macet dalam status Init karena error pemasangan volume.
Versi: 1.13.3
Gejala:
Pod Grafana di namespace anthos-identity-service-obs-system dan platform-obs-obs-system mengalami masalah karena error pemasangan volume.Init Pesan error di log kubelet menunjukkan masalah multi-lampiran. Masalah ini berasal dari bug di Trident, yang gagal mengidentifikasi dan memverifikasi perangkat pokok dengan benar untuk pemetaan LUKS, sehingga menyebabkan error multi-lampiran.
Solusi:
Periksa PVC untuk mengetahui deletionTimestamp. Jika tidak ada deletionTimestamp (migrasi Pod), ikuti langkah-langkah berikut:
- Periksa
VolumeAttachmentuntukPVCguna mengidentifikasi tempat volume saat ini terpasang. - Batasi
Nodesdalam cluster yang tidak cocok dengan nilai ini. - Hapus
Podyang gagal, tindakan ini akan menyebabkanPoddimigrasikan kembali keNodeasli.
Setelah memeriksa, jika ada deletionTimestamp (Penghapusan volume), ikuti langkah-langkah berikut:
- Periksa
VolumeAttachmentuntukPVCguna mengidentifikasi tempat volume saat ini terpasang. Di
Node, keluarkan konten file pelacakannya:cat /var/lib/trident/tracking/PVC_NAME.jsonValidasi bahwa perangkat LUKS yang ditemukan di kolom
devicePathoutput file pelacakan benar-benar ditutup. Jalur ini tidak boleh ada pada tahap ini:stat DEVICE_PATHValidasi apakah nomor seri saat ini dipetakan ke perangkat multi-jalur.
Salin nilai di kolom
iscsiLunSerialpada file pelacakan.Konversi nilai ini menjadi nilai hex yang diharapkan:
echo 'iISCSILUNSERIAL' | xxd -l 12 -psDengan nilai baru ini, cari tahu apakah entri multi-jalur masih ada:
multipath -ll | grep SERIAL_HEXJika tidak ada, hapus file pelacakan.
Jika ada, Anda akan melihat nilai serial-hex yang sedikit lebih panjang daripada yang ditelusuri, yang akan disebut
multipathSerial. Jalankan perintah berikut dan temukan perangkat blok:multipath -ll MULTIPATH_SERIALKemudian, jalankan perintah berikut, dengan perintah terakhir dijalankan secara unik untuk setiap perangkat blok:
systemctl restart iscsid systemctl restart multipathd multipath -f MULTIPATH_SERIAL echo 1 > /sys/block/BLOCK_DEVICE_NAME/device/delete
Pod peluncur mesin virtual gagal memetakan volume
Versi: 1.13.1
Gejala:
Anda mungkin melihat peringatan yang terlihat seperti ini:
Warning FailedMapVolume 2m50s (x206 over 13h) kubelet MapVolume.SetUpDevice failed for volume "pvc-2a68356a-47da-422b-8781-15e3a6fe7ec9" : rpc error: code = DeadlineExceeded desc = context deadline exceeded
Untuk mendiagnosis masalah, ikuti langkah-langkah berikut:
- Pastikan volume dan pod berada di node yang sama.
- Temukan node tempat pod berada dan periksa kondisinya.
- Periksa konektivitas node.
- Periksa IPSEC.
- Periksa multipath untuk melihat apakah ada zombie.
Periksa log Trident untuk mengetahui langkah mana dalam alur CSI yang mungkin menyebabkan zombie ini:
kubectl --kubeconfig /root/release/system/org-1-system-cluster logs -n netapp-trident -c trident-main
Solusi: Untuk mengatasi masalah ini, ikuti langkah-langkah dalam runbook berikut:
- Untuk masalah terkait node, lihat runbook FILE-R0010.
- Untuk masalah terkait IPSEC, lihat runbook FILE-R0007.
- Untuk masalah terkait LUN zombie, lihat runbook FILE-R0020.
- Untuk masalah terkait LUN super zombie, lihat runbook FILE-R0021.
Kegagalan terkait penyimpanan
Versi: 1.13.1
Gejala: Kegagalan terkait penyimpanan dapat diidentifikasi dengan
pemberitahuan file_block_zombie_luns_present yang muncul atau pod yang gagal
diaktifkan karena masalah pada panggilan MountVolume yang berlanjut selama lebih
dari satu loop rekonsiliasi. Waktu tunggu mungkin sekitar dua menit.
Pengulangan kegagalan yang sama menunjukkan bahwa ada yang gagal di jalur CSI NodeStage atau NodePublish dan memerlukan solusi. Satu-satunya
pengecualian adalah indikasi kegagalan waktu tunggu. Anda mungkin melihat beberapa kegagalan seperti ini:
NMountVolume.SetUp failed for volume "pvc-a63313b2-3e30-4c92-b074-f9fffe0500a4" : rpc error: code = Internal desc = unable to mount device; exit status 32
MapVolume.SetUpDevice failed for volume "pvc-f594b0c7-a5b5-4a5b-8a53-bf13e95c4bb0" : rpc error: code = Internal desc = rpc error: code = Internal desc = failed to stage volume: multipath device not found when it is expected
MapVolume.SetUpDevice failed for volume "pvc-f594b0c7-a5b5-4a5b-8a53-bf13e95c4bb0" : rpc error: code = Internal desc = rpc error: code = Internal desc = failed to stage volume: failure when reconfiguring multipath
Solusi:
Untuk melihat apakah
Nodeyang memilikiPoddapat diperbaiki untukPVCyang gagal, batasi node saat ini tempat pod dijadwalkan dan hapusPod:KUBECONFIG=CLUSTER_KUBECONFIG kubectl cordon node TARGET_NODEPodharus dijadwalkan keNodeyang sama sekali berbeda, yang menyebabkan Trident dipaksa untuk menjalankan NodeStage, NodePublish, NodeUnpublish, dan NodeUnstage sepenuhnya. Tindakan ini mungkin tidak langsung memperbaiki volume karena mungkin masih ada sesi yang terbuka untuk volume ini diNodeasli.Setelah langkah sebelumnya selesai, batalkan cordon node yang dimaksud:
KUBECONFIG=CLUSTER_KUBECONFIG kubectl uncordon node TARGET_NODEJika kegagalan masih ada, batasi semua
Nodeslainnya kecuali yang tempatPodawalnya dijadwalkan, lalu hapusPod. Hal ini akan mengakibatkanPoddimulai padaNodeasli tempat perangkat yang ada mungkin masih berada.Setelah langkah sebelumnya selesai, hapus cordon pada node yang dimaksud.
Sebagai hasil terakhir untuk menyimpan
PVdan datanya,Nodedapat di-reboot untuk menghapus kegagalan multipath, udev, dan devmapper diNode. Meskipun langkah ini cukup sulit, kemungkinan besar akan berhasil.Jika mitigasi sebelumnya gagal menyelesaikan masalah volume, hal ini menunjukkan bahwa data telah rusak dan tidak dapat digunakan. Satu-satunya opsi yang tersisa untuk melanjutkan perilaku penampung yang diinginkan adalah menghapus
PV,PVC, danPodyang gagal, diikuti dengan memulai ulang node tempat PV dihosting. Tindakan ini akan mengakibatkan hilangnya data sepenuhnya dari apa pun yang telah ditulis ke dalam volume.
Volume persisten yang dibuat dengan ukuran yang salah
Versi: 1.13.1
Gejala: Beban kerja dengan volume persisten dibuat sekitar 16 MiB terlalu kecil. Jika workload bergantung persis pada ukuran yang diiklankan oleh volume persisten, perbedaan kecil akan menyebabkan workload gagal saat diperluas atau disediakan. Masalah ini lebih mungkin terjadi pada volume persisten yang disediakan dengan kelas penyimpanan standard-block dibandingkan dengan yang disediakan dengan kelas penyimpanan standard-rwo. Masalah ini mungkin terjadi pada volume persisten dengan kelas penyimpanan standard-rwo yang menggunakan mode volumemode:block.
Solusi: Alokasikan volume persisten yang setidaknya 16 MiB lebih besar dari yang sebenarnya diperlukan.
Tidak dapat menghapus virtual machine penyimpanan
Versi: 1.13.1
Gejala: StorageVirtualMachine mungkin menampilkan error seperti ini:
Warning SVMDeletion 27m (x32 over 4h9m) StorageVirtualMachine Reconcile error for svm deletion: failed to delete svm: failed to delete svm volumes: failed to call VolumeCollectionGet: error message: "SVM \"org-2-user\" does not exist. "; error target: "svm.name"
Solusi: Hapus finalizer dari StorageVirtualMachines di namespace organisasi.
Penonaktifan organisasi tidak membersihkan resource
Versi: 1.13.1
Gejala: Saat menonaktifkan organisasi, beberapa resource StorageVirtualMachines
tertinggal, misalnya:
- gpc-system secret/org-2-admin-backup-agent-cert-secret
- gpc-system secret/org-2-admin-client-cert-secret
- gpc-system secret/org-2-admin-server-cert-secret
- gpc-system secret/org-2-admin-svm-credential
- gpc-system secret/org-2-admin-backup-agent-cert-secret
- gpc-system secret/org-2-admin-client-cert-secret
- gpc-system secret/org-2-admin-server-cert-secret
- gpc-system secret/org-2-admin-svm-credential
Solusi: Hapus resource ini.
Kegagalan rekonsiliasi penghapusan
Versi: 1.13.1
Gejala: Jika StorageVirtualMachine dihapus sebelum pembersihan
cluster yang bergantung pada StorageVirtualMachine tersebut, ada potensi untuk melihat masalah
saat membersihkan beberapa volume persisten (PV) cluster. Khususnya, jika PV yang dienkripsi LUKS tidak dibersihkan, rahasianya akan mencegah penghapusan namespace tempat PV tersebut berada. Anda mungkin melihat peringatan di log seperti ini:
Warning ReconcileBackoff 5m35s (x6 over 88m) ClusterLifecycleReconciler cluster namespace deletion is not completed: deletion is still ongoing for namespace: /g-org-2-shared-service-cluster
Solusi: Hapus finalizer dari secret g-luks-gdc-vm-disk-* di
namespace cluster layanan.
Upgrade bare metal macet
Versi: 1.13.1, 1.13.5, 1.13.6
Gejala: Tugas Ansible macet saat mengumpulkan fakta jika ada LUN Zombie. Menjalankan perintah multipath -ll dapat menunjukkan masalah berikut:
3600a098038314955593f574669785635 dm-11 NETAPP,LUN C-Mode
size=1.0G features='3 queue_if_no_path pg_init_retries 50' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=0 status=enabled
| |- 5:0:0:10 sdaf 65:240 failed faulty running
| `- 6:0:0:10 sdau 66:224 failed faulty running
`-+- policy='service-time 0' prio=0 status=enabled
|- 7:0:0:10 sdad 65:208 failed faulty running
`- 8:0:0:10 sdar 66:176 failed faulty running
Anda mungkin juga melihat pesan error berikut:
bm-system-upgrade-node-10.252.151.3-8cee3ed5ff67fdeb1716d964ztv PLAY [Check inventory] *********************************************************
bm-system-upgrade-node-10.252.151.3-8cee3ed5ff67fdeb1716d964ztv TASK [set_fact] ****************************************************************
bm-system-upgrade-node-10.252.151.3-8cee3ed5ff67fdeb1716d964ztv Wednesday 03 July 2024 01:39:04 +0000 (0:00:00.018) 0:00:00.018 ********
bm-system-upgrade-node-10.252.151.3-8cee3ed5ff67fdeb1716d964ztv ok: [10.252.151.3]
bm-system-upgrade-node-10.252.151.3-8cee3ed5ff67fdeb1716d964ztv PLAY [Verify inventory]********************************************************
bm-system-upgrade-node-10.252.151.3-8cee3ed5ff67fdeb1716d964ztv TASK [assert]******************************************************************
bm-system-upgrade-node-10.252.151.3-8cee3ed5ff67fdeb1716d964ztv Wednesday 03 July 2024 01:39:04 +0000 (0:00:00.031) 0:00:00.050 ********
bm-system-upgrade-node-10.252.151.3-8cee3ed5ff67fdeb1716d964ztv ok: [localhost]
bm-system-upgrade-node-10.252.151.3-8cee3ed5ff67fdeb1716d964ztv PLAY [all] *********************************************************************
bm-system-upgrade-node-10.252.151.3-8cee3ed5ff67fdeb1716d964ztv TASK [Gathering Facts] *********************************************************
bm-system-upgrade-node-10.252.151.3-8cee3ed5ff67fdeb1716d964ztv Wednesday 03 July 2024 01:39:04 +0000 (0:00:00.064) 0:00:00.114 ********
Solusi: Periksa konektivitas SSH dengan node target, lalu gunakan runbook berikut: FILE-R0020.
Error multi-lampiran Trident
Versi: 1.13.3
Gejala: Pod dan PVC mungkin terdampar di node yang berbeda dengan pod macet saat menginisialisasi dan menunggu PVC.
Solusi:
Periksa PVC untuk
deletionTimestamp:kubectl --kubeconfig KUBECONFIGget pvc -n <namespace> | grep deletionTimestampJika tidak ada
deletionTimestamp(Migrasi Pod):- Periksa VolumeAttachment untuk PVC guna mengidentifikasi tempat volume terpasang.
- Membatasi Node dalam cluster yang tidak cocok dengan nilai ini.
- Hapus Pod yang gagal. Tindakan ini akan memigrasikan POD kembali ke Node asli.
Jika ada
deletionTimestamp(Penghapusan volume):- Periksa VolumeAttachment untuk PVC guna mengidentifikasi tempat volume terpasang.
- Di Node, keluarkan konten file pelacakannya,
/var/lib/trident/tracking/PVC_NAME.json. - Validasi bahwa perangkat LUKS yang ditemukan di kolom devicePath dari output file pelacakan benar-benar ditutup. Jalur ini tidak boleh ada pada
tahap ini:
stat DEVICE_PATH. Jika jalur masih ada, masalah lain sedang terjadi. - Validasi apakah nomor seri dipetakan ke perangkat multi-jalur.
- Salin nilai di kolom iscsiLunSerial pada file pelacakan.
- Konversi nilai ini menjadi nilai hex yang diharapkan:
echo ISCSI_LUN_SERIAL | xxd -l 12 -ps - Dengan nilai baru ini, cari tahu apakah entri multi-jalur masih ada:
multipath -ll | grep SERIAL_HEX. - Jika tidak ada, hapus file pelacakan.
Jika ada, Anda akan melihat nilai hex-seri yang sedikit lebih panjang daripada yang Anda telusuri. Catat nilai ini sebagai MULTIPATH_SERIAL. Jalankan
multipath -ll MULTIPATH_SERIALdan Anda akan melihat pesan seperti ini:3600a09803831486f2d24575445314678 dm-32 NETAPP,LUN C-Mode size=8.0G features='3 queue_if_no_path pg_init_retries 50' hwhandler='1 alua' wp=rw |-+- policy='service-time 0' prio=50 status=active | |- 1:0:0:12 sde 8:64 active ready running | `- 2:0:0:12 sdt 65:48 active ready running `-+- policy='service-time 0' prio=10 status=enabled |- 3:0:0:12 sdbc 67:96 active ready running `- 4:0:0:12 sdbe 67:128 active ready runningJalankan perintah berikut:
systemctl restart iscsidsystemctl restart multipathdmultipath -f MULTIPATH_SERIALecho 1 > /sys/block/BLOCK_DEVICE_NAME/device/delete
Jalankan perintah terakhir secara unik untuk setiap perangkat blok.
Error dalam konfigurasi IPsec
Versi: 1.13.4
Gejala: Konfigurasi IPsec ONTAP mengalami error karena pre-shared key (PSK) yang tidak valid berisi 0X yang ditafsirkan sebagai string heksadesimal.
Anda mungkin melihat peringatan seperti ini:
Warning ONTAPIPSecConfiguration 3m47s (x22 over 75m) StorageEncryptionConnection Reconcile error on ONTAP IPSec configuration: failed to call IpsecPolicyCreateDefault: error message: "The specified pre-shared key \"0XxBDkG8iHoAlOc
nCUfHl0AKYzClgGCH\" is not valid because it is not a valid hexadecimal string."; error target: ""
Solusi:
Dapatkan koneksi enkripsi penyimpanan:
kubectl get Storageencryptionconnections --kubeconfig ROOT_ADMIN_KUBECONFIGCari entri dengan
Ready=Falsedan catat namaPRESHAREKEY. Output-nya mungkin terlihat seperti contoh ini:NAME INVENTORYMACHINE STORAGEVIRTUALMACHINE STORAGECIDR PRESHAREDKEY READY AGE vm-5a77b2a2 vm-5a77b2a2 gpu-org-user 192.0.2.0/27 vm-5a77b2a2-pre-shared-key False 26hMesin ini menjalankan org GPU, jadi hapus
secrets gpc-system/vm-5a77b2a2-pre-shared-keydigpu-org-admin.Tunggu hingga sistem membuat ulang
secret/vm-5a77b2a2-pre-shared-key.Cari tugas dengan pola seperti
gpc-system/os-policy-config-host-ipsec-vm-5a77b2a2. Perhatikan bahwa 8 karakter terakhir dibuat secara acak. Setelah kunci tersedia lagi, hapus tugas, sepertijobs gpc-system/os-policy-config-host-ipsec-vm-5a77b2a2m8xdldigpu-org-admin.
Mesin virtual penyimpanan tidak dibuat
Versi: 1.13.5
Gejala: Layanan Harbor di gpu-org gagal dimulai karena masalah
dengan volume penyediaan. Masalah ini disebabkan oleh pod file-storage-backend-controller yang mereferensikan mesin inventaris yang tidak ada.
Anda mungkin melihat error pengontrol penyimpanan seperti ini, yang menunjukkan bahwa
InventoryMachine tidak ditemukan:
{"ts":1730135301218.1772,"caller":"controller/controller.go:329","msg":"Reconciler error","controller":"StorageEncryptionConnectionGenerator","controllerGroup":"baremetal.cluster.gke.io","controllerKind":"InventoryMachine","InventoryMachine":{"n
ame":"vm-26c89d33","namespace":"@org-1/org-1-admin"},"namespace":"@org-1/org-1-admin","name":"vm-26c89d33","reconcileID":"48ab38a8-385d-4fdb-bd7e-1212f287379c","err":"InventoryMachine.baremetal.cluster.gke.io \"vm-26c89d33\" not found"}
Solusi:
- Hapus pod
file-storage-backend-controller. - Biarkan pengontrol penyimpanan mengambil ulang mesin inventaris yang ada.
Jaringan intercluster penyimpanan gagal disesuaikan
Versi: 1.13.5, 1.13.6
Gejala: Setelah upgrade, resource kustom StorageCluster di cluster admin root gagal siap karena kesalahan konfigurasi di subnet antar-cluster dalam spesifikasi. Cluster penyimpanan melaporkan Not Ready dan menyertakan peristiwa dengan error ini:
Reconciler error: failed to configure additional networks: failed to configure intercluster LIF: the \"\" Kind is not currently supported
Jika error ini terjadi, klaim subnet antar-cluster yang digunakan oleh cluster penyimpanan tidak menyertakan kolom kind dalam referensi. Setelah memeriksa resource kustom
StorageCluster, Anda akan menemukan referensi klaim subnet antar-cluster
dengan hanya nama dan namespace seperti ini:
spec:
additionalNetworks:
- destinationSubnets:
- 10.252.112.0/20
name: backup-agent-storage-network
port: a0a
subnetConfig:
subnetClaimRef:
name: file-block-storage-intercluster-lif-subnet
namespace: root
types:
- BackupAgent
Solusi:: Perbarui spesifikasi StorageCluster untuk menyertakan kolom
kind: SubnetClaim dalam referensi klaim subnet:
spec:
additionalNetworks:
- destinationSubnets:
- 10.252.112.0/20
name: backup-agent-storage-network
port: a0a
subnetConfig:
subnetClaimRef:
kind: SubnetClaim
name: file-block-storage-intercluster-lif-subnet
namespace: root
types:
- BackupAgent
Setelah memperbarui spesifikasi StorageCluster, mulai ulang Deployment
file-storage-backend-controller dan verifikasi bahwa cluster penyimpanan sudah siap.
Pengelolaan cluster
Tugas machine-init gagal selama penyediaan cluster
Versi: 1.13.1
Gejala:
Selama penyediaan cluster, tugas
machine-initdari node bidang kontrol kedua gagal dengan pesan berikut:FAILED! => {"changed": true, "cmd": "/usr/bin/kubeadm join phase control-plane-prepare certs --config /dev/stdin --v 5".Lihat log:
kubectl --kubeconfig=ADMIN_KUBECONFIG logs -p kube-apiserver-{first_node_name} -n kube-system | grep "etcdmain: open /etc/kubernetes/pki/etcd/ca.crt: permission denied"Output menampilkan hasil yang tidak kosong.
Solusi:
Aktifkan/nonaktifkan izin
/etc/kubernetes/pki/etcd/ca.crt. Operasi ini sangat sensitif terhadap waktu. Pengalihan izin harus terjadi setelah pekerjaanmachine-initsebelumnya dijalankan, tetapi sebelum pekerjaanmachine-initberikutnya dijalankan, karenamachine-initakan mengganti izin kembali ke root.Mulai ulang
etcddi node kedua untuk memulihkanetcddi node pertama dari loop error.
Setelah menyelesaikan kedua langkah ini, kube-apiserver di node pertama akan mulai berjalan, dan tugas machine-init berikutnya akan berhasil.
Tidak ada konektivitas dari cluster layanan ke bucket penyimpanan objek
Versi: 1.13.1
Gejala: Koneksi untuk pod database yang berjalan di cluster layanan ke bucket penyimpanan objek di cluster admin org gagal.
Solusi: Ikuti petunjuk dalam runbook KUB-R0305.
Pemeriksaan preflight gagal
Versi: 1.13.1
Gejala: Anda mungkin melihat pesan berikut di status objek cluster:
conditions:
message: Preflight check <cluster> failed
reason: PreflightCheckFailed
status: "False"
type: PreflightCheckSuccessful
Anda juga akan melihat objek PreflightCheck yang sesuai dengan nama dan namespace yang sama dengan objek cluster yang telah ada selama beberapa jam, sementara error atau kegagalan yang ditunjukkan dalam objek PreflightCheck diketahui tidak lagi menjadi masalah.
Solusi: Hapus objek PreflightCheck.
Pembuatan kumpulan node pekerja cluster pengguna gagal
Versi: 1.13.5
Gejala: Pembuatan node pool pekerja cluster pengguna mungkin berhenti merespons untuk salah satu jenis mesin berikut:
- n2-standard-16-gdc
- n2-standard-32-gdc
- n2-highmem-16-gdc
- n2-highmem-32-gdc
Solusi: Hapus node pool tersebut dan buat ulang dengan memilih jenis mesin lain yang tersedia dari drop-down UI pembuatan cluster pengguna.
Cluster pengguna saat dibuat ulang mungkin macet dalam proses mencocokkan karena pembersihan yang tidak tepat
Versi: 1.13.x
Gejala: Jika cluster pengguna dibuat dengan nama yang sama seperti cluster yang dihapus sebelumnya, cluster tersebut mungkin terus berada dalam status Reconciling tanpa akhir dengan status yang menyebutkan tahap penginstalan add-on ONE.
Solusi: Uninstal addon helm
CLUSTER_NAME-abm-overrides dan mulai ulang deployment
managed-adm-controller. Ikuti
MKS-R0004
untuk mengetahui langkah-langkah mendetail.
Layanan database
Bagian ini berisi masalah umum untuk layanan Database.
Kloning database AlloyDB Omni macet
Versi: Semua versi 1.13.x
Gejala: Saat pengguna meng-clone cluster AlloyDB Omni dari titik waktu tertentu, cluster database yang di-clone akan mengalami error DBSE0005 dan tidak dapat siap. Resource restore.alloydb yang sesuai mengalami masalah di fase "ProvisionInProgress".
Solusi: Untuk mengatasi masalah ini, pilih titik waktu dengan cermat dari COMPLETETIME pencadangan yang berhasil.
Mencantumkan cadangan AlloyDB Omni yang tersedia untuk dikloning dari server API pengelolaan.
kubectl get backups.alloydb -n source-dbcluster-namespace
Contoh output:
NAMESPACE NAME PHASE COMPLETETIME
db1 backupplan1-20240908215001 Succeeded 2024-09-08T21:37:38Z
db1 backupplan1-20240909215001 Succeeded 2024-09-09T21:16:18Z
db1 backupplan1-20240910215001 Succeeded 2024-09-10T21:09:38Z
db1 backupplan1-20240911215001 Succeeded 2024-09-11T21:50:47Z
Pilih nilai COMPLETETIME sebagai titik waktu untuk clone. Perhatikan bahwa waktu menggunakan UTC.
Penerapan IOPS memengaruhi performa penyimpanan
Versi: 1.13.1
Solusi: Untuk mengatasi masalah ini, ikuti salah satu opsi berikut:
- Perbesar ukuran penyimpanan.
- Ganti kuota IOPS.
Error rekonsiliasi saat mengupgrade subkomponen dbs-fleet
Versi: 1.13.3
Gejala: Saat mengupgrade org root dari 1.13.1 ke 1.13.3, Anda mungkin melihat error rekonsiliasi. Periksa error rekonsiliasi:
kubectl get subcomponent -n ${CLUSTER} -o json | jq -r '.items[] | select(.status.conditions[]?.reason == "ReconciliationError") | "Sub-Component: \(.metadata.name) - \(.status.conditions[]?.message)"'
Error mungkin terlihat seperti ini:
Sub-Component: dbs-fleet - Reconciliation error: E0121 - rollback chart: no ControlPlaneAgentsVersion with the name "alloydbomni-v0.12.46" found
Solusi: Ikuti langkah-langkah dalam runbook OCLCM-R0122.
Pembuatan DBCluster gagal
Versi: 1.13.3
Gejala: Setelah mengupgrade ke 1.13.3, DBcluster baru gagal disesuaikan, dengan error berikut dalam status:
status:
criticalIncidents:
- code: DBSE0001
createTime: ""
message: Internal. General Controller Error.
resource:
component: controller-default
location: {}
stackTrace:
- component: controller-default
message: 'DBSE0001: Internal. General Controller Error. Failed to reconcile
Postgres DBCluster [<name>] DBSE0001: Internal.
General Controller Error. target release is empty in ModuleInstance <name>'
Solusi
Verifikasi bahwa ada CR localrollout yang diakhiri dengan cpa-v0.12.46 dan cpa-v0.12.51
di cluster admin org. Contoh:
kubectl get localrollouts -A
dbs-fleet-system dp-alloydbomni-15-5.2--cpa-v0.12.46 true
dbs-fleet-system dp-oracle-19-10.0.0.0--cpa-v0.12.46 true
dbs-fleet-system dp-postgresql-13-8-v0.12.46--cpa-v0.12.46 true
dbs-fleet-system dp-postgresql-14-5-v0.12.46--cpa-v0.12.46 true
dbs-fleet-system dp-postgresql-15-2-v0.12.46--cpa-v0.12.46 true
dbs-fleet-system dp-alloydbomni-15-5.2--cpa-v0.12.51 true
dbs-fleet-system dp-oracle-19-10.0.0.0--cpa-v0.12.51 true
dbs-fleet-system dp-postgresql-13-8-v0.12.51--cpa-v0.12.51 true
dbs-fleet-system dp-postgresql-14-5-v0.12.51--cpa-v0.12.51 true
dbs-fleet-system dp-postgresql-15-2-v0.12.51--cpa-v0.12.51 true
Temukan dan hapus CR localrollout yang diakhiri dengan cpa-v0.12.46, sehingga memastikan CR localrollout lainnya tidak terpengaruh.
kubectl get localrollouts -A | grep cpa-v0.12.46
Tindakan ini akan menampilkan daftar seperti ini:
dbs-fleet-system dp-alloydbomni-15-5.2--cpa-v0.12.46 true
dbs-fleet-system dp-oracle-19-10.0.0.0--cpa-v0.12.46 true
dbs-fleet-system dp-postgresql-13-8-v0.12.46--cpa-v0.12.46 true
dbs-fleet-system dp-postgresql-14-5-v0.12.46--cpa-v0.12.46 true
dbs-fleet-system dp-postgresql-15-2-v0.12.46--cpa-v0.12.46 true
Hapus setiap item:
kubectl delete -n dbs-fleet-system localrollout/dp-alloydbomni-15-5.2--cpa-v0.12.46
...
...
Pastikan bahwa CR localrollout yang diakhiri dengan cpa-v0.12.51 masih ada:
NAMESPACE NAME PAUSED IN PROGRESS FINISHED
dbs-fleet-system dp-alloydbomni-15-5.2--cpa-v0.12.51 true
dbs-fleet-system dp-oracle-19-10.0.0.0--cpa-v0.12.51 true
dbs-fleet-system dp-postgresql-13-8-v0.12.51--cpa-v0.12.51 true
dbs-fleet-system dp-postgresql-14-5-v0.12.51--cpa-v0.12.51 true
dbs-fleet-system dp-postgresql-15-2-v0.12.51--cpa-v0.12.51 true
DNS
DNSSEC harus dinonaktifkan secara eksplisit di resolved.conf
Versi: 1.13.1, 1.13.3, 1.13.4
Gejala: Resolusi DNS gagal di node bare metal atau VM. Untuk mengonfirmasi bahwa resolusi DNS gagal, buat koneksi SSH ke node yang terpengaruh, lalu jalankan systemctl status systemd-resolved. Output-nya berisi baris seperti
DNSSEC validation failed for question . IN SOA: no-signature.
Solusi:
Tambahkan baris berikut ke
/etc/systemd/resolved.confdi node yang terpengaruh.DNSSEC=falseMulai ulang layanan
systemd-resolved:systemctl restart systemd-resolved.service
Layanan pelabuhan
Kegagalan pembuatan layanan Harbor
Versi: 1.13.6
Gejala: Pembuatan instance Harbor gagal karena ketidakcocokan namespace yang disebabkan
oleh batasan panjang pada nama ServiceIsolationEnvironment. Anda mungkin melihat
pesan seperti ini:
Failed to reconcile ODSDatabase: failed to create or update ODS ProjectNetworkPolicy: namespaces "g-dbs-PROJECT_NAME-HARBOR_INSTANCE_NAME" not found
Solusi: Persingkat nama instance Harbor untuk menyelesaikan masalah saat ini. Pastikan panjang gabungan PROJECT_NAME dan HARBOR_INSTANCE_NAME kurang dari 27 karakter.
Menghapus instance Harbor tidak akan menghapus mirror registry terkait
Versi: 1.13.1, 1.13.3, 1.13.4, 1.13.5, 1.13.6, 1.13.7, 1.13.8
Gejala: Menghapus instance Harbor tidak menghapus mirror registry terkait. Nodepool mungkin macet dalam status Provisioning. Hal ini disebabkan oleh mirror registri yang dibuat oleh pengontrol MHS tidak dihapus saat instance Harbor dihapus.
Solusi: Anda harus menghapus mirror registri secara manual. Untuk mengurangi masalah ini, ikuti langkah-langkah berikut:
- Hubungkan ke cluster admin org. Untuk mengetahui informasi selengkapnya, lihat arsitektur cluster GDC.
Jalankan skrip ini untuk menghapus mirror registri yang cocok dengan nilai variabel lingkungan
HARBOR_INSTANCE_URLdari semua cluster Kubernetes yang memiliki labellcm.private.gdc.goog/cluster-type=user:LABEL="lcm.private.gdc.goog/cluster-type=user" ENDPOINT=HARBOR_INSTANCE_URL while read -r out; do info=${out% *} ns_name=${info%:*} name=${ns_name##*/} ns=${ns_name%%/*} INDEX=$(kubectl get cluster user-vm-1 -n user-vm-1-cluster -ojson | jq '.spec.nodeConfig.registryMirrors | map(.endpoint=='\"$ENDPOINT\"') | index(true)') kubectl patch clusters "${name}" -n "${ns}" --type=json -p="[{'op': 'remove', 'path': '/spec/nodeConfig/registryMirrors/$INDEX'}]" done <<< $(kubectl get clusters -l "$LABEL" -o jsonpath="$JSONPATH" -A)Ganti
HARBOR_INSTANCE_URLdengan URL instance Harbor Anda.
Modul keamanan hardware
Lisensi uji coba HSM yang dinonaktifkan masih dapat dideteksi
Versi: 1.13.1, 1.13.3-1.13.11
Gejala: Karena masalah umum yang ada di CipherTrust Manager, lisensi uji coba yang dinonaktifkan masih dapat terdeteksi dan dapat memicu peringatan kedaluwarsa palsu.
Solusi: Lihat HSM-R0003 untuk memverifikasi lisensi normal yang aktif dan menghapus lisensi uji coba yang dinonaktifkan.
Kebocoran deskriptor file host-daemon HSM
Versi: 1.13.x
Gejala: Jika HSM berjalan lebih dari 30 hari, kebocoran deskriptor file dapat menyebabkan layanan host-daemon berhenti merespons, sehingga menghasilkan error ServicesNotStarted.
Solusi: Mulai ulang layanan host-daemon. Untuk melakukannya, minta Operator Infrastruktur (IO) Anda untuk terhubung ke HSM melalui SSH sebagai pengguna ksadmin
dan jalankan perintah berikut:
sudo systemctl restart host-daemon
Jika tidak berhasil, IO Anda dapat Mulai Ulang HSM yang Tidak Sehat.
Masa berlaku sertifikat HSM telah berakhir
Versi: 1.13.11
Gejala: Saat mengupgrade org, Anda mungkin melihat peringatan seperti ini:
Warning Unsuccessful 50m OrganizationUpgrade 1 error occurred:
* UPG1300: ABM upgrade expected to finish within 2h0m0s but hasn't after 13h45m23.442682119s, last message was: Cluster upgrade for system cluster: in-progress
org-1-system-cluster mengalami masalah saat mengupgrade versi ABM karena sertifikat HSM (Hardware Security Module) telah habis masa berlakunya.
Anda mungkin juga melihat error seperti contoh ini di iLO server HPE, StorageGRID, atau ONTAP:
Not able to connect SSL to Key Manager server at IP_ADDRESS
Solusi:
Putar sertifikat antarmuka web dan CA root secara manual dengan ksctl:
- Menjeda semua CR
HSM,HSMCluster, danHSMTenant. Buat CA root baru dengan atribut yang disalin dari CA lama. Temukan ID CA lama dengan
ksctl ca locals list. Contohnya mungkin terlihat seperti ini:ksctl ca locals create --cn example.com --copy-from-ca 6d7f7fa7-df81-44b7-b181-0d3e6f525d46 { "id": "b0516120-6b4c-40ed-93f4-35e9fdc690e7", "uri": "kylo:kylo:naboo:localca:b0516120-6b4c-40ed-93f4-35e9fdc690e7", "account": "kylo:kylo:admin:accounts:kylo", "createdAt": "2025-06-04T18:46:25.728332Z", "updatedAt": "2025-06-04T18:46:25.728332Z", "state": "pending", "csr": "-----BEGIN CERTIFICATE REQUEST-----\nMIHQMHgCAQAwFjEUMBIGA1UEAxMLZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggq\nhkjOPQMBBwNCAAR5pwW1UC1JNg79gkjK2rvnmgaZpGNwb4VxYN3dQCieHtHlYJUu\nQWk56RB9oPw4SKkf/Y1ZwEI4m2mx3d9XFHU7oAAwCgYIKoZIzj0EAwIDSAAwRQIh\nANWTPjkJNcY56lSARN714EBa1gLuvxJlMENVHKEbanooAiA1BQ3sz7mxykL/1t7v\nqRlIpxKGrhw56XC67vz4NvZ4Kg==\n-----END CERTIFICATE REQUEST-----\n", "subject": "/CN=example.com", "notBefore": "0001-01-01T00:00:00Z", "notAfter": "0001-01-01T00:00:00Z", "sha1Fingerprint": "21F033940A65657CC6C2C1EA0BB775F14FD5D193", "sha256Fingerprint": "31EF6E1316DF039F77DDDB051890CDEBBF67BBE8A14AEE04E01716D30DC90937", "sha512Fingerprint": "F200817829A23F30239C33DC2CED8C889954A252EBA2CC12A3977FD5F91239ED7A2A4CCF0EA3D90D50CEF7A779E5C487798AAC75617DB2F29AF7F4794AD66F17", "purpose": {} }Tanda tangani sendiri CA baru dengan durasi satu tahun. Contohnya mungkin terlihat seperti ini:
ksctl ca locals self-sign --id b0516120-6b4c-40ed-93f4-35e9fdc690e7 -x 365 { "id": "b0516120-6b4c-40ed-93f4-35e9fdc690e7", "uri": "kylo:kylo:naboo:localca:b0516120-6b4c-40ed-93f4-35e9fdc690e7", "account": "kylo:kylo:admin:accounts:kylo", "createdAt": "2025-06-04T18:46:25.728332Z", "updatedAt": "2025-06-04T18:52:51.976847092Z", "state": "active", "csr": "", "cert": "-----BEGIN CERTIFICATE-----\nMIIBbTCCAROgAwIBAgIRAMyQJHhs4i2uwj4ghilVFJQwCgYIKoZIzj0EAwIwFjEU\nMBIGA1UEAxMLZXhhbXBsZS5jb20wHhcNMjUwNjAzMTg1MjUxWhcNMjYwNjA0MTg1\nMjUxWjAWMRQwEgYDVQQDEwtleGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49\nAwEHA0IABHmnBbVQLUk2Dv2CSMrau+eaBpmkY3BvhXFg3d1AKJ4e0eVglS5BaTnp\nEH2g/DhIqR/9jVnAQjibabHd31cUdTujQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV\nHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQ9uCnTZ+lHhiLx3f1xEn0+JC5J+TAKBggq\nhkjOPQQDAgNIADBFAiBsSiB5BRBJ8TZQ6O5TzMBgDoWzTZVMVXNLdZUiqHtcDwIh\nAOnqKNq5ytWLvMsBQKhulGgqqw1dccpkJJz01n3Smzyp\n-----END CERTIFICATE-----\n", "serialNumber": "271910941595574900448900837122680099988", "subject": "/CN=example.com", "issuer": "/CN=example.com", "notBefore": "2025-06-03T18:52:51Z", "notAfter": "2026-06-04T18:52:51Z", "sha1Fingerprint": "1114AF5ED6DF7D4A9F83A0F8DF5DFEF041A81622", "sha256Fingerprint": "93BAD9D44B320EFB446F65FE2A4F3A341147D15AF5315C000ADF644A3C1347A7", "sha512Fingerprint": "07386D7461B4013304CF0E0830517EA433E09EAB146A9F106F1B0DED4BBEC78BB4C89EAFAEC37178FE98AC4ACA234B98290D240607D5EA896F03DABF3DB56D5C", "purpose": { "client_authentication": "Enabled", "user_authentication": "Enabled" } }Perbarui antarmuka web untuk menggunakan CA baru ini untuk pembuatan otomatis sertifikatnya. Contoh mungkin terlihat seperti ini:
ksctl interfaces modify --name web --auto-gen-ca-id kylo:kylo:naboo:localca:b0516120-6b4c-40ed-93f4-35e9fdc690e7 { "id": "61aab814-2821-43ac-b652-41784b7b06bf", "name": "web", "mode": "tls-cert-opt-pw-opt", "cert_user_field": "CN", "auto_gen_ca_id": "kylo:kylo:naboo:localca:b0516120-6b4c-40ed-93f4-35e9fdc690e7", "trusted_cas": { "local": [ "kylo:kylo:naboo:localca:6d7f7fa7-df81-44b7-b181-0d3e6f525d46" ] }, "createdAt": "2023-11-13T22:46:56.251881Z", "updatedAt": "2025-06-04T19:02:12.710563Z", "port": 443, "network_interface": "all", "interface_type": "web", "minimum_tls_version": "tls_1_2", "maximum_tls_version": "tls_1_3", "local_auto_gen_attributes": { "cn": "web.ciphertrustmanager.local", "dns_names": [ "web.ciphertrustmanager.local" ], ...Buat sertifikat antarmuka web baru, yang ditandatangani oleh CA baru. Flag
--urladalah IP pengelolaan HSM (darikubectl get hsm -n gpc-system). Contohnya mungkin terlihat seperti ini:ksctl interfaces auto-gen-server-cert --name "web" --url=https://10.128.52.18 { "certificates": "-----BEGIN CERTIFICATE-----\nMIICljCCAjygAwIBAgIRANPuw/42oHZAb9nzAYnrf9MwCgYIKoZIzj0EAwIwFjEU\nMBIGA1UEAxMLZXhhbXBsZS5jb20wHhcNMjUwNjAzMTkwOTU5WhcNMjYwNjA0MTg1\nMjUxWjBjMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVFgxDzANBgNVBAcTBkF1c3Rp\nbjEPMA0GA1UEChMGVGhhbGVzMSUwIwYDVQQDExx3ZWIuY2lwaGVydHJ1c3RtYW5h\nZ2VyLmxvY2FsMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEy9T8uGa/N9ruRJMy\nxy4an+G/OyZjB/8nth1BPxpw5orljbTuOh9toS9c9FiOuMQQ13mGJSImadLP33PR\ngdXcHaOCARwwggEYMA4GA1UdDwEB/wQEAwIDiDATBgNVHSUEDDAKBggrBgEFBQcD\nATAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFD24KdNn6UeGIvHd/XESfT4kLkn5\nMGIGA1UdEQRbMFmCHHdlYi5jaXBoZXJ0cnVzdG1hbmFnZXIubG9jYWyBIXRlY2hu\naWNhbC5zdXBwb3J0QHRoYWxlc2dyb3VwLmNvbYcECoA0EocECgADAocErBMjAocE\nrBMLAjBeBgNVHR8EVzBVMFOgUaBPhk1odHRwOi8vY2lwaGVydHJ1c3RtYW5hZ2Vy\nLmxvY2FsL2NybHMvYjA1MTYxMjAtNmI0Yy00MGVkLTkzZjQtMzVlOWZkYzY5MGU3\nLmNybDAKBggqhkjOPQQDAgNIADBFAiEAusSKWMoFeTsK+OrbURch7XtMR31XD45E\n+w+wjf2VAk4CIAsHytphizTFQks4qqOMaHm6Ap58uU0HMNGSm0WW6mQY\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIBbTCCAROgAwIBAgIRAMyQJHhs4i2uwj4ghilVFJQwCgYIKoZIzj0EAwIwFjEU\nMBIGA1UEAxMLZXhhbXBsZS5jb20wHhcNMjUwNjAzMTg1MjUxWhcNMjYwNjA0MTg1\nMjUxWjAWMRQwEgYDVQQDEwtleGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49\nAwEHA0IABHmnBbVQLUk2Dv2CSMrau+eaBpmkY3BvhXFg3d1AKJ4e0eVglS5BaTnp\nEH2g/DhIqR/9jVnAQjibabHd31cUdTujQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV\nHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQ9uCnTZ+lHhiLx3f1xEn0+JC5J+TAKBggq\nhkjOPQQDAgNIADBFAiBsSiB5BRBJ8TZQ6O5TzMBgDoWzTZVMVXNLdZUiqHtcDwIh\nAOnqKNq5ytWLvMsBQKhulGgqqw1dccpkJJz01n3Smzyp\n-----END CERTIFICATE-----\n" }Pada tahap ini,
openssl s_client -showcerts -connect 10.128.52.18:443 2>/dev/null | openssl x509 -textmasih menampilkan sertifikat lama. Anda harus melakukan reboot HSM untuk mengambil sertifikat baru.ssh -i ~/.ksctl/ssh-privatekey ksadmin@10.128.52.18 sudo rebootSekarang
openssl s_client -showcerts -connect 10.128.52.18:443 2>/dev/null | openssl x509 -textmenampilkan sertifikat baru.Hapus CA lama dari HSM CR:
kubectl edit hsm zv-aa-hsm01 -n gpc-system and delete hsm.Spec.RootCACertificatesLanjutkan HSM:
kubectl annotate hsm zv-aa-hsm01 -n gpc-system hsm.security.private.gdc.goog/paused-Pastikan HSM menjadi responsif.
Ulangi langkah-langkah ini untuk dua HSM lainnya. CA root yang ditandatangani sendiri yang baru sudah ada karena CA dibagikan di antara HSM dalam cluster. Lewati langkah 2 dan 3, tetapi ulangi langkah 4-8.
Ikuti tugas berat rotasi CA HSM T0008 untuk mengotomatiskan rotasi semua sertifikat, tetapi lewati langkah Selesaikan rotasi dengan menambahkan anotasi rotasi baru ke
hsmclustertempatca-rotation-finalizing annotationditambahkan.
Upload nama CA baru ke iLO:
- Di antarmuka iLO, buka halaman Administration - Key Manager, lalu klik tab Key Manager.
- Ganti nama sertifikat.
- Lakukan reboot dingin.
- Pastikan handshake SSL mulai berfungsi kembali.
Pengelolaan akses dan identitas
Pod gatekeeper-audit di namespace opa-system sering dimulai ulang
Versi: 1.13.3
Gejala: Periksa status pod gatekeeper-audit-*** di namespace
opa-system:
kubectl get pods/gatekeeper-audit-POD_ID -n opa-system-NAMESPACE_ID -n opa-system
Output-nya mungkin terlihat seperti contoh ini:
NAME READY STATUS RESTARTS AGE
gatekeeper-audit-58d8c4c777-7hzvm 2/2 Running 987 (12h ago) 12d
Masalah ini disebabkan oleh batas resource yang rendah.
Infrastructure as Code (IAC)
Pembuatan token Gitlab yang berlebihan berisiko mengisi database Gitlab
Versi: 1.13.1
Gejala: Subkomponen iac-manager membuat token baru untuk pengguna configsync-ro
berulang kali, meskipun tidak diperlukan. Hal ini dapat menyebabkan database Gitlab penuh dan membuat IAC tidak dapat diakses. Pod pg-gitlab-database-0 di namespace gitlab-system
mungkin tidak dapat dimulai dan menampilkan peristiwa seperti:
Warning Unhealthy 84s (x18 over 4m14s) kubelet Startup probe failed: /bin/bash: warning: setlocale: LC_ALL: cannot change locale (en_US.utf8)
psql: error: connection to server at "localhost" (127.0.0.1), port 5432 failed: FATAL: could not write init file
Solusi:
Bekerja samalah dengan kontak Google Anda untuk mendapatkan hotfix_3 untuk rilis 1.13.1 dan terapkan.
Sistem Pengelolaan Kunci (KMS)
Mengubah jenis kunci root akan membuat semua kunci yang ada menjadi tidak valid
Versi: 1.13.x
Gejala: Setelah organisasi dibuat, KMS akan otomatis disediakan dengan kunci root software. Untuk bermigrasi dari kunci root software ke kunci CTM, pengguna melakukan penggantian subkomponen. Tindakan ini mengubah jenis kunci root, yang membuat semua kunci software yang ada di KMS menjadi tidak valid.
Solusi: Hindari mengupdate jenis kunci root jika memungkinkan. Jika Anda memperbarui jenis kunci root, semua kunci yang ada akan menjadi tidak valid.
kms-rootkey-controller CrashLoopBackOff karena OOMKILL
Versi: 1.13.1
Gejala: Jika penggunaan memori kms-rootkey-controller melebihi batas 600Mi, pengontrol akan memasuki CrashLoopBackOff karena status OOMKilled.
Solusi: Buat SubcomponentOverride untuk memperbarui batas memori menjadi 1500Mi. Untuk mengetahui petunjuknya, lihat KMS Runbook 0007. Setelah Anda menyelesaikan langkah-langkah prasyarat dari runbook, jalankan perintah berikut:
Buat resource kustom
SubcomponentOverride:cat << EOF > ~/kms-rootkey-subcomponentoverride.yamlPada contoh berikut, Anda akan melihat resource kustom
SubcomponentOverrideyang lengkap:apiVersion: lcm.private.gdc.goog/v1 kind: SubcomponentOverride metadata: name: kms-rootkey-subcomponentoverride namespace: root spec: subComponentRef: kms-rootkey-cm backend: operableParameters: resourcesLimit: memory: 1500Mi EOFTerapkan resource
SubcomponentOverride:kubectl --kubeconfig ${KUBECONFIG:?} apply -f ~/kms-rootkey-subcomponentoverride.yaml kubectl --kubeconfig ${KUBECONFIG:?} describe subcomponentoverride kms-rootkey-subcomponentoverride -n root
Logging
Pencatat audit penyimpanan objek tidak dapat me-resolve host DNS
Versi: 1.13.x
Gejala:
Di cluster admin root, deployment obs-system/log-remote-logger berisi beberapa error seperti berikut:
E1220 17:00:25.247258 1 manager.go:183] Failed to fetch obj audit logs for gce-gpcstgesite01: failed to get authorization token for Grid Management API: Post "https://objectstorage-grid-mgmt.gpc-system.svc.cluster.local/api/v3/authorize": dial tcp: lookup objectstorage-grid-mgmt.gpc-system.svc.cluster.local: no such host
Solusi: Patch deployment obs-system/log-remote-logger dengan perintah berikut:
kubectl --kubeconfig ${KUBECONFIG:?} patch deployment log-remote-logger -n obs-system -p '{"spec":{"template":{"spec":{"dnsPolicy":"ClusterFirstWithHostNet"}}}}'
HaaS Logger menampilkan error di cluster admin root
Versi: 1.13.x
Gejala:
Di cluster admin root, deployment obs-system/log-remote-logger berisi beberapa error seperti berikut:
E0109 17:33:08.917876 1 manager.go:156] Failed to run logger haas: Failed to get log targets: failed to list harborinstances in the cluster: failed to get API group resources: unable to retrieve the complete list of server APIs: artifactregistry.gdc.goog/v1: the server could not find the requested resource
Solusi: Upgrade ke 1.13.8 untuk memperbaiki error. Atau, ubah deployment obs-system/log-remote-logger sebagai berikut:
Dalam argumen penampung remote-logger, perbarui tanda --disabled-loggers untuk menyertakan santricity dan HaaS:
YAML
args:
- --disabled-loggers=santricity,haas
Santricity Logger gagal
Versi: 1.13.x
Gejala:
Di cluster admin root, deployment obs-system/log-remote-logger berisi beberapa error seperti berikut:
E0109 17:33:10.931737 1 manager.go:183] Failed to fetch santricity audit logs for lb-aa-objs01: failed to get CA cert: failed to get ClusterIssuer internal-root-ca-issuer: no kind is registered for the type v1.ClusterIssuer in scheme "pkg/logging/manager.go:32"
Solusi: Upgrade ke 1.13.8 untuk memperbaiki error.
Log Target Logging dikirim ke project yang salah
Versi: 1.13.x
Gejala: Log DaemonSet obs-system/oplogs-forwarder menampilkan peringatan yang mirip dengan berikut ini:
oplogs-forwarder-2xrfw [2025/01/16 21:02:09] [ warn] [output:loki:log_output_loki_dbs_fleet_system_dbs_fleet] Tenant ID is overwritten platform-obs -> infra-obs
oplogs-forwarder-kxf8p [2025/01/16 21:05:23] [ warn] [output:loki:log_output_loki_workbench_system_nws_lt] Tenant ID is overwritten infra-obs -> platform-obs
Peringatan ini menyebabkan log dirutekan ke project (ID tenant) yang salah. Masalah ini berasal dari bug yang diketahui di Fluent Bit. Untuk mengetahui informasi selengkapnya, lihat masalah Fluent Bit di GitHub.
Solusi: Upgrade ke 1.13.8 untuk memperbaiki error.
Log audit dari namespace platform tidak terlihat oleh PA
Versi: 1.13.x
Gejala: Log audit dari namespace platform terlihat oleh Operator Infrastruktur (IO), bukan Administrator Platform (PA).
Solusi: Tambahkan label observability.gdc.goog/auditlog-destination=pa secara manual ke namespace platform di semua cluster organisasi. Ikuti langkah-langkah berikut untuk menerapkan solusi manual ini:
Tetapkan
KUBECONFIGke cluster target.Tambahkan label yang diperlukan ke namespace:
KUBECONFIG=${KUBECONFIG:?} kubectl label namespace platform observability.gdc.goog/auditlog-destination=pa --overwritePastikan label berhasil ditambahkan:
KUBECONFIG=${KUBECONFIG:?} kubectl label namespace platform --list
Pod gagal menginisialisasi container
Versi: 1.13.x
Gejala: Pod gagal dibuat dengan error yang mirip dengan berikut:
Events:
│ Type Reason Age From Message │
│ ---- ------ ---- ---- ------- │
│ Warning FailedCreatePodSandBox 10m (x2080 over 7h40m) kubelet Failed to create pod sandbox: mkdir /var/log/pods/org-1_managed-asm-local-readiness-xq75d_9a3275d7-5f16-4d67-8f4a-38fe0993be4a: no space left on device │
Error ini mencegah pod dimulai di node tertentu. Perilaku yang diamati muncul dari kasus ekstrem yang diketahui, yaitu file status logrotate-daemon menjadi terkunci, sehingga mencegah daemon melakukan rotasi file yang diharapkan. Untuk mengonfirmasi error ini, ikuti langkah-langkah berikut:
Tetapkan
KUBECONFIGke cluster target.Identifikasi instance
anthos-audit-logs-forwarder-xxxxyang dijadwalkan di node.KUBECONFIG=${KUBECONFIG:?} kubectl get po -n obs-system -o wide | grep anthos-audit-logs-forwarderAmbil log dari instance
anthos-audit-logs-forwarder-xxxxyang dijadwalkan di node untuk memverifikasi.KUBECONFIG=${KUBECONFIG:?} kubectl logs -n obs-system anthos-audit-logs-forwarder-xxxx -c logrotate-daemon | grep "state file /var/lib/logrotate/status is already locked"
Solusi:
Lakukan langkah-langkah berikut untuk mengatasi masalah ini:
Lakukan pemulihan ruang disk manual di direktori
/var/lognode.Tetapkan
KUBECONFIGke cluster target.Identifikasi node target di cluster.
KUBECONFIG=${KUBECONFIG:?} kubectl get no -o wideHubungkan ke node menggunakan SSH dan kosongkan ruang secara manual di direktori
/var/logpada node.logrotatemengelola file di direktori ini./var/log/audit/*/*/*/audit.log /var/log/audit*/*/*.log /var/log/auditproxy-*/*.log /var/log/global-api-*/audit.log /var/log/ceph/ceph.audit.log /var/log/fanout/audit/*.log /var/log/fanout/audit/*/*.log /var/log/netflow/*.log /var/log/fanout/operational/*.log /var/log/fanout/operational/*/*.logPeriksa file log yang berukuran sangat besar (lebih dari 100 MB) atau file yang lebih lama dari beberapa hari. Setelah memiliki file target, Anda dapat memangkas log sebagai berikut:
truncate -s 1G <target_file>Identifikasi instance
anthos-audit-logs-forwarder-xxxxyang dijadwalkan di node.KUBECONFIG=${KUBECONFIG:?} kubectl get po -n obs-system -o wide | grep anthos-audit-logs-forwarderMulai ulang instance
anthos-audit-logs-forwarder-xxxxyang dijadwalkan di node.KUBECONFIG=${KUBECONFIG:?} kubectl delete po -n obs-system anthos-audit-logs-forwarder-xxxx
Marketplace
Penarikan image Prisma Cloud gagal
Versi: 1.13.7
Gejala: Pembuatan instance layanan Prisma Cloud dari Marketplace gagal. Masalah ini disebabkan oleh tag gambar yang salah.
Solusi:
Edit deployment
twistlock-consoleuntuk mengubah tag image:KUBECONFIG=${KUBECONFIG:?} kubectl edit deployment twistlock-console -n ${PROJECT:?}Temukan baris berikut:
image: HARBOR_IP/library/twistlock/console:console_33_01_137Ganti
console_33_01_137denganconsole_33.01.137:image: HARBOR_IP/library/twistlock/console:console_33.01.137Verifikasi bahwa pod berjalan dengan benar:
KUBECONFIG=${KUBECONFIG:?} kubectl get pods -n ${PROJECT:?}Output-nya mungkin terlihat seperti contoh ini:
NAME READY STATUS RESTARTS AGE twistlock-console-58b578cbf4-5nvbk 1/1 Running 0 2m45s
Pemantauan
Sejumlah besar pemberitahuan dibuat di ServiceNow
Versi: 1.13.x
Gejala:
Setelah mengonfigurasi Monitoring untuk mengirim pemberitahuan ke ServiceNow menggunakan tugas berat MON-T0016 dan MON-T1016, sejumlah besar insiden akan otomatis dibuat di ServiceNow.
Masalah ini memiliki karakteristik berikut:
- Semua insiden kosong.
- Hanya cluster admin root dan organisasi
gdchservicesyang dapat mengirimkan pemberitahuan ke ServiceNow.
Solusi: Ikuti tugas berat MON-T0018 segera setelah menjalankan tugas berat MON-T0016 dan MON-T1016.
Beberapa pemberitahuan duplikat dibuat di ServiceNow
Versi: 1.13.x
Gejala:
Setelah mengonfigurasi Monitoring untuk mengirim pemberitahuan ke ServiceNow menggunakan tugas berat MON-T0016, MON-T1016, dan MON-T0018, beberapa pemberitahuan duplikat dibuat di ServiceNow.
Masalah ini memiliki karakteristik berikut:
- Beberapa insiden duplikat dibuat untuk beberapa pemberitahuan meskipun setelah menerapkan tugas berat MON-T0018.
Solusi: Ikuti tugas berat MON-T0019 segera setelah menjalankan tugas berat MON-T0016, MON-T1016, dan MON-T0018.
Tidak dapat melihat metrik Vertex AI
Versi: 1.13.1
Gejala: Metrik tidak dikeluarkan oleh pod dvs-frontend-server.
Solusi: Versi 1.13.1 tidak mendukung metrik terenkripsi untuk layanan Vertex AI. Jika layanan Vertex AI tidak diaktifkan selama lebih dari satu jam, mulai ulang pod pengontrol mon-admin.
Error rekonsiliasi di mon-cortex
Versi: 1.13.1, 1.13.9
Gejala: Pod mon-cortex mengalami error rekonsiliasi. Dapatkan status pod mon-cortex:
kubectl get subcomponent mon-cortex -n gpu-org-1-system-cluster
Outputnya mungkin terlihat seperti ini:
NAME AGE STATUS
mon-cortex 15h ReconciliationError
Pesan seperti ini mungkin dicatat:
message: 'E0100 - deploy: failed to install chart: release mon-cortex-backend
failed, and has been uninstalled due to atomic being set: context deadline
exceeded'
Solusi:
Periksa pod Cortex mana yang memberikan pesan seperti ini:
Warning FailedMount 11s kubelet MountVolume.MountDevice failed for volume "pvc-0ad24fdc-52ec-4080-8ac0-5784989d1da3" : rpc error: code = Internal desc = rpc error: code = Internal desc = failed to stage volume: could not open LUKS device; could not open LUKS device; could not open LUKS device; exit status 1Hapus PVC yang terkait dengan pod tersebut dan mulai ulang.
Pod metrics-server-exporter di cluster sistem mengalami error berulang
Versi: 1.13.1
Gejala: Pod metrics-server-exporter dalam cluster sistem mengalami loop error
dengan OOMKilled, tetapi tampaknya tidak mencapai batasnya. Mendiagnosis
error:
kubectl --kubeconfig $KUBECONFIG describe pod -n mon-system metrics-server-exporter-<id>
Outputnya mungkin terlihat seperti ini:
[...]
Containers:
[...]
otel-collector:
Container ID: containerd://3a1373de4880cde9e09aa9cacc109a8059ec29d9355aef1f03735fdcdcd45596
Image: gcr.io/private-cloud-staging/opentelemetry-collector:v0.93.0-gke.2
Image ID: gcr.io/private-cloud-staging/opentelemetry-collector@sha256:2b14f8fe936e725efca24dace1abcc26449d996b1480eab1b25d469a16aac221
Port: 3113/TCP
Host Port: 0/TCP
Command:
/otelcol
--config=/conf/otel-collector-config.yaml
--feature-gates=pkg.translator.prometheus.PermissiveLabelSanitization
State: Waiting
Reason: CrashLoopBackOff
Last State: Terminated
Reason: OOMKilled
Exit Code: 137
Started: Thu, 20 Jun 2024 15:55:35 +0000
Finished: Thu, 20 Jun 2024 15:56:57 +0000
Ready: False
Restart Count: 570
Limits:
cpu: 200m
memory: 200Mi
Requests:
cpu: 100m
memory: 100Mi
Environment: <none>
Solusi: Kurangi jumlah data yang ditayangkan di endpoint metrik dengan
menghapus pod dan membiarkannya dimulai ulang. time-series lama yang disimpan dalam memori akan dihapus saat melakukan hal ini, sehingga mengurangi memori yang diperlukan.
Mengabaikan pesan error rekonsiliasi ObservabilityPipeline
Versi: 1.13
Gejala:
Objek ObservabilityPipeline menampilkan log Reconciler error seperti berikut di pod root-admin-controller:
{"msg":"Reconciler error","controller":"observabilitypipeline","ObservabilityPipeline":{"name":"default","namespace":"infra-obs"},"namespace":"infra-obs","name":"default","err":"unable to reconcile project level ObservabilityPipeline: 1 error occurred:\n\t* failed to get system cluster client to install per project overrides: root admin cluster has no system cluster\n\n"}
Solusi:
Abaikan log yang memenuhi semua kondisi berikut:
"controller":"observabilitypipeline""namespace":"infra-obs""name":"default""err"berisifailed to get system cluster client to install per project overrides: root admin cluster has no system cluster
Jika Anda men-debug pemberitahuan karena error rekonsiliasi yang tinggi, abaikan log ini karena merupakan negatif palsu.
ConfigMap mon-prober-backend-prometheus-config akan direset
Versi: 1.13.0 dan 1.13.1
Gejala:
- Notifikasi
MON-A0001dipicu. ConfigMap
mon-prober-backend-prometheus-configdireset agar tidak menyertakan tugas probe, misalnya:apiVersion: v1 data: prometheus.yaml: | remote_write: - url: http://cortex-tenant.mon-system.svc:9009/push name: cortex-tenant kind: ConfigMap metadata: creationTimestamp: "2024-06-26T14:55:07Z" name: mon-prober-backend-prometheus-config namespace: mon-system resourceVersion: "6606787" uid: 1a495af0-1fdc-40b8-845b-4976e3b0f899
Solusi:
Ikuti langkah-langkah berikut untuk menyelesaikan masalah ini:
Tetapkan variabel lingkungan berikut:
KUBECONFIG: jalur ke file kubeconfig di cluster.TARGET_CLUSTER: nama cluster tempat Anda menyelesaikan masalah.
Jeda subkomponen
mon-proberdi semua cluster:kubectl --kubeconfig $KUBECONFIG annotate subcomponent mon-prober -n $TARGET_CLUSTER lcm.private.gdc.goog/paused=trueContoh:
kubectl --kubeconfig ~/root-admin-kubeconfig annotate subcomponent mon-prober -n my-org lcm.private.gdc.goog/paused=trueMulai ulang pengontrol administrator MON di setiap cluster admin:
kubectl --kubeconfig $KUBECONFIG rollout restart deploy -n obs-system mon-admin-backend-controllerProber ConfigMap diisi saat setiap probe didaftarkan.
Ikuti runbook MON-R2009 untuk menonaktifkan suara notifikasi
MON-A0001,Blackbox monitoring metrics pipeline down, karena notifikasi ini akan terus muncul.
Komponen gateway toko Cortex mengalami loop error OOMKilled
Versi: 1.13.3
Gejala: Jika Anda melihat error di Grafana saat memuat metrik atau metrik tidak dimuat sama sekali, pod cortex-store-gateway mungkin mengalami loop error.
Untuk mendiagnosis pod cortex-store-gateway dan memeriksa apakah pod tersebut mengalami loop error,
tinjau statusnya:
kubectl --kubeconfig SYSTEM_CLUSTER_KUBECONFIG describe pod \
-l app=cortex-store-gateway -n mon-system
Ganti SYSTEM_CLUSTER_KUBECONFIG dengan jalur ke
file kubeconfig dari cluster sistem.
Jika pod mengalami loop error, outputnya akan terlihat seperti contoh berikut:
State: Waiting
Reason: CrashLoopBackOff
Last State: Terminated
Reason: OOMKilled
Exit Code: 137
Solusi: Tingkatkan batas memori cortex-store-gateway untuk sementara dengan
menggunakan SubcomponentOverride. Untuk mengetahui detail tentang penerapan
SubComponentOverride, lihat runbook MON-R2008.
Berikut adalah contoh SubcomponentOverride dengan batas memori yang ditentukan:
apiVersion: lcm.private.gdc.goog/v1
kind: SubcomponentOverride
metadata:
name: mon-cortex-memory-bump
namespace: org-1-system-cluster
spec:
subComponentRef: 'mon-cortex'
backend:
operableParameters:
storeGateway:
resourcesLimit:
memory: 16Gi
Biarkan penggantian tetap berlaku hingga semua podcortex-store-gateway memiliki status Ready
dan pastikan subkomponen mon-cortex tidak dijeda:
Periksa apakah pod
cortex-store-gatewaymemiliki statusReady:kubectl --kubeconfig SYSTEM_CLUSTER_KUBECONFIG get statefulset \ -n mon-system cortex-store-gatewayOutputnya akan terlihat seperti contoh berikut jika semua pod memiliki status
Ready:NAME READY AGE cortex-store-gateway 3/3 70dKolom
READYharus menampilkan nilaiN/Nagar semua pod siap. Jika tidak, nilai yang ditampilkan adalah1/3atau2/3.Pastikan subkomponen
mon-cortextidak dijeda di organisasi tertentu:kubectl --kubeconfig ORG_ADMIN_KUBECONFIG describe subcomponent \ -n SYSTEM_CLUSTER mon-cortex | grep pausedGanti kode berikut:
ORG_ADMIN_KUBECONFIG: jalur ke file kubeconfig dari cluster admin org.SYSTEM_CLUSTER: nama cluster sistem.
Jika subkomponen dijeda, output akan menampilkan baris berikut:
lcm.private.gdc.goog/paused: trueJika tidak, outputnya kosong.
Pencadangan penarikan image proxy metrik bidang kontrol Kube di cluster pengguna
Versi: 1.13.3
Gejala: Jika metrik yang terkait dengan kube-scheduler atau
kube-controller-manager (misalnya, metrik scheduler_pending_pods dan
workqueue_depth) tidak terlihat di Grafana, mungkin ada masalah penarikan kembali image dengan pod kube-control-plane-metrics-proxy.
Untuk mendiagnosis pod kube-control-plane-metrics-proxy dan memeriksa apakah pod tersebut mengalami masalah penarikan image yang tertunda, tinjau statusnya:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG describe pod \
-l k8s-app=kube-control-plane-metrics-proxy -n obs-system
Ganti USER_CLUSTER_KUBECONFIG dengan jalur ke
file kubeconfig dari cluster pengguna.
Jika pod memiliki masalah penarikan image yang berulang, outputnya akan terlihat seperti contoh berikut:
State: Waiting
Reason: ImagePullBackOff
Ready: False
Restart Count: 0
Solusi: Ikuti langkah-langkah berikut untuk mengatasi masalah ini:
Tarik image
gcr.io/gke-release/asm/proxyv2:1.20.4-asm.0dari project Harborgpc-system-container-images. Untuk mengetahui petunjuk dan izin yang diperlukan untuk menarik image, lihat Menarik image dengan Docker.Kirim image
gcr.io/gke-release/asm/proxyv2:1.20.4-asm.0ke project Harborlibrary. Untuk mengetahui petunjuk dan izin yang diperlukan untuk mengirim image, lihat Mengirim image.Project
librarydigunakan untuk artefak yang akan di-deploy ke cluster pengguna.
Pertumbuhan WAL menyebabkan Prometheus menggunakan banyak memori
Versi: 1.13.3
Gejala: Node VM bidang kontrol sistem melaporkan peristiwa NodeHasInsufficientMemory dan EvictionThresholdMet:
kubectl describe node NODE_NAME | grep Events -A100
Outputnya mungkin terlihat seperti contoh berikut:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal NodeNotReady 12m (x8 over 10d) node-controller Node vm-e792c63a status is now: NodeNotReady
Normal NodeHasNoDiskPressure 12m (x9 over 24d) kubelet Node vm-e792c63a status is now: NodeHasNoDiskPressure
Normal NodeHasSufficientPID 12m (x9 over 24d) kubelet Node vm-e792c63a status is now: NodeHasSufficientPID
Normal NodeReady 12m (x9 over 24d) kubelet Node vm-e792c63a status is now: NodeReady
Normal NodeHasInsufficientMemory 12m (x34 over 13h) kubelet Node vm-e792c63a status is now: NodeHasInsufficientMemory
Warning EvictionThresholdMet 12m (x64 over 13h) kubelet Attempting to reclaim memory
Normal TridentServiceDiscovery 11m (x21 over 13h) csi.trident.netapp.io [iSCSI] detected on host.
Normal NodeHasSufficientMemory 6m52s (x31 over 24d) kubelet Node vm-e792c63a status is now: NodeHasSufficientMemory
Prometheus menggunakan banyak memori karena pertumbuhan WAL (write-ahead log), yang memengaruhi memori node. Pertumbuhan WAL dapat terjadi karena Cortex tidak di-deploy, sehingga masalah ini mungkin merupakan konsekuensi dari Cortex yang tidak berfungsi. Instance Prometheus kehilangan konektivitas ke Cortex dalam waktu yang lama, yang selama itu instance tersebut melakukan buffering data dalam memori dan di volume persisten (PV). Saat dihentikan, Prometheus akan memuat semua data di WAL-nya ke dalam memori saat dimulai.
Penyebab utama lainnya mungkin adalah masalah konektivitas jaringan (mesh layanan, fisik, dan jaringan atas).
Solusi: Untuk memulihkan dari status ini, tindakan yang direkomendasikan adalah mengatasi penyebab utama dan membuat Cortex berfungsi dengan baik atau mengatasi masalah konektivitas jaringan. Kemudian, tunggu hingga WAL dari Prometheus selesai. Anda tidak akan kehilangan data, tetapi jika Cortex tidak berfungsi, node tidak akan tersedia selama periode waktu yang diperlukan Cortex untuk pulih.
Atau, Anda dapat menurunkan skala Prometheus STS menjadi nol dan menghapus PV. Tindakan ini mengurangi total waktu node tidak tersedia, tetapi mengakibatkan hilangnya data. Selain itu, selama Cortex tidak berfungsi atau Anda mengalami masalah konektivitas jaringan, Anda harus mengulangi tindakan ini secara berkala. Selama ada masalah koneksi antara Prometheus dan Cortex, PV akan terisi lagi.
Ikuti langkah-langkah berikut untuk menurunkan skala Prometheus STS menjadi nol dan menghapus PV:
Turunkan skala komponen logmon-operator:
kubectl --kubeconfig ORG_SYSTEM_KUBECONFIG scale deployment -n obs-system logmon-operator --replicas 0Ganti
ORG_SYSTEM_KUBECONFIGdengan jalur ke file kubeconfig di cluster sistem org.Turunkan skala komponen
anthos-prometheus-k8s:kubectl --kubeconfig ORG_SYSTEM_KUBECONFIG scale statefulset -n obs-system anthos-prometheus-k8s --replicas 0Hapus klaim volume persisten:
kubectl --kubeconfig ORG_SYSTEM_KUBECONFIG delete pvc -n obs-system anthos-prometheus-k8s-data-anthos-prometheus-k8s-0Tingkatkan kembali skala
logmon-operator:kubectl --kubeconfig ORG_SYSTEM_KUBECONFIG scale deployment -n obs-system logmon-operator --replicas 1Tunggu hingga
anthos-prometheus-k8ssiap.
Bootstrap multi-zona
Peran cluster tidak ada
Versi: 1.13.1
Gejala: Tidak ada peran khusus untuk bootstrapping multi-zona yang akan digunakan di Tambahkan peran yang diperlukan.
Solusi: Gunakan peran cluster cluster-admin seperti yang ditentukan dalam petunjuk tertaut. Hal ini memberi pengguna lebih dari akses minimum yang diperlukan untuk melakukan tugas selanjutnya.
Resource Bootstrap yang tidak kompatibel
Versi: 1.13.1
Gejala: Resource Bootstrap yang dibuat pada langkah 3 Buat file bootstrap tidak kompatibel dengan logika yang memprosesnya.
Solusi: Edit file YAML yang dihasilkan seperti yang ditentukan di langkah 4.
Resource GlobalAPIZone tidak dibuat di API global
Versi: 1.13.1
Gejala: Control plane tidak membuat resource GlobalAPIZone untuk zona di API global, sehingga komponen yang mengandalkan resource ini tidak berfungsi dengan baik.
Solusi: Buat resource seperti yang ditunjukkan dalam Membuat resource GlobalAPIZone.
Jaringan
Jaringan Grid Node Penyimpanan Objek tidak berfungsi
Versi: 1.13.1, 1.13.3, 1.13.4
Gejala:
- Selama fase bootstrap penyimpanan objek, jaringan grid ditampilkan sebagai tidak aktif dari UI penginstal node Admin OBJ.
- cables.csv dan Cell CR menunjukkan bahwa nilai MPN di cables.csv adalah
QSFP-100G-CU2.5Muntuk koneksi antara node objsadmin penyimpanan objek dan TOR Switch.
Penjelasan
Di 1.13, kolom MPN di cables.csv digunakan untuk menentukan kecepatan yang ditetapkan pada switch Tor.
Jika kecepatan tidak disetel di port ini, peralihan tor ke konektivitas node objsadmin akan gagal. Daftar yang digunakan untuk memetakan MPN ke kecepatan tidak memperhitungkan nilai yang diberikan oleh integrator sistem, sehingga menyebabkan bootstrap penyimpanan objek gagal.
Pada sebagian besar penyiapan 1.13, vendor yang digunakan adalah: QSFP-100G-CU2.5M.
Solusi:
- Gunakan
kubectl get -A cell -oyamldi cluster root-admin untuk menemukan koneksi yang terkait dengan TOR switch dan appliance penyimpanan objek. - Ubah semua kemunculan mpn menjadi "QSFP-100G-CU3M" untuk objsadm -> torsw connect.
Berikut contohnya:
- endA: "ap-aa-torsw01:Eth1/10"
endB: "ap-aa-objsadm01:e3a"
cableType: "DAC"
mpn: "QSFP-100G-CU3M"
length: "2m"
color: "Black"
Node tidak dapat dijangkau
Versi: 1.13.1, 1.13.3, 1.13.4
Gejala:
- Selama fase bootstrapping jaringan beberapa switch tidak dapat dijangkau.
- Selama fase penginstalan DHCP, beberapa server tidak dapat dijangkau melalui alamat IP iLO-nya.
Solusi:
- Muat ulang tombol pengelolaan yang terpengaruh. Lihat runbook PNET-R0018 untuk mengetahui detailnya.
PodCIDR tidak ditetapkan ke node meskipun ClusterCIDRConfig dibuat
Versi: 1.13.1
Gejala: ClusterCIDRConfig adalah objek yang diperlukan untuk menetapkan PodCIDRs.
Meskipun ClusterCIDRConfig dibuat, PodCIDRs tidak ditetapkan. Masalah ini terjadi jika ClusterCIDRConfig dibuat pada saat yang sama
dengan saat pod ipam-controller melakukan bootstrapping. Pembuatan cluster
macet dalam status menyelaraskan.
Periksa apakah objek
ClusterCIDRConfigdibuat di cluster:kubectl --kubeconfig=CLUSTER_KUBECONFIG get clustercidrconfigs -oyamlOutputnya mungkin terlihat seperti ini:
apiVersion: v1 items: - apiVersion: networking.gke.io/v1alpha1 kind: ClusterCIDRConfig metadata: annotations: baremetal.cluster.gke.io/managed: "true" kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"networking.gke.io/v1alpha1","kind":"ClusterCIDRConfig","metadata":{"annotations":{"baremetal.cluster.gke.io/managed":"true"},"creationTimestamp":null,"name":"root-admin-control-plane"},"spec":{"ipv4":{"cidr":"172.24.0.0/21","perNodeMaskSize":23},"ipv6":{"cidr":"fd00:1::2:0/112","perNodeMaskSize":119}},"status":{}} creationTimestamp: "2024-06-17T05:27:55Z" finalizers: - networking.kubernetes.io/cluster-cidr-config-finalizer generation: 1 name: root-admin-control-plane resourceVersion: "2172" uid: d1216fe3-04ed-4356-a105-170d72d56c90 spec: ipv4: cidr: 172.24.0.0/21 perNodeMaskSize: 23 ipv6: cidr: fd00:1::2:0/112 perNodeMaskSize: 119 kind: List metadata: resourceVersion: ""Jalankan describe untuk salah satu objek node cluster yang macet dalam proses rekonsiliasi dan periksa apakah ada peristiwa
CIDRNotAvailablepada objek node:kubectl --kubeconfig=CLUSTER_KUBECONFIG describe node NODE_NAMEPeristiwa output mungkin terlihat seperti ini:
Type Reason Age From Message ---- ------ ---- ---- ------- Normal CIDRNotAvailable 3m22s (x96 over 21h) cidrAllocator Node gpc-adhoc-4f533d50vm-worker-node2-zone1 status is now: CIDRNotAvailable Warning ReconcileError 3m22s (x96 over 21h) ipam-controller CIDRAssignmentFailed, retrying: failed to get cidrs for node gpc-adhoc-4f533d50vm-worker-node2-zone1, unable to get clusterCIDRs for node gpc-adhoc-4f533d50vm-worker-node2-zone1, no available CIDRs
Solusi:
Mulai ulang pod
ipam-controller-manager:kubectl --kubeconfig=CLUSTER_KUBECONFIG -n kube-system rollout restart ds ipam-controller-managerSetelah pod
ipam-controller-managerdalam status berjalan, periksa apakahpodCIDRditetapkan ke node:kubectl --kubeconfig=CLUSTER_KUBECONFIG get nodes -oyaml | grep podCIDROutputnya mungkin terlihat seperti ini:
podCIDR: 172.24.4.0/23 podCIDRs: podCIDR: 172.24.2.0/23 podCIDRs: podCIDR: 172.24.0.0/23 podCIDRs:
Penyimpangan NTP
Versi: 1.13.1
Gejala: Node VM mengalami penyimpangan atau waktu yang tidak akurat setelah dalam mode tidur atau berjalan selama beberapa waktu.
Solusi:
- Buat koneksi SSH ke node VM dan edit file
/etc/chrony.conf. - Ganti baris
makestep 1.0 3denganmakestep 1.0 -1. Mulai ulang layanan chronyd:
systemctl restart chronyd
Anda hanya perlu melakukan perubahan ini satu kali untuk setiap VM. Perubahan tidak akan ditimpa.
Untuk perbaikan cepat langsung yang lebih cepat untuk melompati waktu, buat koneksi SSH
ke node VM dan jalankan chronyc -a makestep.
Log audit SyncServer tidak diuraikan
Versi: 1.13.1, 1.13.3, 1.13.4, 1.13.5, 1.13.6, 1.13.7
Gejala: Log audit dari SyncServer tidak diuraikan dengan benar oleh
log-remote-logger. Beberapa log audit tidak akan tersedia di grafana dan Anda mungkin melihat pesan error di pod root-admin log-remote-logger seperti:
Failed to fetch syncserver audit logs for syncserver-...
Solusi: Log audit masih tersedia di SyncServer. Ikuti
NTP-P0002 untuk
mengakses UI SyncServer dan melihat log di bagian Logs > Events.
Gagal mengekstrak gambar saat mengganti gambar
Versi: 1.13.3
Gejala: Anda mungkin melihat pesan seperti ini pada objek SwitchImageHostRequest
saat melakukan RMA Pengalihan atau saat mem-bootstrap cluster root-admin:
failed to pull or extract image "192.0.2.0:10443/gdch-switch/os:v1.13.0-pnet-aa505d9004
Jika Anda memiliki akses kubectl, gunakan akses tersebut untuk memverifikasi apakah Anda mengalami masalah ini:
kubectl --kubeconfig=<path/to/root-admin-kubeconfig> -n gpc-system get switchimagehostrequest -o yaml
Outputnya mungkin terlihat seperti contoh berikut:
kind: SwitchImageHostRequest
metadata:
annotations:
lcm.private.gdc.goog/claim-by-force: "true"
meta.helm.sh/release-name: pnet-core-assets
meta.helm.sh/release-namespace: pnet-system
creationTimestamp: "2024-08-20T04:16:36Z"
generation: 1
labels:
app.kubernetes.io/managed-by: Helm
name: v1.13.0-pnet-aa505d9004
namespace: gpc-system
resourceVersion: "149295"
uid: f6c5b880-3fdb-4679-acd4-840b52998946
spec:
fromVersion: v1.13.0-pnet-aa505d9004
toVersion: v1.13.0-pnet-aa505d9004
status:
conditions:
- lastTransitionTime: "2024-08-20T05:10:17Z"
message: ""
observedGeneration: 1
reason: TFTPRunning
status: "True"
type: TFTPReady
- lastTransitionTime: "2024-08-20T04:16:36Z"
message: 'exception: failed to pull images with config images: [{10.249.48.5:10443/gdch-switch/os:v1.13.0-pnet-aa505d9004
/shared/tftpboot/switch/images}]: failed to pull or extract image "10.249.48.5:10443/gdch-switch/os:v1.13.0-pnet-aa505d9004":
failed to pull image from source "10.249.48.5:10443/gdch-switch/os:v1.13.0-pnet-aa505d9004":
GET https://10.249.48.5:10443/v2/gdch-switch/os/manifests/v1.13.0-pnet-aa505d9004:
NOT_FOUND: artifact gdch-switch/os:v1.13.0-pnet-aa505d9004 not found'
observedGeneration: 1
reason: ReconcileBackoff
status: Unknown
type: Ready
Solusi:
Buat SwitchImageHostRequest secara manual dengan tag gambar yang benar:
- Login ke server bootstrapper.
Gunakan
gdclouduntuk mengidentifikasi versi gambar peralihan yang benar:release/gdcloud artifacts tree release/oci/ | grep -i gdch-switchOutputnya mungkin terlihat seperti contoh berikut:
│ │ │ │ └── gdch-switch/os:1.13.3-gdch.5385Dari output ini, versi gambar tombol yang benar adalah
1.13.3-gdch.5385.Edit objek
SwitchImageHostRequestyang melaporkan error:kubectl --kubeconfig=<path/to/root-admin-kubeconfig> -n gpc-system edit switchimagehostrequest <SWITCH_IMAGE_HOST_REQUEST_NAME>Edit atau ganti kolom
name,fromVersion, dantoVersionagar sesuai dengan versi gambar peralihan yang diharapkan. Dalam hal ini, nilainya adalah1.13.3-gdch.5385. Lihat outputdiffberikut, yang menggambarkan perubahan yang harus dilakukan pada objekSwitchImageHostRequest.kind: SwitchImageHostRequest metadata: - name: v1.13.0-pnet-aa505d9004 + name: 1.13.3-gdch.5385 namespace: gpc-system spec: - fromVersion: v1.13.0-pnet-aa505d9004 + fromVersion: 1.13.3-gdch.5385 - toVersion: v1.13.0-pnet-aa505d9004 + toVersion: 1.13.3-gdch.5385
Komunikasi pod StatefulSet gagal
Versi: 1.13.1, 1.13.3, 1.13.4, 1.13.5, 1.13.6, 1.13.7, 1.13.8, 1.13.9, 1.13.10
Gejala: Masalah atau gangguan konektivitas karena penghapusan objek Cilium Endpoint (CEP) tidak ditangani dengan benar setelah pod StatefulSet dimulai ulang.
Hal ini dapat menyebabkan identitas endpoint yang tidak dikelola menyebabkan kebijakan jaringan secara keliru membatalkan traffic yang sah. Pod yang terpengaruh dapat diverifikasi dengan memeriksa
tidak adanya objek CEP yang sesuai:
kubectl get cep -A | grep [*POD_IP*]
Solusi: Mulai ulang pod StatefulSet yang terpengaruh untuk memperbarui UID-nya dan
memuat ulang metadata terkait:
kubectl rollout restart statefulset [*STATEFULSET_NAME*] -n [*NAMESPACE*]
Masalah konektivitas ke instance DBS
Versi: 1.13.0, 1.13.1
Gejala: Instance Layanan Database (DBS) tidak dapat diakses dengan klien database yang menunjukkan waktu tunggu koneksi habis.
Masalah ini dapat muncul melalui komponen sistem lain yang mengandalkan DBS. Misalnya, Penagihan dapat melaporkan pesan error seperti berikut:
DBSE0301: Healthcheck: DB cluster is not healthy. Cannot connect to DBdaemon
DBSE0005: DBDaemon Client Error. secure dbdaemon connection failed: context
deadline exceeded
Solusi: Kegagalan disebabkan oleh komponen sistem jaringan yang tidak dapat menjadwalkan di cluster layanan organisasi.
Tetapkan variabel lingkungan berikut:
export KUBECONFIG=KUBECONFIG_PATH export ORG_NAME=ORG_NAMEGanti kode berikut:
KUBECONFIG_PATH: jalur ke file kubeconfig cluster admin org.ORG_NAME: nama organisasi Anda, sepertiorg-1.
Perbarui konfigurasi komponen jaringan agar dapat dijadwalkan:
kubectl --kubeconfig=KUBECONFIG_PATH kubectl -n g-ORG_NAME-shared-service-cluster patch addonconfiguration ang-overrides --type='json' -p='[{"op": "replace", "path": "/spec/configs/1/patchContent", "value": "apiVersion: apps/v1\nkind: DaemonSet\nmetadata:\n name: ang-node\n namespace: kube-system\nspec:\n template:\n spec:\n containers:\n - name: angd\n - name: bgpd\n env:\n - name: DISABLE_RECEIVED_ROUTES\n value: \"true\"\n tolerations:\n - operator: \"Exists\"\n effect: \"NoSchedule\""}]'
Konektivitas jaringan dipulihkan setelah beberapa menit.
Mesh cluster tidak dikonfigurasi dengan informasi zona
Versi: 1.13.5
Gejala: VM tidak dapat terhubung ke cluster database dalam project yang sama. Konektivitas ke load balancer internal terpengaruh. Masalah ini disebabkan oleh Clustermesh yang gagal menukar objek layanan di seluruh cluster karena tidak adanya informasi zona dalam konfigurasi nama cluster.
Solusi: Di lingkungan yang di-bootstrap sebagai multizona, lakukan langkah-langkah solusi manual berikut agar load balancer internal berfungsi:
Di cluster admin org, dapatkan nama zona:
ZONENAME="$(kubectl get controlplanes -A -o jsonpath="{.items[0].spec.zone}")" echo $ZONENAMEOutput-nya mungkin terlihat seperti contoh ini:
zone1Di cluster admin org, dapatkan ID situs zona:
SITEID="$(kubectl -n mz-system get zones $ZONENAME -o jsonpath="{.spec.siteID}")" echo $SITEIDOutput-nya mungkin terlihat seperti contoh ini:
1Mencantumkan semua cluster:
kubectl get clusters -AOutput-nya mungkin terlihat seperti contoh ini:
NAMESPACE NAME ABM VERSION DESIRED ABM VERSION CLUSTER STATE g-org-1-shared-service-cluster g-org-1-shared-service 1.30.0-gke.1592 1.30.0-gke.1592 Running org-1-system-cluster org-1-system 1.30.0-gke.1592 1.30.0-gke.1592 Running user-vm-1-cluster user-vm-1 1.16.11 1.16.11 Running user-vm-2-cluster user-vm-2 1.28.700-gke.150 1.28.700-gke.150 RunningUntuk setiap cluster, buat
CILIUM_CLUSTERNAME:CLUSTER_NAME=CLUSTER_NAME CILIUM_CLUSTERNAME=$CLUSTERNAME-zone$SITEID echo $CILIUM_CLUSTERNAMEOutput-nya mungkin terlihat seperti contoh ini:
org-1-system-zone1Untuk setiap cluster, tetapkan parameter lainnya sebagai berikut. Contoh berikut untuk org-1-system:
CLUSTER_NAMESPACE=org-1-system-cluster CLUSTER_VERSION=1.30.0-gke.1592Untuk setiap cluster, buat objek
AddOnConfigurationdan simpan di fileaddonconfig.yaml. Buat file ini untuk semua cluster yang ada dan cluster baru yang Anda buat di masa mendatang:Di halaman ini, tetapkan variabel berikut untuk memperbarui contoh kode berikut:
CLUSTER_NAMESPACE=CLUSTER_NAMESPACE CLUSTER_VERSION=CLUSTER_VERSION CILIUM_CLUSTERNAME=CILIUM_CLUSTERNAMEapiVersion: baremetal.cluster.gke.io/v1alpha1 kind: AddOnConfiguration metadata: name: cilium-addon namespace: CLUSTER_NAMESPACE spec: anthosBareMetalVersions: - CLUSTER_VERSION configs: - name: cilium-config namespace: kube-system apiVersion: v1 kind: ConfigMap patchContent: | apiVersion: v1 kind: ConfigMap metadata: name: cilium-config namespace: kube-system data: cluster-name: CILIUM_CLUSTERNAMETerapkan
addonconfig.yamldi cluster admin org:kubectl apply -f addonconfig.yamlDi cluster sistem, layanan, dan pengguna, pastikan
cluster-namediperbarui dicilium-configpada cluster. Proses ini mungkin memerlukan waktu beberapa saat untuk diperbarui, tetapi langkah ini diperlukan sebelum memulai ulang deploymentclustermesh-apiserver.kubectl get configmap -n kube-system cilium-config -o jsonpath="{.data.cluster-name}" && echoDi cluster sistem, layanan, dan pengguna, mulai ulang deployment
clustermesh-apiserver:kubectl rollout restart deployment -n kube-system clustermesh-apiserver
Alamat IP EVPN yang salah dibuat
Versi: 1.13.1, 1.13.3, 1.13.4, 1.13.5, 1.13.6, 1.13.7
Gejala: Alamat IP peering sesi interkoneksi EVPN multi-zona (MZ) yang
dibuat oleh Sistem Pengelolaan Aset Hardware (HAMS) tidak diakhiri dengan .65
atau .66, yang salah dan menghentikan sesi BGP EVPN MZ agar tidak
dibuat.
Solusi:
Untuk mengatasi masalah ini secara manual, ikuti langkah-langkah berikut:
Mencantumkan semua resource
InterconnectSession:kubectl get interconnectsession -n gpc-system --kubeconfig=/root/release/root-admin/root-admin-kubeconfig | grep zoneevpnpeeringTinjau resource
InterconnectSessionmulti-zona EVPN yang dihasilkan yang memiliki nilaiinterconnectTypeZonePeeringdanaddressFamilyEVPN:apiVersion: system.private.gdc.goog/v1alpha1 kind: InterconnectSession metadata: annotations: lcm.private.gdc.goog/claim-by-force: "true" helm.sh/resource-policy: keep creationTimestamp: null name: interconnect-session-am-aa-blsw01-zoneevpnpeering-3 namespace: gpc-system labels: system.private.gdc.goog/ipv4-session-name-1: interconnect-session-am-aa-blsw01-zoneipv4peering-3 spec: interconnectLinkRef: name: interconnect-am-aa-blsw01-zoneevpnpeering-3 namespace: gpc-system interconnectType: ZonePeering peerIP: 192.168.203.67 md5HashKey: "" peerASN: 65402 addressFamily: EVPN status: {}Untuk setiap resource
InterconnectSessionyang cocok dengan parameter ini, terapkan perbaikan berikut:- Periksa nama resource kustom sesi interkoneksi.
- Jika nama diakhiri dengan angka ganjil, perbarui bagian terakhir alamat IP peer menjadi
65menggunakan perintah di langkah berikutnya. - Jika nama diakhiri dengan angka genap, perbarui bagian terakhir alamat IP peer menjadi
66menggunakan perintah di langkah berikutnya.
Ubah resource
InterconnectSessiondengan alamat IP peer yang salah:kubectl edit interconnectsession interconnect-session-zy-aa-blsw01-zoneevpnpeering-1 -n gpc-system --kubeconfig=/root/release/root-admin/root-admin-kubeconfigTerapkan perbaikan ini ke semua resource
InterconnectSessionyang menyebabkan error.
Dasbor bidang kontrol Upper Networking tidak menampilkan data
Versi: 1.13.7
Gejala: Kueri Prometheus di TestUpperNetworkingMetrics gagal karena
metrik tidak ada di cluster org-1-system. Panel clustermesh di dasbor bidang kontrol Jaringan Atas untuk Admin Org IO tidak menampilkan data. Masalah ini berasal dari ketidakcocokan label source_cluster antara Cilium dan sistem pemantauan.
Solusi: Hapus filter source_cluster dari dasbor bidang kontrol UNET untuk menampilkan data.
Error pengalihan yang ditampilkan saat penginstalan jaringan
Versi: 1.13.1
Gejala: Selama penginstalan jaringan, beberapa pesan peringatan kabel ditampilkan. Contoh:
W0725 18:01:19.127111 39319 switch_port.go:59] Got error on getting port speed for la-ac-mgmtsw01:Eth1/46<>la-ac-base03:ilo: no speed associated with cable model: 31342 (CAT6 5ft Black)
W0725 18:01:19.127127 39319 switch_port.go:59] Got error on getting port speed for la-ac-mgmtsw01:Eth1/33<>la-ac-bm21:LOM1: no speed associated with cable model: 03982 (CAT6 4ft Black)
Pesan error ini dapat diabaikan dengan aman.
Membuat PNP izinkan-semua-egress menolak traffic yang tidak terduga
Versi:
Semua versi Google Distributed Cloud (GDC) dengan air gap dapat terpengaruh.
Gejala: Kebijakan jaringan project (PNP) allow-all-egress mengizinkan traffic ke endpoint dalam project dan endpoint eksternal di luar cluster, tetapi tidak mengizinkan traffic ke endpoint sistem. Masalah ini dapat menyebabkan akses ke sistem dan layanan pihak pertama diblokir, seperti resolusi DNS dan penyimpanan objek.
PNP allow-all-egress mungkin terlihat seperti berikut:
apiVersion: networking.gdc.goog/v1
kind: ProjectNetworkPolicy
metadata:
namespace: PROJECT_1
name: allow-all-egress
spec:
policyType: Egress
subject:
subjectType: UserWorkload
egress:
- {}
Solusi: Hapus allow-all-egress PNP. Secara default, setelah
Perlindungan pemindahan data yang tidak sah
dinonaktifkan, traffic diizinkan ke project dan endpoint eksternal di luar
endpoint cluster dan sistem.
kubectl delete pnp [*ALLOW_ALL_EGRESS_PNP_NAME*] -n [*NAMESPACE*]
Penyimpanan objek
Tidak dapat menghapus organisasi penyimpanan
Versi: 1.13.1
Gejala: Penghapusan organisasi mungkin tidak berhasil karena masalah yang mencegah penghapusan SVM selesai. Anda mungkin melihat peringatan seperti ini:
Warning StorageOrganizationDeletion 49m (x97
over 23h) StorageOrganization Reconcile error for storage org
deletion: cannot delete storage organization resources, pre-checks failed:
subnet claim "poc2/poc2-admin-svm-mgmt-network-subnet" exists,
cannot continue before it is deleted
Beberapa peringatan upgrade penyimpanan objek dapat diabaikan
Versi: 1.13.3
Gejala: Saat mengupgrade penyimpanan objek, Anda mungkin melihat peringatan seperti ini:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning ReconcileError 55m (x2 over 55m) ObjectStorageAdminNodeReconciler Reconcile error, retrying: error storing the ssh creds: 500 Internal Server Error:ErrorMessage: {"text":"The GDU service is currently busy. Try again later. Contact technical support if the issue persists.","key":"maintenance.gdu.gdu_server_locked
Solusi:
Pastikan setiap node memiliki kredensial SSH yang sesuai dan disimpan dalam secret.
Periksa node admin:
kubectl get objectstorageadminnodes -o json | jq -r '.items[].metadata.name' | while read -r nodeName; do kubectl get secret -n gpc-system $nodeName-ssh-creds; donePeriksa node penyimpanan:
kubectl get objectstoragestoragenodes -o json | jq -r '.items[].metadata.name' | while read -r nodeName; do kubectl get secret -n gpc-system $nodeName-ssh-creds; doneOutput yang berhasil akan terlihat seperti contoh berikut untuk node penyimpanan:
NAME TYPE DATA AGE gpcstgecn01-gce-gpcstgesite01-ssh-creds Opaque 2 3d23h NAME TYPE DATA AGE gpcstgecn02-gce-gpcstgesite01-ssh-creds Opaque 2 3d23h NAME TYPE DATA AGE gpcstgecn03-gce-gpcstgesite01-ssh-creds Opaque 2 3d23hJika secret tidak ditemukan, error akan terlihat seperti ini:
Error from server (NotFound): secrets "gpcstgeadm02-gce-gpcstgesite01-ssh-creds" not found
Jika perintah tidak menampilkan error apa pun, Anda dapat mengabaikan error yang dilaporkan oleh rekonsiliator dengan aman.
ObjectStorageStorageNodeReconciler laporan maintenance.gdu.gdu_server_locked
Versi: 1.13.3
Gejala: Menampilkan detail objectstoragestoragenode:
kubectl describe objectstoragestoragenode zv-aa-objs02
Outputnya mungkin terlihat seperti contoh berikut:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning ReconcileError 54m (x2 over 54m) ObjectStorageStorageNodeReconciler Reconcile error, retrying: error storing the ssh creds: 500 Internal Server Error:ErrorMessage: {"text":"The GDU service is currently busy. Try again later. Contact technical support if the issue persists.","key":"maintenance.gdu.gdu_server_locked"}
Solusi: Masalah ini dapat diabaikan. Layanan GDU mungkin terkunci sementara jika menerima terlalu banyak permintaan, tetapi layanan akan dibuka setelah beberapa menit.
Pemeriksaan upgrade Object Storage pasca-penerbangan 1.12.x -> 1.13.x gagal
Versi: 1.13.x
Gejala: CR ObjectStorageUpgrade gagal dengan error
Message: check "ObjectStorageUpgrade" of operable component "OBJ" failed with reason "BackoffLimitExceeded", please check logs in pods: [gpc-system/upgrade-managed-check-objectstorageupgrade]
Observed Generation: 2
Reason: PostflightCheckFailed
Pod gpc-system/upgrade-managed-check-objectstorageupgrade gagal dengan error
Error: check "ObjectStorageUpgrade" preflight check failed: ObjectStorageSite gce-gpcstgesite01 not ready │
Usage: │
managed [flags] │
Flags: │
--component_name string preflight check name │
--current_version string current version of the Organization │
-h, --help help for managed │
--organization-upgrade-name string the name of current OrganizationUpgrade │
--target_version string target version of the Organization │
F1023 06:18:01.122723 1 main.go:80] check "ObjectStorageUpgrade" preflight check failed: ObjectStorageSite gce-gpcstgesite01 not ready │
goroutine 1 [running]:
Penyebab utama: Mengupgrade Komponen Operasional Object Storage dari 1.12.x ke 1.13.x gagal jika cluster KIND bootstrapping belum dinonaktifkan atau dihapus. Meskipun upgrade berhasil, layanan penyimpanan objek umum, seperti membuat bucket baru atau kredensial S3 melalui RBAC Kubernetes, mungkin gagal karena error validasi sertifikat TLS. Hal ini karena pod penyimpanan objek tertentu dalam cluster KIND terus mencoba menginstal sertifikat server TLS endpoint pengelolaan StorageGRID, yang valid di 1.12.x, tetapi mungkin tidak dikenali di 1.13.x. Selama upgrade, StorageGRID menginstal sertifikat server TLS baru yang dapat diverifikasi, tetapi pod cluster KIND menggantinya dengan sertifikat lama yang tidak valid, sehingga menyebabkan error sertifikat TLS.
Solusi: Persyaratan berikut harus benar:
- Upgrade Object Storage dari 1.12.x ke 1.13.x
- Cluster bootstrapping (cluster KIND) masih ada
Ikuti langkah-langkah berikut:
- Dapatkan
kubeconfigyang memiliki izin lihat dan ubah ke resourceObjectStorageSitedi cluster bootstrapping (cluster KIND). Tetapkan alias ke
kubectlyang terhubung ke cluster bootstrapping (cluster KIND):alias kubectlkind="kubectl --kubeconfig <Full path to the kubeconfig of the bootstrapping cluster>Dapatkan instance resource kustom
ObjectStorageSitedari cluster bootstraper. Harus ada satu instance resourceObjectStorageSite:SITENAME=$(kubectlkind get ObjectStorageSite -A -o jsonpath='{.items[0].metadata.name}')Tambahkan anotasi jeda penyimpanan objek ke instance resource
ObjectStorageSite:kubectlkind annotate ObjectStorageSite "${SITENAME:?}" storagegrid.netapp.storage.private.gdc.goog/paused=trueVerifikasi bahwa anotasi jeda penyimpanan objek telah ditambahkan ke instance
ObjectStorageSite:kubectlkind get ObjectStorageSite "${SITENAME:?}" -o jsonpath='{.metadata.annotations}' | jqDapatkan
kubeconfigyang memiliki akses lihat dan izin patch status ke resourceObjectStorageClusterdi cluster admin root.Tetapkan alias ke kubectl yang terhubung ke cluster admin root:
alias kubectlrootadmin="kubectl --kubeconfig <Full path to the kubeconfig of the root admin >"Periksa apakah ada instance resource
ObjectStorageClusterdi cluster admin root:kubectlrootadmin get ObjectStorageClusterJika tidak ada instance resource
ObjectStorageCluster, solusi telah selesai. Anda mungkin perlu melakukan prosedur upgrade Object Storage lagi.Dapatkan URL endpoint pengelolaan dari status resource
ObjectStorageSitedi cluster bootstrapping:MGMT_ENDPOINT=$(kubectlkind get ObjectStorageSite -o jsonpath='{.items[0].status.managementAPIEndpointURL}')Validasi apakah variabel lingkungan
$MGMT_ENDPOINTtelah ditetapkan. Endpoint harus dimulai denganhttps://:echo ${MGMT_ENDPOINT:?}Lakukan langkah-langkah yang tersisa hanya jika ada tepat satu instance resource
ObjectStorageClusterdi cluster admin root. Jika tidak, lakukan prosedur upgrade Object Storage lagi:kubectlrootadmin patch ObjectStorageCluster <the name of ObjectStorageCluster> --type=merge --subresource status --patch "status: {managementAPIEndpointURL: '${MGMT_ENDPOINT:?}'}"Mulai ulang pod gpc-system/obj-infra-cluster-cm:
kubectlrootadmin rollout restart deployment -n gpc-system obj-infra-cluster-cm-backend-controllerVerifikasi apakah endpoint pengelolaan telah ditambahkan ke status resource
ObjectStorageCluster:kubectlrootadmin get ObjectStorageCluster -o jsonpath='{.items[0].status}' | jqMulai ulang pemeriksaan postlight dengan menghapus tugas Kubernetes pemeriksaan postflight
gpc-system/upgrade-managed-check-objectstorageupgrade-<random suffix>. Tugas akan segera dibuat ulang.
Node tidak dapat dijangkau di Jaringan Data
Ini adalah masalah langka yang dapat terjadi jika pod anetd terjebak dalam loop error.
Resource kernel yang penting untuk konektivitas node dapat mengalami masalah dalam status yang rusak.
Panduan ini menguraikan gejala masalah ini serta langkah-langkah yang dapat dilakukan untuk menyelesaikan masalah tersebut.
Versi:
Semua versi Google Distributed Cloud (GDC) dengan air gap dapat terpengaruh.
Gejala:
Jika masalah ini terjadi, Anda mungkin melihat gejala berikut:
- Node macet dalam status
NotReady - Mendeskripsikan node akan menampilkan pesan
kubelet:kubelet was found unhealthy; repair flag : true - Akses SSH ke node tidak dapat dilakukan di Jaringan Data
Solusi:
Gunakan petunjuk berikut untuk memperbaiki setiap node yang tidak sehat:
Dapatkan alamat IP Pengelolaan node yang terpengaruh:
kubectl --kubeconfig ROOT_ADMIN_KUBECONFIG get -n gpc-system servers/NODE_NAME -ojsonpath='{.spec.managementNetwork.ips[0]}'Dapatkan akses SSH ke node yang terpengaruh.
Hubungkan ke node menggunakan SSH menggunakan alamat IP Pengelolaan node.
Di node, jalankan perintah berikut, lalu tutup koneksi SSH:
tc filter del dev bond0 egressMulai ulang daemonset
anetduntuk cluster dengan node yang terpengaruh:kubectl --kubeconfig AFFECTED_CLUSTER_KUBECONFIG rollout restart ds/anetd -n kube-systemMasa berlaku sertifikat endpoint load balancer StorageGRID telah habis
Versi: 1.13.10, 1.13.11, 1.13.12
Gejala: Proxy penyimpanan objek melaporkan 502 Bad Gateway.
Solusi: Ikuti OBJ T0003.
Sistem operasi
Pod macet dalam status init
Versi: 1.13.1
Gejala: Node melaporkan siap, tetapi akses SSH ke node lambat dan
dan top -n 1 menunjukkan > 100 proses zombie.
Solusi:
- Ikuti OS-P0001 untuk menguras server. Pengurasan daya mungkin memerlukan waktu lebih dari 20 menit. Jika pengurasan tidak berhasil setelah satu jam, lanjutkan ke langkah berikutnya.
Mulai ulang server dengan membuat koneksi SSH ke server dan mengeluarkan perintah berikut:
systemctl rebootMungkin diperlukan mulai ulang kedua untuk memulihkan server sepenuhnya.
Verifikasi bahwa akses SSH tidak lagi lambat dan jumlah proses zombie jauh lebih rendah, sebaiknya kurang dari 30.
Keluarkan server dari mode hemat daya dengan menyetel
maintenancekefalsedi server.
bm-system-machine-preflight-check Tugas Ansible untuk node bare metal atau VM gagal
Versi: 1.13.1
Gejala: Modul kernel nf_tables tidak dimuat setelah dimulai ulang, sehingga menyebabkan
tugas Ansible cluster gagal dengan error
Either ip_tables or nf_tables kernel module must be loaded. Masalah ini terjadi saat node bare metal atau VM di-reboot sebelum disediakan sepenuhnya.
Pekerjaan Ansible mungkin menampilkan error seperti ini:
fatal: [172.20.128.23]: FAILED! => {"changed": false, "msg": "following are the error messages for each failed preflight check {'check_netw
orking_kernel_module_pass': 'Either ip_tables or nf_tables kernel module must be loaded. Use the command \"modprobe <ip_tables OR nf_tables
>\" to load the module.'}"}
Solusi:
Buat koneksi SSH ke node dan jalankan perintah berikut:
modprobe nf_tables
VM tanpa ruang penyimpanan yang tersisa di perangkat
Versi: 1.13.1, 1.13.3, 1.13.4, 1.13.5
Gejala: Jika direktori log /var/log penuh, Node mungkin macet pada status NotReady dan Pod mungkin gagal dimulai karena error no space left on device. Untuk memeriksanya, jalankan perintah berikut di node dan periksa apakah penggunaannya sekitar 100%.
df -h /var/log
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rocky-rl--var_log 15G 15G 20K 100% /var/log
Solusi:
Login ke node yang mengalami masalah dan bersihkan arsip log lama untuk /var/log/messages.
find /var/log -name "messages*" -mtime +4 -deleteSebaiknya terus terapkan solusi sementara berikut untuk mencegahnya terjadi. Solusinya adalah membuat
AnsiblePlaybookdan menerapkan perubahan melalui CROSPolicykustom yang bertanggung jawab untuk mengonfigurasi OS target dengan aman (mesin BM+VM). Lihat proses OS-P0005 untuk mengetahui detail selengkapnya.Tetapkan variabel lingkungan berikut:
export KUBECONFIG=<the path to the kubeconfig file>Buat playbook Ansible untuk solusi sementara:
kubectl --kubeconfig=${KUBECONFIG:?must be set} apply -f - <<EOF apiVersion: system.private.gdc.goog/v1alpha1 kind: AnsiblePlaybook metadata: name: update-logrotate namespace: gpc-system spec: playbook: | - name: Set the default context for the /etc/kubernetes path to etc_t hosts: all gather_facts: no tasks: - name: Change log rotation for /var/log/messages block: - name: Check if /etc/logrotate.d/syslog exists check_mode: false ansible.builtin.stat: path: '/etc/logrotate.d/syslog' register: syslog_exists - name: Comment out /var/log/messages lines in syslog ansible.builtin.replace: path: '/etc/logrotate.d/syslog' regexp: '^/var/log/messages' replace: '# /var/log/messages' when: syslog_exists.stat.exists - name: Change logrotate config for /var/log/messages ansible.builtin.blockinfile: path: '/etc/logrotate.d/syslog' block: | /var/log/messages { daily rotate 4 missingok notifempty sharedscripts postrotate /usr/bin/systemctl kill -s HUP rsyslog.service >/dev/null 2>&1 || true endscript } when: syslog_exists.stat.exists EOFIdentifikasi inventaris target yang perlu menerapkan perubahan, targetnya bisa berupa
InventoryMachineindividual atauNodePool. Lihat proses OS-P0005 (2. Identifikasi inventaris target untuk konfigurasi runtime) untuk mengetahui detailnya.Contoh
OSPolicyberikut menyertakan dua inventaris target di bagianspec.inventory, Anda dapat menambahkan lebih banyak inventaris sesuai kebutuhan.kubectl --kubeconfig=${KUBECONFIG:?must be set} apply -f - <<EOF apiVersion: system.private.gdc.goog/v1alpha1 kind: OSPolicy metadata: name: manual-update-logrotate namespace: gpc-system spec: inventory: - apiVersion: baremetal.cluster.gke.io/v1 kind: NodePool name: control-plane-node-pool namespace: org-1-system-cluster - apiVersion: baremetal.cluster.gke.io/v1 kind: NodePool name: control-plane-node-pool namespace: user-vm-1-cluster policy: installPlaybook: name: update-logrotate EOFValidasi
Lihat proses OS-P0005 (validasi) untuk melacak status eksekusi kebijakan.
Pod macet dalam status ContainerCreating
Versi: 1.13.3, 1.13.5, 1.13.6
Gejala: Node ditampilkan sebagai sehat, tetapi memiliki banyak pod yang macet dalam status
ContainerCreating dan Anda tidak dapat membuat koneksi SSH ke server.
Solusi: Lakukan siklus daya pada server dan pastikan Anda dapat membuat koneksi SSH ke node saat server kembali aktif.
Tidak dapat menjalankan SSH ke node yang disediakan
Versi: 1.13.5
Gejala: Node disediakan, tetapi SSH mengalami waktu tunggu habis di IP pengelolaan dan data.
Solusi sementara: Mulai ulang node melalui iLO. Setelah melakukan booting, gunakan SSH untuk login dan nonaktifkan
clamonacc dengan systemctl stop clamonacc; systemctl disable clamonacc.
Node Bare Metal gagal di-booting dari image OS terbaru karena booting aman tidak mengenali tanda tangan OS
Versi: 1.13.12
Gejala: Setelah mengupgrade ke versi 1.13.12, jika node di-reboot, OS gagal melakukan booting ke kernel baru. Layar konsol iLO menampilkan masalah terkait boot aman:
../../grub-core/loader/i386/efi/linux.c:385:(hd0,gpt2)/vmlinuz-4.18.0-425.131.e.18.ciqfipscompliant.40.1.x86_64 has invalid signature,..:
../../grub-core/loader/i386/efi/linux.c:256: you need to load the kernel first.
Solusi:
- Untuk setiap node yang gagal di-boot karena masalah ini, buka layar GRUB melalui konsol iLO, lalu pilih
Rocky Linux 4.18.0-425.131.e.18.ciqfipscompliant.38.1.x86_64sebagai target boot. Prosedur ini membuat node melakukan booting ke kernel baik yang diketahui sebelumnya. Untuk semua server bare metal yang diupgrade ke versi GDC 1.13.12, lakukan langkah-langkah berikut untuk mencegah kegagalan booting:
- Buat koneksi SSH ke server.
- Jalankan perintah berikut di server untuk menghapus kernel yang bermasalah:
dnf remove kernel-core-4.18.0-425.131.e.18.ciqfipscompliant.40.1.x86_64- Pastikan kernel default berhasil disetel kembali ke versi yang berfungsi dengan baik:
grubby --default-kernel
Hasilnya adalah /boot/vmlinuz-4.18.0-425.131.e.18.ciqfipscompliant.38.1.x86_64.
Infrastruktur Operations Suite (OI)
SSA tidak diperlukan untuk Hardware 3.0
Konfigurasi adaptor RAID berbeda untuk Hardware 3.0. Server OIC Hardware 3.0 menggunakan drive yang dienkripsi sendiri, sehingga peluncuran Administrasi Penyimpanan Cerdas (SSA) tidak lagi diperlukan. Diperlukan langkah-langkah tambahan untuk menentukan ID disk berdasarkan per server. Lihat bootstrap server OI.
Keamanan perimeter
Cluster sistem org macet selama bootstrap org
Versi: 1.13.1
Gejala: Selama bootstrap organisasi, cluster sistem org mungkin macet. Pod edr-sidecar-injector dalam status tertunda. Saat mencoba menghapus pod ini, Anda mungkin melihat pesan error seperti ini:
Delete failed with `Internal error occurred: failed calling webhook "validation.gatekeeper.sh": failed to call webhook: Post "https://gatekeeper-webhook-service.opa-system.svc:443/v1/"
Pada saat yang sama, beberapa pod yang tertunda lainnya mungkin memiliki pesan error seperti ini:
Error creating: Internal error occurred: failed calling webhook "edr-sidecar-injector.gpc-system.internal": failed to call webhook: Post "https://edr-sidecar-injector.gpc-system.svc:443/mutate?timeout=10s": dial tcp 172.20.3.222:443: connect: connection refused
Sistem memerlukan intervensi manual untuk membuka kuncinya.
Solusi:
- Buat duplikat
MutatingWebhookConfigurationCRedr-sidecar-injector-webhook-cfgdi cluster sistem. - Buat duplikat
ValidatingWebhookConfigurationCRgatekeeper-validating-webhook-configurationdi cluster sistem. - Hapus CR
edr-sidecar-injector-webhook-cfgdan CRgatekeeper-validating-webhook-configurationdari cluster sistem. - Tunggu hingga pod
edr-sidecar-injectordangatekeeper-controller-managerkembali aktif. - Pulihkan CR webhook dengan perintah
kubectl apply.
Grup alamat firewall PANW tidak diperbarui dengan perubahan klaim CIDR
Versi: 1.13.1
Gejala: Selama bootstrap, OCIT cidr-claim diperbarui dengan nilai yang benar,
tetapi firewall AddressGroups tidak. Pasangan AddressGroups, khususnya vsys1-root-ocit-network-cidr-group dan ocvsys1-root-ocit-network-cidr-group, menggunakan blok jaringan yang tidak tumpang-tindih dengan yang sebenarnya digunakan di OIR. OIR tidak dapat menyelesaikan data zona GDC, dan kueri akan mencapai batas waktu tanpa respons.
Solusi:
Setelah perubahan cidr-claim, pastikan AddressGroup diperbarui dengan cidr-claim terbaru dengan memulai ulang deployment fw-core-backend-controller di namespace fw-system pada cluster root-admin.
Server fisik
Bootstrap server gagal karena masalah POST di server HPE
Versi: 1.13.1
Gejala: Bootstrap server gagal saat server gagal melewati proses POST boot up. Login ke ILO dan memeriksa konsol server menampilkan error berikut:
Symptom: An Invalid Opcode Exception has occurred indicating
that the processor tried to execute an invalid, undefined opcode,
or an instruction with invalid prefixes.
Causes: This issue is typically a software or firmware issue and
not indicative of a hardware problem
Causes: This issue is typically a software or firmware issue and
not indicative of a hardware problem.
ACTION : Reboot the server.
Solusi:
Dari iLO, klik Power Button, lalu pilih Cold Boot.
Server macet dalam status penyediaan
Versi: 1.13.1, 1.13.3, 1.13.5
Gejala: Server mengalami masalah dalam status penyediaan selama bootstrap server. Periksa status server:
k get servers -A | grep -v availabl
Outputnya mungkin terlihat seperti ini:
NAMESPACE NAME AGE RACK MACHINE-CLASS MANAGEMENT-IP DATA-IP DATA-IP BMC-IP CLUSTER NODEPOOL STATE PROVISION-READY
gpc-system ag-aa-bm01 21h ag-aa o1-highmem1-40-gdc-metal 192.0.2.0 198.51.100.0 203.0.113.0 provisioning
gpc-system ag-ab-bm01 21h ag-ab o1-highmem1-40-gdc-metal 192.0.2.0 198.51.100.1 203.0.113.0 provisioned true
gpc-system ag-ac-bm01 21h ag-ac o1-highmem1-40-gdc-metal 192.0.2.0 198.51.100.2 203.0.113.0 provisioning
Solusi:
Mulai dhcp secara manual dengan konfigurasi yang didownload dari cluster KIND. Dalam contoh ini,
/tmp/dhcp.confadalah konfigurasi DHCP dari cluster KIND:docker run -d -it --network host --name dnsmasq -v /tmp/dhcp.conf:/etc/dnsmasq.conf --cap-add=NET_ADMIN --restart always 198.51.100.255/gpc-system-container-images/private-cloud-staging/dnsmasq:VERSIONGanti
VERSIONdengan versi rilis seperti yang dijelaskan dalam petunjuk upgrade di Upgrade komponen File Manual untuk Cluster Admin Root & Org, misalnya1.13.1-gdch.525.Periksa konfigurasi BIOS di server dan pastikan
NetworkBoottidak diaktifkan untuk NIC dataplane (bernama dalam polaSlot{i}Nic{i}).Periksa BIOS dengan panggilan API:
curl -kv https://{bmcIP}/redfish/v1/Systems/1/bios -u $bmcUser:$bmcPasswordDengan
$bmcUserdan$bmcPasswordadalah sandi untuk ILO, yang dapat ditemukan di file atau direktoricellcfgdalam secret bernamabmc-credentials-<server-name>, misalnya,bmc-credentials-ai-aa-bm01. Pastikan output perintah ini menampilkanSlot1Nic1: Disabled.Jika salah satu
Slot{i}Nic{i}tersebut memilikiNetworkBoot, nonaktifkan dengan BIOS settings API.curl -kv https://{bmcIP}/redfish/v1/Systems/1/bios/settings -u $bmcUser:$bmcPassword -X PATCH -d '{"Attributes": {"Slot{i}Nic{i}":"Disabled"}}' -H 'content-type: application/json'Ganti
Slot{i}Nic{i}dengan nama slot yang memiliki masalah dalam payload.Mulai ulang server.
Server DL380a gagal melakukan penyediaan
Versi: 1.13.3, 1.13.4, 1.13.5
Gejala: Penyediaan server gagal pada tugas enkripsi untuk model HPE DL380a.
Status CR Server macet di available selama bootstrap server:
# server name
export SERVER_NAME=
kubectl --kubeconfig "${KUBECONFIG:?must be set}" get servers ${SERVER_NAME} -n gpc-system
Solusi:
Ikuti IAM-R0004 untuk membuat
KUBECONFIGbagiroot-admin-cluster.Ikuti PLATAUTH-G0001 untuk membuat kunci SSH
root-id_rsauntukCLUSTER_NS=root.Jeda server dengan menambahkan anotasi
server.system.private.gdc.goog/pausedke resource kustom server:kubectl --kubeconfig "${KUBECONFIG:?must be set}" annotate server ${SERVER_NAME:?} -n gpc-system --overwrite server.system.private.gdc.goog/paused=''Login ke server dari IP pengelolaan:
export MGMT_IP=$(kubectl --kubeconfig "${KUBECONFIG:?must be set}" get server ${SERVER_NAME:?} -n gpc-system -o=jsonpath='{.spec.managementNetwork.ips[0]}') ssh $MGMT_IP -i ~/.ssh/root-id_rsaMengaktifkan enkripsi secara manual:
/opt/MegaRAID/storcli/storcli64 /call/eall/sall secureerase force /opt/MegaRAID/storcli/storcli64 /c0 delete securitykey /opt/MegaRAID/storcli/storcli64 /c0 set securitykey useekms jAnda akan mendapatkan output perintah yang mirip dengan:
root@ubuntu:~# /opt/MegaRAID/storcli/storcli64 /call/eall/sall secureerase force CLI Version = 007.2417.0000.0000 Apr 21, 2023 Operating system = Linux 5.4.0-1072-fips Controller = 0 Status = Success Description = Drive Secure Erase Succeeded. root@ubuntu:~# /opt/MegaRAID/storcli/storcli64 /c0 delete securitykey CLI Version = 007.2417.0000.0000 Apr 21, 2023 Operating system = Linux 5.4.0-1072-fips Controller = 0 Status = Success Description = None Controller Properties : ===================== ------------------------ Ctrl Method Result ------------------------ 0 delete Key Success ------------------------ root@ubuntu:~# /opt/MegaRAID/storcli/storcli64 /c0 set securitykey useekms j { "Controllers":[ { "Command Status" : { "CLI Version" : "007.2417.0000.0000 Apr 21, 2023", "Operating system" : "Linux 5.4.0-1072-fips", "Controller" : 0, "Status" : "Success", "Description" : "None" }, "Response Data" : { "Controller Properties" : [ { "Ctrl" : 0, "Method" : "Set Security using EKMS", "Result" : "Please reboot the system for the changes to take effect" } ] } } ] }Jika Anda mendapati perintah terakhir tidak berhasil atau Anda melihat error seperti "Status EKM BIOS tidak valid", coba mulai ulang server dan iLO, lalu jalankan kembali langkah ini.
root@ubuntu:~# /opt/MegaRAID/storcli/storcli64 /c0 set securitykey useekms j { "Controllers":[ { "Command Status" : { "CLI Version" : "007.2417.0000.0000 Apr 21, 2023", "Operating system" : "Linux 5.4.0-1072-fips", "Controller" : 0, "Status" : "Failure", "Description" : "None", "Detailed Status" : [ { "Ctrl" : 0, "Method" : "Set Security using EKMS", "Result" : "-", "ErrMsg" : "Invalid BIOS EKM status", "ErrCd" : 255 } ] } } ] }Jika perintah terakhir berhasil, mulai ulang server seperti yang diinstruksikan.
Buat drive logis secara manual:
Setelah server selesai di-reboot, login ke server dari IP pengelolaan lagi dan cantumkan semua drive yang tersedia:
ssh $MGMT_IP -i ~/.ssh/root-id_rsa /opt/MegaRAID/storcli/storcli64 /c0 show jOutput perintah terakhir mungkin terlihat seperti contoh ini:
{ "Controllers":[ { "Command Status" : { "CLI Version" : "007.2417.0000.0000 Apr 21, 2023", "Operating system" : "Linux 5.4.0-1072-fips", "Controller" : 0, "Status" : "Success", "Description" : "None" }, "Response Data" : { "Product Name" : "HPE MR416i-o Gen11", "Serial Number" : "******", "PCI Slot Number" : 17, "SAS Address" : "******", "PCI Address" : "00:12:00:00", "System Time" : "09/12/2024 23:32:48", "Mfg. Date" : "09/15/23", "Controller Time" : "09/12/2024 23:32:47", "FW Package Build" : "52.26.3-5379", "BIOS Version" : "7.26.00.0_0x071A0000", "FW Version" : "5.260.03-3985", "Driver Name" : "megaraid_sas", "Driver Version" : "07.713.01.00-rc1", "Current Personality" : "RAID-Mode ", "Vendor Id" : 4096, "Device Id" : 4322, "SubVendor Id" : 5520, "SubDevice Id" : 808, "Host Interface" : "PCI-E", "Device Interface" : "SAS-12G", "Bus Number" : 18, "Device Number" : 0, "Function Number" : 0, "Domain ID" : 0, "Security Protocol" : "SPDM-1.0.0", "Physical Drives" : 8, "Drive LIST" : [ { "EID:Slt" : "252:1", "DID" : 0, "State" : "UGood", "DG" : "-", "Size" : "1.60 TB", "Intf" : "SAS", "Med" : "SSD", "SED" : "Y", "PI" : "N", "SeSz" : "512B", "Model" : "MO001600PXVRU ", "Sp" : "U", "Type" : "-" }, { "EID:Slt" : "252:2", "DID" : 1, "State" : "UGood", "DG" : "-", "Size" : "1.60 TB", "Intf" : "SAS", "Med" : "SSD", "SED" : "Y", "PI" : "N", "SeSz" : "512B", "Model" : "MO001600PXVRU ", "Sp" : "U", "Type" : "-" }, { "EID:Slt" : "252:3", "DID" : 2, "State" : "UGood", "DG" : "-", "Size" : "7.68 TB", "Intf" : "SAS", "Med" : "SSD", "SED" : "Y", "PI" : "N", "SeSz" : "512B", "Model" : "VO007680PXVRT ", "Sp" : "U", "Type" : "-" }, { "EID:Slt" : "252:4", "DID" : 3, "State" : "UGood", "DG" : "-", "Size" : "7.68 TB", "Intf" : "SAS", "Med" : "SSD", "SED" : "Y", "PI" : "N", "SeSz" : "512B", "Model" : "VO007680PXVRT ", "Sp" : "U", "Type" : "-" }, { "EID:Slt" : "252:5", "DID" : 4, "State" : "UGood", "DG" : "-", "Size" : "7.68 TB", "Intf" : "SAS", "Med" : "SSD", "SED" : "Y", "PI" : "N", "SeSz" : "512B", "Model" : "VO007680PXVRT ", "Sp" : "U", "Type" : "-" }, { "EID:Slt" : "252:6", "DID" : 5, "State" : "UGood", "DG" : "-", "Size" : "7.68 TB", "Intf" : "SAS", "Med" : "SSD", "SED" : "Y", "PI" : "N", "SeSz" : "512B", "Model" : "VO007680PXVRT ", "Sp" : "U", "Type" : "-" }, { "EID:Slt" : "252:7", "DID" : 6, "State" : "UGood", "DG" : "-", "Size" : "7.68 TB", "Intf" : "SAS", "Med" : "SSD", "SED" : "Y", "PI" : "N", "SeSz" : "512B", "Model" : "VO007680PXVRT ", "Sp" : "U", "Type" : "-" }, { "EID:Slt" : "252:8", "DID" : 7, "State" : "UGood", "DG" : "-", "Size" : "7.68 TB", "Intf" : "SAS", "Med" : "SSD", "SED" : "Y", "PI" : "N", "SeSz" : "512B", "Model" : "VO007680PXVRT ", "Sp" : "U", "Type" : "-" } ], "Enclosures" : 1, "Enclosure LIST" : [ { "EID" : 252, "State" : "OK", "Slots" : 8, "PD" : 8, "PS" : 0, "Fans" : 0, "TSs" : 0, "Alms" : 0, "SIM" : 0, "Port#" : "2I" } ] } } ] }Anda harus menyimpan 2 ID
EID:SltdenganSizesama dengan1.60 TB, dalam hal ini:252:1,252:2Kemudian, buat drive logis menggunakan ID
EID:Slt:/opt/MegaRAID/storcli/storcli64 /c0 add vd type=raid1 drives=252:1,252:2 SEDOutput perintah terakhir akan terlihat seperti contoh ini:
/opt/MegaRAID/storcli/storcli64 /c0 add vd type=raid1 drives=252:1,252:2 SED CLI Version = 007.2417.0000.0000 Apr 21, 2023 Operating system = Linux 5.4.0-1072-fips Controller = 0 Status = Success Description = Add LD Succeeded.Mock status enkripsi disk di CR Server.
Edit status CR Server:
kubectl edit-status --kubeconfig "${KUBECONFIG:?must be set}" server ${SERVER_NAME:?} -n gpc-systemTambahkan atau ubah status
DiskEncryptionEnabledmenjadi benar (true):- lastTransitionTime: "<time>" message: "" observedGeneration: 1 reason: DiskEncryptionJobSucceeded status: "True" type: DiskEncryptionEnabledHapus tugas enkripsi server jika ada:
kubectl --kubeconfig "${KUBECONFIG:?must be set}" delete job server-encrypt-and-create-logical-drive-${SERVER_NAME:?} -n gpc-systemLanjutkan server agar penyediaan dilanjutkan:
kubectl --kubeconfig "${KUBECONFIG:?must be set}" annotate server ${SERVER_NAME:?} -n gpc-system --overwrite server.system.private.gdc.goog/paused-
Penghapusan aman gagal tanpa lisensi
Versi: 1.13.5
Gejala: Jika server mengalami masalah saat penginstalan server, Anda mungkin melihat status di CR server seperti ini:
- lastTransitionTime: "2024-09-10T20:28:33Z"
message: 'unable to trigger secure erase: unable to complete secure erase
for server "zx-ad-bm07": failed to post payload to /redfish/v1/Systems/1/Actions/Oem/Hpe/HpeComputerSystemExt.SecureSystemErase:
400: {"error":{"code":"iLO.0.10.ExtendedInfo","message":"See @Message.ExtendedInfo
for more information.","@Message.ExtendedInfo":[{"MessageId":"iLO.2.27.LicenseKeyRequired"}]}}'
reason: Succeeded
status: "False"
type: BMCConfigPreinstallSecureEraseTriggered
Solusi: Ikuti petunjuk dalam runbook SERV-R0014.
Keamanan Platform
Penyelesaian BYO SubCA tidak memverifikasi apakah sertifikat memiliki kunci publik yang cocok
Versi: 1.13.1
Gejala: Saat mode PKI BYO SubCA membuat permintaan penandatanganan sertifikat
(CSR) baru saat sertifikat yang ditandatangani sebelumnya diupload ke SubCA, rekonsiliator
tidak memeriksa apakah CSR baru cocok dengan sertifikat lama yang ditandatangani, dan
menandai resource kustom (CR) cert-manager CertificateRequest sebagai Ready.
Hal ini terjadi selama perpanjangan sertifikat SubCA atau rotasi manual. Pengontrol cert-manager
mencoba memperbarui status CR Certificate, yang memicu
pesan error berikut:
The certificate request has failed to complete and will be retried: Error signing certificate: error creating x509 │
│ certificate: x509: provided PrivateKey doesn't match parent's PublicKey
Solusi:
Ikuti petunjuk untuk mengupload sertifikat SubCA BYO bertanda tangan baru untuk CSR baru.
Masalah cert-manager menyebabkan penerbitan PKI BYO dengan ACME tidak berhasil
Versi: 1.13.1
Gejala: Kegagalan terjadi pada penerbitan atau perpanjangan pertama sertifikat BYO dengan Automatic Certificate Management Environment (ACME). Saat menjalankan perintah untuk memeriksa status sertifikat, Anda akan melihat bahwa sertifikat tersebut not ready:
kubectl -n istio-system get certificate.pki.security.gdc.goog/default-wildcard-cert
Outputnya terlihat mirip dengan yang berikut ini:
status:
conditions:
- lastTransitionTime: "2024-07-23T17:27:02Z"
message: 'reconciling Certificate status failed: cert-manager Certificate CR "default-wildcard-cert-pki-ct"/"pki-system" is not ready'
observedGeneration: 1
reason: ReconcileBackoff
status: "False"
type: Ready
Solusi:
Mulai ulang deployment cert-manager di cluster admin organisasi:
export KUBECONFIG=ORG_ADMIN_KUBECONFIG
kubectl rollout restart deployment/cert-manager -n cert-manager
Pengelola resource
Status project tidak tersedia dari konsol GDC
Versi: 1.13.1+
Gejala: Konsol GDC tidak menampilkan status project.
Project yang tidak dalam status Ready tidak dapat mendukung resource baru atau memproses modifikasi baru pada resource yang ada. Karena tidak dapat mengonfirmasi status project, tidak jelas kapan resource project dapat dikelola, yang menyebabkan error saat mencoba tindakan project baru.
Solusi: Lihat runbook RM-R0100 untuk mencetak status project menggunakan kubectl CLI.
Upgrade
bm-system dan tugas lainnya macet
Versi: 1.13.1
Gejala: bm-system dan tugas lain yang menjalankan playbook ansible macet di gathering facts.
Solusi: Masukkan nama node yang macet dan jalankan multipath -ll | grep failed dan multipath -ll | grep #. Jika ada hasil yang tidak kosong,ikuti runbook FILE R0020 dan FILE R0021.
IP pengelolaan tidak dapat dijangkau
Versi: 1.13.1, 1.13.3, 1.13.4, 1.13.5
Gejala: Selama upgrade, IP pengelolaan server tidak dapat dijangkau, khususnya setelah pengalihan.
Dengan Rocky Linux, saat rute statis ditambahkan, IP tujuan yang digunakan untuk mencapai rute statis harus dapat dijangkau sebelum rute statis ditambahkan. Jika switch dimulai ulang setelah upgrade OS, IP pengelolaan tersebut mungkin tidak dapat dijangkau untuk sementara.
Solusi: Buat koneksi SSH ke server menggunakan alamat IP data dan mulai ulang layanan jaringan untuk membuat ulang rute statis yang hilang:
systemctl restart NetworkManager.service
Nomor versi untuk storagecluster tidak ditampilkan
Versi: 1.13.3
Gejala: Setelah upgrade,
CR StorageCluster tidak menampilkan nilai untuk kolom status StorageVersion.
Periksa versi:
kubectl --kubeconfig <var>ROOT_ADMIN_KUBECONFIG</var> get StorageCluster -n gpc-system
Ikuti langkah-langkah dalam solusi sementara, jika kolom versi kosong.
Solusi: Mulai ulang deployment file-storage-backend-controller:
kubectl --kubeconfig <var>ROOT_ADMIN_KUBECONFIG</var> rollout restart deployment -n file-system file-storage-backend-controller
Server Bare Metal macet pada status penyediaan
Versi: 1.13.1
Gejala:
Server bare metal macet pada status 'penyediaan' dalam waktu yang lama saat organisasi sedang dibuat.
Solusi:
Konfigurasi BIOS server mungkin telah berubah sehingga server menggunakan Kartu jaringan yang salah untuk Pxebooting.
Ikuti langkah-langkah berikut untuk menonaktifkan booting jaringan NIC dataplane.
- Akses yang diperlukan:
Tetapkan nama server yang macet.
export SERVER_NAME=Tetapkan IP dan kredensial BMC server.
export ip=$(kubectl --kubeconfig "${KUBECONFIG:?must be set}" get server ${SERVER_NAME:?} -n gpc-system -ojsonpath='{.spec.bmc.ip}') export BMC_CREDENTIALS_SECRET=$(kubectl --kubeconfig "${KUBECONFIG:?must be set}" get server ${SERVER_NAME:?} -n gpc-system -ojsonpath='{.spec.bmc.credentialsRef.name}') export user=$(kubectl --kubeconfig "${KUBECONFIG:?must be set}" get secret ${BMC_CREDENTIALS_SECRET:?} -n gpc-system -ojsonpath='{.data.username}' | base64 -d) export pass=$(kubectl --kubeconfig "${KUBECONFIG:?must be set}" get secret ${BMC_CREDENTIALS_SECRET:?} -n gpc-system -ojsonpath='{.data.password}' | base64 -d)Identifikasi slot PCIe kartu jaringan dataplane di server.
kubectl --kubeconfig "${KUBECONFIG:?must be set}" get server ${SERVER_NAME} -n gpc-system -o jsonpath={.spec.serverHardware.portBond.nicPortNames}Misalnya, output berikut menunjukkan bahwa kartu jaringan diinstal di Slot 3.
["s3p1","s3p2"]Tetapkan variabel PCIEslot:
export DATA_NIC_SLOT=3Pastikan booting jaringan tidak dinonaktifkan.
curl -ks -u $user:$pass https://$ip/redfish/v1/systems/1/bios/settings | jq .Attributes | grep "Slot${DATA_NIC_SLOT}NicBoot1"Jika hasilnya adalah "NetworkBoot", Anda harus menonaktifkannya secara eksplisit.
Gunakan BMC untuk menonaktifkan fungsi booting jaringan pada kartu jaringan dataplane.
Ganti "Slot3" dalam perintah berikut dengan nomor slot yang sebenarnya.
curl -k -u "$user":"$pass" -H "Content-Type: application/json" https://$ip/redfish/v1/systems/1/bios/settings/ -X PUT --data '{"Attributes":{"Slot3NicBoot1":"Disabled"}}' | jqlalu mulai ulang komputer.
curl -k -u "$user":"$pass" -H "Content-Type: application/json" https://$ip/redfish/v1/Systems/1/Actions/ComputerSystem.Reset/ -X POST -d '{"ResetType": "ForceRestart"}' | jqServer memerlukan waktu 10 hingga 15 menit untuk kembali aktif, dan secara otomatis melanjutkan proses penyediaan.
Upgrade penyimpanan objek menampilkan error selama pemeriksaan pasca-penerbangan atau pra-penerbangan
Versi: 1.13.1
Gejala: Pemeriksaan sebelum penerbangan atau pemeriksaan setelah penerbangan gagal dengan error. Periksa log:
kubectl logs -n gpc-system upgrade-managed-check-objectstorageupgrade-87698-rrjhrW0410
Error mungkin terlihat seperti ini:
03:42:05.701163 1 upgrade_check.go:276] 1 error occurred:
* Group "/rbac.sysstd.role.vm-system.wtwf7txfmbhvujhpxrfampnrkdwqsvzro6i7rmo5tsfst4wbxldq" not ready for RBAC resource {Role vm-system g-vm-image-bucket-reader }
Error: check "ObjectStorageUpgrade" preflight check failed: 1 error occurred:
* Bucket "gpc-system/range-read-internal" not ready
F0410 03:42:05.701901 1 main.go:80] check "ObjectStorageUpgrade" preflight check failed: 1 error occurred:
* Bucket "gpc-system/range-read-internal" not ready
Solusi:
Jika error terjadi selama pemeriksaan setelah penerbangan dan semua pemeriksaan lainnya selesai tanpa error, lewati pemeriksaan setelah penerbangan. Saat upgrade dimulai ulang, Anda juga harus melewati pemeriksaan pra-penerbangan menggunakan kubeconfig admin root:
kubectl delete organizationupgrade -n gpc-system ORG_NAME && kubectl annotate -n gpc-system organization ORG_NAME upgrade.private.gdc.goog/skip-postflight-check=ok && kubectl annotate -n gpc-system organization ORG_NAME upgrade.private.gdc.goog/skip-preflight-check=okMisalnya, jika error terjadi di org-1, perintahnya akan terlihat seperti ini:
kubectl delete organizationupgrade -n gpc-system org-1 && kubectl annotate -n gpc-system organization org-1 upgrade.private.gdc.goog/skip-postflight-check=ok && kubectl annotate -n gpc-system organization org-1 upgrade.private.gdc.goog/skip-preflight-check=okJika error terjadi selama pemeriksaan pra-penerbangan dan semua pemeriksaan pra-penerbangan lainnya selesai tanpa error, lewati pemeriksaan pra-penerbangan:
kubectl delete organizationupgrade -n gpc-system ORG_NAME && kubectl annotate -n gpc-system organization ORG_NAME upgrade.private.gdc.goog/skip-preflight-check=okMisalnya, jika error terjadi di org-1, perintahnya akan terlihat seperti ini:
kubectl delete organizationupgrade -n gpc-system org-1 && kubectl annotate -n gpc-system organization org-1 upgrade.private.gdc.goog/skip-preflight-check=ok
Anda mungkin perlu menerapkan solusi ini lebih dari sekali jika gagal diterapkan.
Rollback upgrade Helm
Versi: 1.13.3
Gejala: Masalah upgrade Helm menyebabkan serangkaian rollback, sehingga gagal
menemukan Certificate dan ServiceEntry. Anda mungkin melihat pesan seperti ini:
REVISION UPDATED STATUS CHART APP VERSION DESCRIPTION
91 Thu Jul 18 13:26:42 2024 deployed iam-ais-backend-1.12.4-gdch.54 1.12.4-gdch.54 Upgrade complete
9138 Fri Jul 19 22:21:56 2024 superseded iam-ais-backend-v1.13.0-iam-9b810cbc70 v1.13.0-iam-9b810cbc70 Rollback "iam-ais-backend" failed: no Certificate with the name "ais-metrics" found
9139 Fri Jul 19 22:22:04 2024 superseded iam-ais-backend-1.12.4-gdch.54 1.12.4-gdch.54 Rollback "iam-ais-backend" failed: no ServiceEntry with the name "ais-envoy-grpc" found
9140 Fri Jul 19 22:22:16 2024 superseded iam-ais-backend-v1.13.0-iam-9b810cbc70 v1.13.0-iam-9b810cbc70 Rollback "iam-ais-backend" failed: no Certificate with the name "ais-metrics" found
9141 Fri Jul 19 22:22:30 2024 superseded iam-ais-backend-1.12.4-gdch.54 1.12.4-gdch.54 Rollback "iam-ais-backend" failed: no ServiceEntry with the name "ais-envoy-grpc" found
9142 Fri Jul 19 22:22:35 2024 superseded iam-ais-backend-v1.13.0-iam-9b810cbc70 v1.13.0-iam-9b810cbc70 Rollback "iam-ais-backend" failed: no Certificate with the name "ais-metrics" found
9143 Fri Jul 19 22:22:42 2024 superseded iam-ais-backend-1.12.4-gdch.54 1.12.4-gdch.54 Rollback "iam-ais-backend" failed: no ServiceEntry with the name "ais-envoy-grpc" found
9144 Fri Jul 19 22:22:48 2024 superseded iam-ais-backend-v1.13.0-iam-9b810cbc70 v1.13.0-iam-9b810cbc70 Rollback "iam-ais-backend" failed: no Certificate with the name "ais-metrics" found
9145 Fri Jul 19 22:22:56 2024 superseded iam-ais-backend-1.12.4-gdch.54 1.12.4-gdch.54 Rollback "iam-ais-backend" failed: no ServiceEntry with the name "ais-envoy-grpc" found
9146 Fri Jul 19 22:23:04 2024 failed iam-ais-backend-v1.13.0-iam-9b810cbc70 v1.13.0-iam-9b810cbc70 Rollback "iam-ais-backend" failed: no Certificate with the name "ais-metrics" found
Solusi: Ikuti langkah-langkah dalam runbook OCLCM-R0122.
Upgrade node atau ABM terhenti karena pod dhcp-tftp-core-server tidak dikosongkan
Versi: 1.13.3, 1.14.4, 1.14.5
Gejala: Upgrade node mungkin macet. Di status mesin bare metal, pod dhcp-tftp-core-server tidak dikuras. Anda mungkin melihat pesan seperti ini:
bareMetalMachineDrainingStatus:
currentDrainingStage: SystemCriticalPriorityClass
podsYetToDrain:
- name: dhcp-tftp-core-server-7ffcfcbb97-6wlg7
namespace: dhcp-system
resourceVersion: "5005530"
uid: f77826ea-1d57-46ff-a699-f42faa36c1d2
Solusi: Hapus paksa pod dhcp-tftp-core-server-* untuk melanjutkan. Perintah
terlihat seperti ini:
kubectl delete pod dhcp-tftp-core-server-7ffcfcbb97-6wlg7 -n dhcp-system --force
OrganizationUpgrade macet di tahap upgrade node
Versi: 1.13.3
Gejala: OrganizationUpgrade macet di tahap upgrade node. Anda mungkin melihat pesan seperti ini:
Last Transition Time: 2024-08-27T12:37:40Z
Message: observed the following reason: [JobRunning]
Observed Generation: 614
Reason: Unsuccessful
Status: Unknown
Type: service/Node
Solusi:
Periksa
upgradetaskrequestCR di cluster rootka get upgradetaskrequest -n gpc-system. Periksa apakah node masih dalam status berjalan. Pastikan perangkat macet pada tugas untuk layanan.spec: clusterType: service Last Transition Time: 024-08-27T12:37:40Z Message: job gpc-system/v1.13.0-os-aa505d9004-upg-task-org-1-os-node-upgra-czwwd is running Observed Generation: 1 Reason: JobRunning Status: Unknown Type: SucceededBuat CR
nodeupgradesecara manual untuk setiap klaim nodepool:export KUBECONFIG=ORG_ADMIN_KUBECONFIG kubectl get nodepoolclaims -n g-org-1-shared-service-cluster NAME AGE control-plane-node-pool 34d dbs-billing-system-billing-dbcluster-n2-standard-4-gdc 34d shared-service-default-worker 34dBuat CR
nodeupgradeuntuk setiap klaim nodepool. Detail anotasiupgrade.private.gdc.goog/target-release-versionharus diperoleh dari nama CRMD OS target:kubectl get crmd --kubeconfig ${ROOT_ADMIN_KUBECONFIG} | grep "os" os-1.13.1-gdch.525 35d os-v1.13.0-os-4175a6dce6 27d os-v1.13.0-os-aa505d9004 5d18hGunakan versi dari sini dalam anotasi
upgrade.private.gdc.goog/target-release-version:kubectl --kubeconfig ${ROOT_ADMIN_KUBECONFIG} get crmd os-v1.13.0-os-aa505d9004 -o json | jq -r '.spec.config.vmNodeImage' rocky-86-1.13-v20240731-1.13-r191Terapkan
yamlberikut untuk setiap nodepoolclaim:apiVersion: upgrade.private.gdc.goog/v1alpha1 kind: NodeUpgrade metadata: annotations: upgrade.private.gdc.goog/target-release-version: VERSION name: NAME labels: addon.private.gdc.goog/cluster-type: service namespace: NAMESPACE spec: inFlightConf: maxConcurrentNodes: 1 nodePoolClaimRef: name: NAME namespace: NAMESPACE nodeType: Virtual software: osImage: name: NAME version: VERSIONSetelah upgrade node selesai untuk node cluster layanan, perbarui status CR
UpgradeTaskRequestmenjadi Benar, sehingga upgrade organisasi dilanjutkan ke tahap berikutnya:kubectl patch upgradetaskrequest upg-task-org-1-os-node-upgrade-task-pckxn --type='json' -p='[{"op": "replace", "path": "/status/conditions/0/status", "value": "True"}]' --subresource=status -n gpc-system --kubeconfig /root/release/root-admin/root-admin-kubeconfigUpgrade organisasi kini akan dilanjutkan ke tahap berikutnya, dan status untuk layanan atau node akan selesai:
Last Transition Time: 2024-08-27T22:44:09Z Message: observed the following reason: [JobRunning] Observed Generation: 614 Reason: Complete Status: True Type: service/Node
Kernel gagal membuat penampung
Versi: 1.13.3
Gejala: Kernel gagal mengalokasikan memori cgroups sehingga menyebabkan kegagalan dalam membuat penampung baru.
Anda mungkin melihat pesan seperti ini:
Conditions:
Type Status LastHeartbeatTime LastTransitionTime Reason Message
---- ------ ----------------- ------------------ ------ -------
FrequentContainerdRestart False Thu, 29 Aug 2024 13:28:33 +0000 Sun, 30 Jun 2024 07:41:50 +0000 NoFrequentContainerdRestart containerd is functioning properly
KernelDeadlock False Thu, 29 Aug 2024 13:28:33 +0000 Sun, 30 Jun 2024 07:41:50 +0000 KernelHasNoDeadlock kernel has no deadlock
ReadonlyFilesystem False Thu, 29 Aug 2024 13:28:33 +0000 Sun, 30 Jun 2024 07:41:50 +0000 FilesystemIsNotReadOnly Filesystem is not read-only
ContainerRuntimeUnhealthy False Thu, 29 Aug 2024 13:28:33 +0000 Sun, 30 Jun 2024 10:52:30 +0000 ContainerRuntimeIsHealthy Container runtime on the node is functioning properly
FrequentUnregisterNetDevice False Thu, 29 Aug 2024 13:28:33 +0000 Sun, 30 Jun 2024 07:41:50 +0000 NoFrequentUnregisterNetDevice node is functioning properly
KubeletUnhealthy False Thu, 29 Aug 2024 13:28:33 +0000 Sun, 30 Jun 2024 07:41:50 +0000 KubeletIsHealthy kubelet on the node is functioning properly
FrequentKubeletRestart False Thu, 29 Aug 2024 13:28:33 +0000 Sun, 30 Jun 2024 07:41:50 +0000 NoFrequentKubeletRestart kubelet is functioning properly
FrequentDockerRestart False Thu, 29 Aug 2024 13:28:33 +0000 Sun, 30 Jun 2024 07:41:50 +0000 NoFrequentDockerRestart docker is functioning properly
MemoryPressure Unknown Thu, 29 Aug 2024 13:31:31 +0000 Thu, 29 Aug 2024 13:32:30 +0000 NodeStatusUnknown Kubelet stopped posting node status.
DiskPressure Unknown Thu, 29 Aug 2024 13:31:31 +0000 Thu, 29 Aug 2024 13:32:30 +0000 NodeStatusUnknown Kubelet stopped posting node status.
PIDPressure Unknown Thu, 29 Aug 2024 13:31:31 +0000 Thu, 29 Aug 2024 13:32:30 +0000 NodeStatusUnknown Kubelet stopped posting node status.
Ready Unknown Thu, 29 Aug 2024 13:31:31 +0000 Thu, 29 Aug 2024 13:32:30 +0000 NodeStatusUnknown Kubelet stopped posting node status.
[root@zv-aa-bm01 ~]# journalctl -u kubelet -f | grep cilium-agent
Aug 29 17:29:47 zv-aa-bm01 kubelet[48625]: E0829 17:29:47.941493 48625 pod_workers.go:1298]
"Error syncing pod, skipping" err="failed to \"StartContainer\" for \"cilium-agent\" with CrashLoopBackOff: \"back-off 5m0s restarting failed container=cilium-agent pod=anetd-pvmz4_kube-system(db55cbd2-36e3-4d20-8c6b-edbb5191232d)\"" pod="kube-system/anetd-pvmz4" podUID="db55cbd2-36e3-4d20-8c6b-edbb5191232d"
Unknown Thu, 29 Aug 2024 13:31:31 +0000 Thu, 29 Aug 2024 13:32:30 +0000 NodeStatusUnknown Kubelet stopped posting node status.
dan node menggunakan sejumlah besar cgroup:
# cat /proc/cgroups | grep memory
memory 12 380360 1
Solusi:
Pelajari salah satu hal berikut:
- Jalankan
echo 3 > /proc/sys/vm/drop_cachesdi node, lalu mulai ulang kubelet. - Jika metode sebelumnya tidak berhasil, coba mulai ulang node.
Kegagalan konektivitas sesekali ke VIP cluster eksternal
Versi: 1.13.3
Gejala: Kegagalan koneksi terputus-putus ke IP Virtual (VIP) cluster eksternal, seperti VIP bidang kontrol, VIP istio-gateway, atau VIP Harbor, akan menghasilkan error dial tcp :: connect: no route to host.
Untuk mendiagnosis masalah ini, ikuti langkah-langkah berikut:
- Hubungkan ke
cluster admin root.
Solusi ini mengasumsikan bahwa Anda men-debug alamat IP di cluster admin root. Jika Anda men-debug masalah konektivitas dengan cluster Kubernetes lainnya seperti cluster admin org. atau cluster sistem org., ubah nilai
KUBECONFIGke jalur kubeconfig cluster yang benar. Ada dua kategori IP yang diketahui dapat terpengaruh. Periksa apakah Border Gateway Protocol (BGP) mengiklankan alamat IP ke switch top-of-rack (ToR):
Jika IP adalah alamat IP bidang kontrol Kubernetes seperti
192.0.2.100, gunakan perintah ini untuk mendapatkan informasi konfigurasi:KUBECONFIG=KUBECONFIG kubectl cluster-info # Kubernetes control plane is running at https://192.0.2.100:443`Ganti
KUBECONFIGdengan jalur ke file kubeconfig Anda di cluster admin root.Untuk beberapa konfigurasi, resource kustom
BGPAdvertisedRoutemenentukan rute mana dalam alamat IP yang diiklankan ke jaringan atau sistem lain menggunakan BGP. Jika alamat IP diiklankan oleh resource kustomBGPAdvertisedRoute, gunakan perintah ini untuk mendapatkan informasi konfigurasi:TARGET_IP=TARGET_IP_ADDRESS KUBECONFIG=KUBECONFIG kubectl get BGPAdvertisedRoute -A --kubeconfig=$KUBECONFIG | grep $TARGET_IPGanti
TARGET_IP_ADDRESSdengan alamat IP yang mengalami masalah konektivitas terputus-putus.
Periksa status resource kustom
BGPSession.BGPSessionmewakili setiap sesi peering BGP yang dibuat antara cluster Kubernetes dan peer BGP eksternal. Periksa log podBGPAdvertiserdan verifikasi bahwa semua resourceBGPSessionberada dalam statusEstablished:KUBECONFIG=KUBECONFIG kubectl get pods -l app=bgpadvertiser -n kube-system # Based on the name of pods, check their logs kubectl logs pod/bgpadvertiser-gpc-adhoc-6a265a03vm-worker-node0-zone1 -n kube-system --kubeconfig=$KUBECONFIG`Output pod
BGPAdvertiseryang berfungsi dengan baik berisi cuplikan berikut:I0904 04:32:19.999906 1 main.go:217] BGP advertiser serving...\ time="2024-09-04T04:32:25Z" level=info msg="Peer Up" Key=10.200.0.1 State=BGP_FSM_OPENCONFIRM Topic=Peer\Verifikasi kestabilan koneksi. Buat dan jalankan skrip untuk memeriksa apakah konektivitas terputus-putus atau tidak stabil:
Buat skrip:
#!/bin/bash TARGET=$1 CNT=0 for i in {1..100}; do output=$(curl --no-progress-meter -k https://$TARGET 2>&1) if echo "$output" | grep -q "No route to host"; then CNT=$((CNT+ 1)) echo "Attempt $i: $output" fi sleep 0.1 done echo "$CNT out of 100 runs hit No route to host error"Jalankan skrip:
./script.sh TARGET_IP_ADDRESS:PORTGanti
PORTdengan nomor port yang mengalami masalah.Jika koneksi Anda bermasalah, Anda akan melihat output seperti berikut:
Attempt 2: curl: (7) Failed to connect to 192.0.2.201 port 10443: No route to host Attempt 4: curl: (7) Failed to connect to 192.0.2.201 port 10443: No route to host Attempt 7: curl: (7) Failed to connect to 192.0.2.201 port 10443: No route to host`
Output sebelumnya mengonfirmasi masalah ini. Periksa rute di switch TOR untuk melihat apakah konfigurasi switch TOR adalah sumber masalahnya.
Dengan asumsi traffic dihentikan untuk contoh alamat IP
192.0.2.201dan diiklankan oleh resourceBGPAdvertisedRoute, periksa hop di resourceBGPAdvertisedRouteuntuk mengidentifikasi potensi titik kegagalan:apiVersion: networking.gke.io/v1 kind: BGPAdvertisedRoute metadata: annotations: bgploadbalancer.networking.gke.io/servicename: istio-ingressgateway bgploadbalancer.networking.gke.io/servicens: istio-system creationTimestamp: "2024-08-20T19:03:02Z" generation: 150 name: default-istio-system-istio-ingressgateway-rj2fv namespace: kube-system ownerReferences: - apiVersion: networking.gke.io/v1 blockOwnerDeletion: true controller: true kind: BGPLoadBalancer name: default uid: f681f3e5-c66a-45d6-a3ac-9d7ae26f555f resourceVersion: "27133500" uid: 8ede0c81-3aba-40ce-a441-4aec334b41bd spec: bgpPeerNames: - 192.0.2.6-peer-10.0.1.1 - 192.0.2.5-peer-10.0.1.0 - 192.0.2.5-peer-10.0.1.1 - 192.0.2.6-peer-10.0.1.0 nextHops: - 192.0.2.2 - 192.0.2.3 - 192.0.2.4 prefix: 192.0.2.201/32Lihat alamat IP di kolom
nextHops. Untuk setiap alamat IP, temukan nama server. Contoh:- 192.0.2.2 zt-aa-bm08 - 192.0.2.3 zt-aa-bm09 - 192.0.2.4 zt-ab-bm01Output ini menunjukkan bahwa hop berikutnya menuju server di rak
aadan rakab. Login ke switch TOR di rakaadanab, lalu bandingkan rute di kedua rak:show ip route 192.0.2.201 vrf root-external-vrfJika rute berbeda antara switch TOR di kedua rak, Anda mengalami masalah yang dapat diatasi dengan solusi sementara ini. Output untuk masalah ini akan terlihat seperti berikut:
zt-aa-torsw01# show ip route 192.0.2.201 vrf root-external-vrf IP Route Table for VRF "root-external-vrf" '*' denotes best ucast next-hop '**' denotes best mcast next-hop '[x/y]' denotes [preference/metric] '%<string>' in via output denotes VRF <string> 192.0.2.201/32, ubest/mbest: 3/0, all-best *via 192.0.2.2, [20/0], 1w1d, bgp-65070, external, tag 64513 *via 192.0.2.3, [20/0], 1w1d, bgp-65070, external, tag 64513 *via 192.0.2.4, [20/0], 1w1d, bgp-65070, external, tag 64513 zt-aa-torsw02# sh ip route 192.0.2.201 vrf root-external-vrf IP Route Table for VRF "root-external-vrf" '*' denotes best ucast next-hop '**' denotes best mcast next-hop '[x/y]' denotes [preference/metric] '%<string>' in via output denotes VRF <string> 192.0.2.201/32, ubest/mbest: 3/0, all-best *via 192.0.2.2, [20/0], 1w3d, bgp-65070, external, tag 64513 *via 192.0.2.3, [20/0], 1w3d, bgp-65070, external, tag 64513 *via 192.0.2.4, [20/0], 1w3d, bgp-65070, external, tag 64513 zt-ab-torsw01# show ip route 192.0.2.201 vrf root-external-vrf IP Route Table for VRF "root-external-vrf" '*' denotes best ucast next-hop '**' denotes best mcast next-hop '[x/y]' denotes [preference/metric] '%<string>' in via output denotes VRF <string> 192.0.2.201/32, ubest/mbest: 2/0, all-best *via 10.249.88.2, [200/0], 1w1d, bgp-65070, internal, tag 64513 *via 192.0.2.3, [200/0], 1w1d, bgp-65070, internal, tag 64513 zt-ab-torsw02# sh ip route 192.0.2.201 vrf root-external-vrf IP Route Table for VRF "root-external-vrf" '*' denotes best ucast next-hop '**' denotes best mcast next-hop '[x/y]' denotes [preference/metric] '%<string>' in via output denotes VRF <string> 192.0.2.201/32, ubest/mbest: 2/0, all-best *via 192.0.2.2, [200/0], 1w3d, bgp-65070, internal, tag 64513 *via 192.0.2.3, [200/0], 1w3d, bgp-65070, internal, tag 64513Dalam output ini, rute di rak
aaberada dalam status yang diharapkan dengan menampilkan tiga next hop yang tercantum terhadap awalan. Namun, di rackab, awalan hanya memiliki dua hop berikutnya. Saat traffic yang ditujukan ke awalan di-hash ke rakab, node yang sesuai dengan next hop yang tidak ada tidak pernah menerima traffic dan jaringan mengalami masalah konektivitas.
Ikuti solusi untuk mengurangi masalah ini.
Solusi:
Solusi ini membantu mengatasi masalah konektivitas terputus-putus ke alamat IP tertentu dalam cluster Kubernetes.
Untuk mengurangi masalah ini, Anda harus menerapkan beberapa perubahan konfigurasi pada sesi BGP antara switch gabungan. Aggregate (AGG) mengalihkan traffic gabungan dari beberapa switch TOR. Ikuti langkah-langkah berikut untuk memperbarui semua konfigurasi yang diperlukan:
File konfigurasi bernama
switchstaticconfigmerepresentasikan konfigurasi statis pada satu switch. Download fileswitchstaticconfiguntuk kedua tombol AGG:export KUBECONFIG=KUBECONFIG kubectl get switchstaticconfig za-ab-aggsw01-static-config -n gpc-system -oyaml > /tmp/za-ab-aggsw01-static-config.yaml kubectl get switchstaticconfig za-ac-aggsw01-static-config -n gpc-system -oyaml > /tmp/za-ac-aggsw01-static-config.yamlDapatkan nomor Autonomous System Number (ASN) lingkungan:
root@bootstrapper:/tmp# kubectl get ClusterBGPRouter --kubeconfig KUBECONFIG -A -o yaml | grep networkASN | head -1 networkASN: 65030Output ini menampilkan nilai ASN
65030. Anda harus menggunakan nilai ASN apa pun yang ditampilkan di sini pada langkah-langkah berikutnya.Alamat IP loopback pada switch AGG berfungsi sebagai alamat yang stabil dan selalu aktif untuk pengelolaan, perutean, dan pemecahan masalah, meskipun koneksi jaringan lainnya tidak berfungsi. Dapatkan alamat IP loopback dari setiap switch AGG:
root@bootstrapper:~# kubectl get --kubeconfig KUBECONFIG aggswitchinternal -n gpc-system -o jsonpath='{range.items[*]}{.metadata.name}{":\t"}{.spec.loopbackIPs}{"\n"}{end}'Outputnya terlihat mirip dengan yang berikut ini:
za-ab-aggsw01-internal: ["192.0.2.1"] za-ac-aggsw01-internal: ["192.0.2.2"]Perbarui
staticswitchconfiguntuk tombol AGGza-ab-aggsw01. Tambahkan cuplikan ini ke bagianconfig:spec: config: | route-map onlydefault permit 10 match ip address prefix default router bgp ASN neighbor LOOPBACK_ADDRESS address-family l2vpn evpn route-map onlydefault in ... key chain OSPF_AUTH_KEYCHAIN_0 key 1Ganti kode berikut:
ASN: nilai ASN dari langkah sebelumnya. Dalam contoh ini, nilainya adalah65030.LOOPBACK_ADDRESS: Ini adalah alamat IP loopback switch AGGza-ac-aggsw01. Dalam contoh ini, nilainya adalah192.0.2.2.
Terapkan update yang sama ke switch AGG lainnya,
za-ac-aggsw01. Anda harus memberikan alamat loopback yang benar. Alamat IP loopback berbeda untuk setiap switch:za-ab-aggsw01-internal: ["192.0.2.1"] za-ac-aggsw01-internal: ["192.0.2.2"]Buat dan jalankan skrip yang sama yang digunakan untuk mendiagnosis masalah pada langkah ini untuk memverifikasi bahwa perbaikan berhasil. Output tidak menampilkan pesan error.
Error Incorrect version of Trident muncul selama upgrade
Versi: 1.13.3, 1.13.4, 1.13.5
Gejala: Saat mengupgrade dari versi yang lebih rendah dari 1.13.3, ontap menampilkan error Incorrect version of Trident. Anda mungkin melihat pesan seperti ini:
Status:
Conditions:
Last Transition Time: 2024-08-27T15:19:07Z
Message: Incorrect version of Trident. Wanted v23.10.0-gke.6, got v23.10.0-gke5
Observed Generation: 1
Reason: QualificationFailed
Status: False
Type: AllComplete
Events:
Solusi:
Perbarui
releasemetadataversi yang Anda upgrade:export KUBECONFIG=<point to ROOT Admin Kubeconfig> To get the list of all releasemetadata: `kubectl get releasemetadata`Outputnya mungkin terlihat seperti:
NAME AGE 1.12.2-gdch.785 24d 1.12.4-gdch.96 13d 1.13.3-gdch.5548 11hPilih versi yang akan Anda upgrade seperti yang disebutkan dalam contoh berikut:
kubectl get releasemetadata 1.13.3-gdch.5548 -o yaml > releasemetadata.yamlPerbarui tridentVersion di bagian fileBlockStorage pada .yaml ke versi yang disebutkan dalam error. Jika pesan error terlihat seperti ini:
Message: Incorrect version of Trident. Wanted v23.10.0-gke.6, got v23.10.0-gke.5Ubah
tridentVersionmenjadiv23.10.0-gke.5direleasemetadata.yaml.Misalnya, jika nilai aslinya adalah:
infraComponents: fileBlockStorage: ONTAPVersion: 9.14.1P1 harvestVersion: v22.08.0-gke.7 tridentVersion: v23.10.0-gke.6,Ubah menjadi nilai berikut:
infraComponents: fileBlockStorage: ONTAPVersion: 9.14.1P1 harvestVersion: v22.08.0-gke.7 tridentVersion: v23.10.0-gke.5.Terapkan perubahan:
kubectl apply -f releasemetadata.yamlTerapkan upgrade penyimpanan
ontaplagi.
Pod gagal dijadwalkan
Versi: 1.13.3. 1.13.4, 1.13.5
Gejala: Selama penyediaan cluster pengguna, beberapa pod gagal dijadwalkan. Anda mungkin melihat pesan seperti ini:
0/6 nodes are available: 1 Insufficient cpu. preemption: 0/6 nodes are available: 6 No preemption victims found for incoming pod
Solusi:
Tingkatkan skala node pool bidang kontrol cluster pengguna:
kubectl --kubeconfig ORG_ADMIN_KUBECONFIG patch addresspoolclaim/control-plane-node-pool -n ${CLUSTER_NAME}-cluster --type=json -p="[{'op': 'replace', 'path': '/spec/size', 'value': 5}]"
kubectl --kubeconfig ORG_ADMIN_KUBECONFIG patch nodepoolclaim/control-plane-node-pool -n ${CLUSTER_NAME}-cluster --type=json -p="[{'op': 'replace', 'path': '/spec/nodeCount', 'value': 5}]"
Upgrade gagal di subkomponen iac-zoneselection-global
Versi: 1.13.1
Gejala: Selama upgrade ke 1.13.3, terjadi error pada subkomponen iac-zoneselection-global. Anda mungkin melihat pesan seperti ini:
== Subcomponents with failures in root org ===
Sub-Component: iac-zoneselection-global - Reconciliation error: E0100 - deploy: failed to install chart: release iac-zoneselection-global-backend failed, and has been uninstalled due to atomic being set: 1 error occurred:
* ZoneSelection.location.mz.global.private.gdc.goog "iac" is invalid: spec.resultObjectName: Required value
Events: Type Reason Age From Message
---- ------ ---- ---- -------
Warning ReconciliationError 119s (x521 over 20h) Subcomponent E0100 - deploy: failed to install chart: release iac-zoneselection-global-backend failed, and has been uninstalled due to atomic being set: 1 error occurred:
* ZoneSelection.location.mz.global.private.gdc.goog "iac" is invalid: spec.resultObjectName: Required value
Solusi:
Mengupgrade ke 1.13.3 akan memperbaiki error tersebut.
Tugas pemeriksaan upgrade telah melewati batas waktu
Versi: 1.12.x, 1.13.x
Gejala: Selama upgrade organisasi, pemeriksaan upgrade menampilkan status False dengan alasan DeadlineExceeded. Anda mungkin melihat pesan seperti ini:
Preflight Check:
Conditions:
Last Transition Time: 2024-10-29T18:57:47Z
Message: the result has status: False, reason: PreflightCheckFailed, and err: [check "OPAUpgrade" of operable component "OPA" failed with reason "DeadlineExceeded", no existing pods found, check "Arti
actAvailability" of operable component "AR" failed with reason "DeadlineExceeded", no existing pods found, check "PackageValidation" of operable component "AR" failed with reason "DeadlineExceeded", no existing pods foun
d, check "IAMUpgrade" of operable component "IAM" failed with reason "DeadlineExceeded", no existing pods found, check "NodeHealth" of operable component "OS" failed with reason "DeadlineExceeded", no existing pods found
, check "DNSHealth" of operable component "DNS" failed with reason "DeadlineExceeded", no existing pods found, check "AdminClusterCheck" of operable component "UPORC" failed with reason "DeadlineExceeded", no existing po
ds found[]
Observed Generation: 3
Reason: PreflightCheckFailed
Status: False
Type: Succeeded
Start Time: 2024-10-29T17:57:47Z
Solusi:
- Hapus tugas pemeriksaan upgrade yang gagal yang sesuai dengan pemeriksaan upgrade yang gagal.
- Tunggu hingga tugas pemeriksaan upgrade dibuat ulang.
- Periksa log tugas yang dibuat ulang dan pilah masalahnya.
Add-on meta-monitoring gagal karena lokasi strongswan berada di direktori runtime yang berbeda
Versi: 1.12.x, 1.13.x
Gejala: Selama upgrade ke 1.13.4 atau 1.13.5, add-on meta-monitoring gagal:
kubectl --kubeconfig ORG_ADMIN_KUBECONFIGget addons -A | grep meta-monitoring
org-1-system-cluster meta-monitoring false false 1.12.4-gdch.96
Periksa add-on:
kubectl --kubeconfig ORG_ADMIN_KUBECONFIG get -n org-1-system-cluster addon meta-monitoring -o yaml
Pesan kondisi mungkin terlihat seperti ini:
status:
conditions:
- lastTransitionTime: "2024-11-19T02:57:30Z"
message: 'Error occurred during addon installation: failed to rollback chart:
create: failed to create: Internal error occurred: failed calling webhook "validation.gatekeeper.sh":
failed to call webhook: Post "https://gatekeeper-webhook-service.opa-system.svc:443/v1/admit?timeout=3s":
context deadline exceeded'
observedGeneration: 2
reason: InstallationError
status: "False"
type: Deployed
Solusi:
Pastikan sesi BGP di Org System Cluster gagal, misalnya:
kubectl --kubeconfig ORG_SYSTEM_KUBECONFIG get bgpsessions -A NAME LOCAL ASN PEER ASN LOCAL IP PEER IP STATE LAST REPORT 10.252.122.10-peer-10.0.1.32-vm-7351eebe 64513 65030 10.252.122.10 10.0.1.32 10.252.122.10-peer-10.0.1.33-vm-7351eebe 64513 65030 10.252.122.10 10.0.1.33 10.252.122.11-peer-10.0.1.32-vm-7351eebe 64513 65030 10.252.122.11 10.0.1.32 10.252.122.11-peer-10.0.1.33-vm-7351eebe 64513 65030 10.252.122.11 10.0.1.33 172.20.128.3-peer-10.0.1.48-za-aa-bm02-hltg2 64513 65030 172.20.128.3 10.0.1.48 172.20.128.3-peer-10.0.1.49-za-aa-bm02-hqblq 64513 65030 172.20.128.3 10.0.1.49Pastikan Pod
ang-nodemengalami masalah padaContainerCreating, misalnya:kubectl --kubeconfig ORG_SYSTEM_KUBECONFIG get pods -n kube-system -l app=ang-node NAME READY STATUS RESTARTS AGE ang-node-5c6c8 0/3 ContainerCreating 0 2d21h ang-node-6skkl 0/3 ContainerCreating 0 2d14h ang-node-7d7dj 0/3 ContainerCreating 0 2d20h ang-node-9l4xc 0/3 ContainerCreating 0 2d17hError berikut akan muncul:
Warning FailedMount 112s (x2056 over 2d21h) kubelet MountVolume.SetUp failed for volume "vici" : hostPath type check failed: /var/run/strongswan is not a directoryTerapkan perubahan berikut pada
ang-overridesAddonConfiguration di cluster Admin Org:kubectl --kubeconfig ORG_ADMIN_KUBECONFIG edit addonconfiguration ang-overrides -n org-1-system-clusterUbah kode berikut:
volumes: - hostPath: path: /var/run/strongswan type: Directory name: vicike alamat berikut:
volumes: - hostPath: path: /var/run type: Directory name: viciSetelah sekitar satu menit, konfirmasi bahwa Pod
ang-nodesekarang dalam statusRunning:NAME READY STATUS RESTARTS AGE ang-node-7hj5q 3/3 Running 0 15s ang-node-xps2m 3/3 Running 0 34s ang-node-krx8p 3/3 Running 0 34s ang-node-cbm1a 3/3 Running 0 34sPastikan sesi BGP di Org System Cluster kini berjalan.
Add-on
meta-monitoringakan melanjutkan ke tahap berikutnya.
Upgrade org root macet karena kegagalan tugas tanda tangan
Versi: 1.13.3, 1.13.4
Gejala: Saat mengupgrade dari 1.13.3 ke 1.13.4, Anda mungkin melihat pesan seperti ini:
Message: [the result has status: False, reason: PreflightCheckFailed, and err: check "PackageValidation" of operable component "AR" failed with reason "DeadlineExceeded", no existing pods found, the result has status: Unknown, reason: UpgradeCheckJobsInProgress
Solusi:
Nonaktifkan pemeriksaan pra-penerbangan:
kubectl annotate -n gpc-system organization root upgrade.private.gdc.goog/skip-preflight-check=okHapus tugas
artifact-signature-verification-***yang gagal.Tunggu hingga upgrade root selesai.
Opsional: Aktifkan pemeriksaan pra-peluncuran jika lingkungan diupgrade ke 1.13.4 atau yang lebih baru.
Setelah pengontrol berada di 1.13.4, upgrade tidak akan mengalami masalah ini.
Upgrade organisasi tenant gagal pada tahap pemeriksaan Preflight dengan ErrImagePull
Versi: 1.13.3
Gejala: Upgrade organisasi tenant gagal pada tahap pemeriksaan pra-penerbangan dengan ErrImagePull untuk pod validasi paket. Anda mungkin melihat pesan seperti ini:
export KUBECONFIG=ORG_ADMIN_KUBECONFIG
kubectl get po -n package-validation-system | grep artifact-signature-verification
Pod menampilkan error ImagePullBackOff:
kubectl describe po -n package-validation-system POD_NAME
Error penarikan image ditampilkan, seperti contoh berikut:
Name: artifact-signature-verification-20240823224755-4ppkt
Namespace: package-validation-system
Priority: 0
Service Account: package-validation
Node: ak-ab-base02/203.0.113.250
Start Time: Fri, 23 Aug 2024 22:47:55 +0000
Labels: batch.kubernetes.io/controller-uid=bf81d5eb-d597-464e-a907-67c1c8a11c11
batch.kubernetes.io/job-name=artifact-signature-verification-20240823224755
controller-uid=bf81d5eb-d597-464e-a907-67c1c8a11c11
job-name=artifact-signature-verification-20240823224755
Annotations: <none>
Status: Pending
IP: 203.0.113.255
IPs:
IP: 203.0.113.255
Controlled By: Job/artifact-signature-verification-20240823224755
Containers:
artifact-signature-verification:
Container ID:
Image: gcr.io/private-cloud-staging/signature-verifier:v1.13.0-uporc-aa505d9004
Image ID:
Port: <none>
Host Port: <none>
State: Waiting
Reason: ImagePullBackOff
Ready: False
Restart Count: 0
...
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 10m default-scheduler Successfully assigned package-validation-system/artifact-signature-verification-20240823224755-4ppkt to ak-ab-base02
Normal Pulling 7m25s (x4 over 9m22s) kubelet Pulling image "gcr.io/private-cloud-staging/signature-verifier:v1.13.0-uporc-aa505d9004"
Warning Failed 7m14s (x4 over 9m12s) kubelet Failed to pull image "gcr.io/private-cloud-staging/signature-verifier:v1.13.0-uporc-aa505d9004": failed to pull and unpack image "gcr.io/private-cloud-staging/signature-verifier:v1.13.0-uporc-aa505d9004": failed to resolve reference "gcr.io/private-cloud-staging/signature-verifier:v1.13.0-uporc-aa505d9004": unexpected status from HEAD request to https://203.0.113.255/v2/private-cloud-staging/signature-verifier/manifests/v1.13.0-uporc-aa505d9004?ns=gcr.io: 401 Unauthorized
Warning Failed 7m14s (x4 over 9m12s) kubelet Error: ErrImagePull
Warning Failed 7m3s (x6 over 9m11s) kubelet Error: ImagePullBackOff
Normal BackOff 4m11s (x17 over 9m11s) kubelet Back-off pulling image "gcr.io/private-cloud-staging/signature-verifier:v1.13.0-uporc-aa505d9004"
Solusi:
Lewati pemeriksaan preflight:
kubectl annotate -n gpc-system organization ORG_NAME \
upgrade.private.gdc.goog/skip-preflight-check=ok
Tidak dapat menemukan serviceaccount selama upgrade organisasi root
Versi: 1.13.8, 1.13.9
Gejala: Selama upgrade ke 1.13.8, deployment addon untuk RBAC gagal jika ada upgrade sebelumnya yang dilakukan dan add-on sudah ada. Gejalanya dapat berada di salah satu tahap berikut:
- pemeriksaan sebelum atau sesudah penerbangan
- tahap apa pun yang melibatkan tugas upgrade dan pesan menunjukkan bahwa tugas sedang berjalan meskipun tugas macet. Pesan
status.conditionsmenunjukkan bahwa tugas berjalan dalam waktu yang lama, yang mengindikasikan adanya masalah.
Untuk memeriksa apakah ada kegagalan pemeriksaan pendahuluan upgrade, periksa status objek OrganizationUpgrade yang sesuai untuk organisasi yang melakukan upgrade:
kubectl get -n gpc-system organizationupgrade ORG_NAME -o yaml
Jika tugas gagal di PreflightCheck, tugas mungkin menampilkan kegagalan seperti ini atau pesan
UpgradeCheckRBACDeploymentInProgress:- lastTransitionTime: "2024-09-27T00:28:21Z" message: "" observedGeneration: 2 reason: Unknown status: "False" type: PreflightCheckJika tugas gagal pada tahap AnthosBareMetal (ABM) saat tugas sedang berjalan, output berikut akan ditampilkan:
- Last Transition Time: 2024-09-26T19:55:13Z message: observed the following reason: [JobRunning] observedGeneration: 3 reason: Unsuccessful status: Unknown type: root-admin/AnthosBareMetalJika kegagalan terjadi dalam pemeriksaan,
upgradecheckrequestCR akan gagal:kubectl get upgradecheckrequests -n gpc-system --kubeconfig /root/release/root-admin/root-admin-kubeconfigOutput-nya mungkin terlihat seperti contoh ini:
NAME AGE upgrade-check-root-postflight-xc7p8 6h32mJika kegagalan terjadi pada tugas, CR
upgradetaskrequestsakan gagal:kubectl get upgradetaskrequests -n gpc-system --kubeconfig /root/release/root-admin/root-admin-kubeconfigOutput-nya mungkin terlihat seperti contoh ini:
NAME AGE upg-task-org-1-mz-mz-location-upgrade-5n6wp 2d19hJika kegagalan menunjukkan error RBAC saat mencari akun layanan, periksa apakah add-on sebelumnya telah di-deploy:
Type Reason Age From Message ---- ------ ---- ---- ------- Warning FailedCreate 38s (x11 over 5m41s) job-controller Error creating: pods "v1.13.0-mz-2837f80328-upg-task-root-mz-mz-location-jkv69-" is forbidden: error looking up service account gpc-system/upgrade-task-mz-sa-v1.13.0-mz-2837f80328: serviceaccount "upgrade-task-mz-sa-v1.13.0-mz-2837f80328" not found
Solusi:
Periksa apakah add-on sebelumnya di-deploy:
Type Reason Age From Message ---- ------ ---- ---- ------- Warning FailedCreate 4m30s (x101 over 99m) job-controller Error creating: pods "v1.13.0-os-2837f80328-upg-task-root-os-node-upgrad-fdblm-" is forbidden: error looking up service account gpc-system/upgrade-task-os-sa-v1.13.0-os-2837f80328: serviceaccount "upgrade-task-os-sa-v1.13.0-os-2837f80328" not foundcount gpc-system/upgrade-task-mz-sa-v1.13.0-mz-2837f80328: serviceaccount "upgrade-task-mz-sa-v1.13.0-mz-2837f80328" not foundDapatkan add-on sebelumnya yang ada untuk komponen yang sama,
upgrade-task-mzuntuk tugas:kubectl get addons -n gpc-system | grep upgrade-task upgrade-task-mz-lsqzc true true v1.13.0-mz-7cf810d7a5Hapus add-on ini:
kubectl delete addon -n gpc-system upgrade-task-mz-lsqzc upgrade-task-os-px5wj addon.addon.private.gdc.goog "upgrade-task-mz-lsqzc" deletedSetelah menghapus add-on, hapus juga
upgradetaskrequestatauupgradecheckrequestyang sesuai. Elemen tersebut akan dibuat ulang.kubectl delete upgradetaskrequest -n gpc-system upgrade-task-mz-lsqzcLanjutkan pemantauan
upgradetaskrequest,upgradecheckrequestyang baru dibuat atau tugas yang sesuai secara langsung.
Upgrade gagal di shared-service-cluster upgrade
Versi: 1.13.3
Gejala: Upgrade Anthos Bare metal macet dengan satu atau beberapa mesin bare metal. Semua mesin bare metal lainnya telah berhasil diupgrade atau belum memulai upgrade. Satu mesin bare metal dalam mode pemeliharaan, tetapi masih menampilkan versi sebelumnya untuk kolom ABM VERSION dan DESIRED ABM VERSION saat ini.
Ikuti Anthos bare metal untuk mendapatkan status dan detail baremetalmachine untuk cluster:
kubectl get baremetalmachines -n "${CLUSTER_NAMESPACE}" --kubeconfig=${ADMIN_KUBECONFIG}
Output yang diharapkan:
NAME CLUSTER READY INSTANCEID MACHINE ABM VERSION DESIRED ABM VERSION
192.0.2.0 g-org-1-shared-service true baremetal://192.0.2.0 192.0.2.0 1.29.300-gke.185 1.29.300-gke.185
192.0.2.18 g-org-1-shared-service true baremetal://192.0.2.18 192.0.2.18 1.29.300-gke.185 1.29.300-gke.185
192.0.2.19 g-org-1-shared-service true baremetal://192.0.2.19 192.0.2.19 1.29.300-gke.185 1.29.300-gke.185
192.0.2.10 g-org-1-shared-service true baremetal://192.0.2.10 192.0.2.10 1.29.300-gke.185 1.29.300-gke.185
192.0.2.22 g-org-1-shared-service true baremetal://192.0.2.22 192.0.2.22 1.29.300-gke.185 1.29.300-gke.185
192.0.2.9 g-org-1-shared-service true baremetal://192.0.2.9 192.0.2.9 1.29.0-gke.1449 1.29.0-gke.1449
kubectl get baremetalmachines -n "${CLUSTER_NAMESPACE}" --kubeconfig=${ADMIN_KUBECONFIG} ${MACHINE_IP} -o json | jq '.status.underMaintenance'
Output yang Diharapkan:
true
Solusi:
Keluarkan mesin inventaris dari mode pemeliharaan:
export InventoryMachineName=$(kubectl --kubeconfig=${ADMIN_KUBECONFIG} get inventorymachines -A -o json | jq '.items[] | select(.spec.address=="${MACHINE_IP}") | .metadata.name') kubectl --kubeconfig "${ADMIN_KUBECONFIG:?}" patch inventorymachine/${InventoryMachineName:?} --type=merge -p '{"spec": {"maintenance": false}}'Tunggu hingga mesin inventaris keluar dari mode pemeliharaan. Proses ini dapat memerlukan waktu hingga 10 menit.
kubectl --kubeconfig "${ADMIN_KUBECONFIG:?}" wait inventorymachine/${InventoryMachineName} --for=jsonpath=.status.maintenance=true --timeout=600sPantau baremetalmachine untuk melihat bahwa mesin melihat update versi ABM yang dipilih.
kubectl get baremetalmachines -n "${CLUSTER_NAMESPACE}" --kubeconfig=${ADMIN_KUBECONFIG}
Penginstalan add-on system-dashboards gagal
Versi: 1.13.5
Gejala: Upgrade dari 1.12.4 ke 1.13.5 gagal saat upgrade add-on untuk
add-on system-dashboards:
│ Status: │
│ Conditions: │
│ Last Transition Time: 2024-10-22T00:34:54Z │
│ Message: Error occurred during addon installation: failed to rollback chart: no ConfigMap with the name "cluster-etcd-platform-obs" found │
│ Observed Generation: 2 │
│ Reason: InstallationError │
│ Status: False
Solusi: Ikuti langkah-langkah dalam runbook OCLCM-R0122.
NodeUpgradeTask CR macet pada kondisi NodeOSInPlaceUpgradePostProcessingCompleted
Versi: 1.13.5
Gejala: Selama upgrade ke 1.13.5, NodeUpgradeTask CR mengalami masalah pada kondisi NodeOSInPlaceUpgradePostProcessingCompleted.
Periksa apakah tugas os-artifact-collector yang sesuai telah selesai. Jika tugas macet selama berjam-jam, pesan berikut akan ditampilkan:
root@gpc-adhoc-7e017e71vm-bootstrapper-zone1:~# kag logs os-artifact-collector-bm-45942837-p8hrk-z56gh
I1020 22:06:11.844634 1 main.go:30] BuildDate: 2024-10-19T16:54:08Z
I1020 22:06:11.844695 1 main.go:31] Version: 0.0.0-gdch.1.v3f2043
Solusi:
- Hapus tugas atau pod untuk memaksa percobaan ulang.
Distribusi gambar gagal selama upgrade
Versi: 1.13.5
Gejala: Distribusi gambar gagal selama upgrade dari 1.12.4 ke 1.13.x:
Error: error uploading the VM image to object storage: failed to upload to object storage: BadRequest: Bad Request
status code: 400, request id: , host id:
F1018 02:04:46.191627 1 main.go:88] VM Image Distributor quit: error uploading the VM image to object storage: failed to upload to object storage: BadRequest: Bad Request
status code: 400, request id: , host id:
goroutine 1 [running]:
Periksa pod obj-proxy di gpc-system di org untuk melihat bahwa pod tersebut gagal melakukan verifikasi sertifikat:
E1021 19:10:31.710076 1 token_source.go:185] Unable to rotate token: failed to initialize aisClient: failed to initialise AIS client: failed to obtain login config from the provided path "https://console.org-1.zone1.google.gdch.test/.well-known/login-config" with error: unable to parse centralized login config file: unsuccessful get request to config URL (https://console.org-1.zone1.google.gdch.test/.well-known/login-config) with error: Get "https://console.org-1.zone1.google.gdch.test/.well-known/login-config": tls: failed to verify certificate: x509: certificate signed by unknown authority
Solusi:
Mulai ulang pod obj-proxy menggunakan
KUBECONFIGorganisasi yang gagal:export KUBECONFIG=<ORG_KUBECONFIG> kubectl delete pods -n gpc-system -l name=obj-proxy-managerPeriksa log untuk obj-proxy:
kubectl get pods -n gpc-system | grep obj-proxyOutput yang diharapkan adalah sebagai berikut:
obj-proxy-gdgzp 1/1 Running 0 5d1h obj-proxy-nhnsm 1/1 Running 0 5d1h obj-proxy-wrxlq 1/1 Running 0 5d1hPeriksa log pod yang tersedia, misalnya:
kubectl logs obj-proxy-gdgzp -n gpc-systemTugas distribusi gambar akan selesai setelah menerapkan solusi sementara.
Node gagal selama upgrade cluster pengguna
Versi: 1.13.3
Gejala: Tugas yang berjalan di node gagal selama upgrade cluster pengguna dan menampilkan pesan error seperti ini:
Reason: mkdir: cannot create directory '/root/.ansible/tmp/ansible-tmp-1727810181.4584012-29-114086005628321': No space left on device
Login ke node dan periksa apakah partisi penuh:
df -h /Output-nya mungkin terlihat seperti contoh ini:
Filesystem Size Used Avail Use% Mounted on /dev/mapper/rocky-rl--root 31G 31G 120K 100% /Periksa apakah
/etc/kubernetes/tmpmenggunakan ruang penyimpanan yang besar:du -s /etc/kubernetes/tmp. Masalah ini terjadi saat Kubernetes membuat lebih banyak cadangan dari biasanya.
Solusi:
Hapus semua cadangan di
rm -f /etc/kubernetes/tmp/*:df -h /Output-nya mungkin terlihat seperti contoh ini:
Filesystem Size Used Avail Use% Mounted on /dev/m
Upgrade admin root dibuat ulang dan gagal untuk pemeriksaan pra-penerbangan
Versi: 1.13.3, 1.13.4, 1.13.5, 1.13.6, 1.13.7, 1.13.8, 1.13.9
Gejala: Upgrade organisasi root gagal untuk pemeriksaan pra-peluncuran, misalnya:
│ Preflight Check: │
│ Conditions: │
│ Last Transition Time: 2024-10-28T14:17:31Z │
│ Message: [the result has status: False, reason: PreflightCheckFailed, and err: check "ASMStable" of operable component "ASM" failed with reason "BackoffLi │
│ mitExceeded", please check logs in pods: [gpc-system/upgrade-managed-check-asmstable-4dw66-cld74, gpc-system/upgrade-managed-check-asmstable-4dw66-k8xk5, gpc-system/upgrade-m │
│ anaged-check-asmstable-4dw66-wtc6q, gpc-system/upgrade-managed-check-asmstable-4dw66-l9b6v, gpc-system/upgrade-managed-check-asmstable-4dw66-nf62h, gpc-system/upgrade-managed │
│ -check-asmstable-4dw66-6m7p2, gpc-system/upgrade-managed-check-asmstable-4dw66-4mqmb], the result has status: Unknown, reason: UpgradeCheckJobsInProgress, and err: upgrade ch │
│ eck jobs in progress for Operable Components: haas,bil] │
│ Observed Generation: 2 │
│ Reason: PreflightCheckFailed │
│ Status: False │
│ Type: Succeeded │
│ Start Time: 2024-10-28T14:46:42Z
Cluster root-admin dan kubeapiserver untuk root-admin telah diupgrade ke versi abm yang dipilih.
Contoh:
export KUBECONFIG=<path to root admin kubeconfig>
kubectl describe kubeapiserver root-admin -n root
kubectl get cluster root-admin -n root
Contoh output untuk kubectl describe kubeapiserver root-admin -n root:
Name: root-admin
Namespace: root
Labels: lcm.private.gdc.goog/cluster-type=root-admin
lcm.private.gdc.goog/cluster-version=1.29.600-gke.108
lcm.private.gdc.goog/component-version=v1.13.0-oclcm-f4c190e0f2
Contoh output untuk kubectl get cluster root-admin -n root:
NAME ABM VERSION DESIRED ABM VERSION CLUSTER STATE
root-admin 1.29.600-gke.108 1.29.600-gke.108 Running
Solusi
Terapkan lewati pemeriksaan awal untuk melanjutkan upgrade:
export KUBECONFIG=<path to root admin kubeconfig>
kubectl delete organizationupgrade root -n gpc-system && kubectl annotate -n gpc-system organization root upgrade.private.gdc.goog/skip-preflight-check=ok
kubectl delete organizationupgrade root -n gpc-system
Namespace platform-obs-obs-system atau platform-obs macet dalam status menghentikan
Versi: 1.13.5
Gejala: Addon gagal di-deploy selama upgrade atau bootstrap dan menampilkan pesan error seperti ini:
export KUBECONFIG=ROOT_ADMIN
kubectl get addon -n org-1 system-alerts system-dashboards
Output berikut akan ditampilkan:
NAME DEPLOYED READY VERSION
system-alerts
system-dashboards false false 1.12.4-gdch.96
Jika status DEPLOYED atau READY menampilkan false atau kosong, periksa add-on masing-masing untuk mengetahui errornya, misalnya:
export KUBECONFIG=ROOT_ADMIN
kubectl describe addon -n org-1 system-alerts
Output berikut akan ditampilkan:
...
... unable to create new content in namespace platform-obs-obs-system because it is being terminated
...
Add-on diblokir karena mencoba membuat konten di namespace yang sedang dihapus. Pemblokiran ini tetap ada karena penghapusan namespace juga diblokir.
Solusi:
Sebelum memulai upgrade, beri anotasi pada project untuk mencegah penghapusan:
export KUBECONFIG=ORG_ADMIN kubectl annotate project -n gpc-system platform-obs helm.sh/resource-policy="keep"Output berikut akan ditampilkan:
project.resourcemanager.gdc.goog/platform-obs annotated kubectl annotate project -n gpc-system platform-obs-obs-system helm.sh/resource-policy="keep" project.resourcemanager.gdc.goog/platform-obs-obs-system annotatedJika lingkungan sudah mengalami gejala yang dijelaskan sebelumnya, lakukan solusi sementara berikut:
Penghapusan namespace diblokir karena resource dengan finalizer. Untuk melanjutkan penghapusan, hapus finalizer menggunakan skrip yang disediakan:
export KUBECONFIG=ORG_ADMIN function rm_finalizer() { export TYPE=$1 export NS=$2 RESOURCES=$(kubectl get $TYPE -n $NS --no-headers -o custom-columns=":metadata.name") for rc in $RESOURCES; do kubectl patch $TYPE $rc -n $NS \ --type json \ --patch '{"metadata":{"finalizers":[]}}' --type=merge done } rm_finalizer "monitoringrule" "platform-obs-obs-system" rm_finalizer "monitoringrule" "platform-obs" rm_finalizer "loggingrule" "platform-obs" ``` Note: Use a bash terminal (default on bootstrappers) to run the script.Tunggu penghapusan resource. Setelah menjalankan skrip, hapus resource dan namespace yang terhenti. Anda mungkin perlu menjalankan skrip lagi jika namespace masih terjebak dalam status penghentian. Setelah dihentikan, namespace akan dibuat ulang secara otomatis. Verifikasi bahwa namespace dibuat ulang dan dalam status AKTIF:
export KUBECONFIG=ORG_ADMIN kubectl get namespace platform-obs platform-obs-obs-systemOutput berikut akan ditampilkan:
NAME STATUS AGE platform-obs Active 45s platform-obs-obs-system Active 49sDengan namespace aktif, add-on yang macet akan di-deploy dalam beberapa menit. Pastikan status DEPLOYED dan READY-nya kini benar:
export KUBECONFIG=ROOT_ADMIN kubectl get addon -n org-1 system-alerts system-dashboardsOutput berikut akan ditampilkan:
NAME DEPLOYED READY VERSION system-alerts true true 1.14.0-gdch.143998 system-dashboards true true 1.14.0-gdch.143998
Loop error UPORC di cluster KIND selama bootstrap
Versi: 1.13.x
Gejala: Deployment uporc-root-backend-controller di bawah namespace
uporc-system mengalami loop error di cluster KIND.
Solusi:
Periksa apakah objek
ComponentGroupReleaseMetadatadanReleaseMetadatacocok:export KUBECONFIG=KIND kubectl get componentgroupreleasemetadata kubectl get releasemetadataJika objek cocok, tidak diperlukan solusi.
Jika objek tidak cocok, hubungi tim UPORC untuk mendapatkan bantuan karena hal ini dapat menunjukkan masalah mendasar lainnya.
Upgrade node gagal
Versi: 1.13.6
Gejala: Upgrade node gagal di NodeOSInPlaceUpgradeCompleted.
- Periksa log tugas
os-upgradeospolicy. - Jika log menyertakan error yang menunjukkan bahwa file konfigurasi rusak,
masuk ke mesin node dan periksa konten file secara manual untuk melihat apakah file tersebut rusak. Error log mungkin menyebutkan kode error
configparser.DuplicateOptionErrordan file/etc/yum.repos.d/gdch.repo.
Solusi: Hanya jika Anda telah mengonfirmasi bahwa file rusak, hapus file /etc/yum.repos.d/gdch.repo yang rusak secara manual di node yang rusak.
Pekerjaan ansible untuk upgrade akan membuat ulang file secara otomatis, sebagai bagian dari playbook ansible.
### CR NodeUpgradeTask macet pada kondisi NodeOSInPlaceUpgradePostProcessingCompleted
Versi: 1.13.5
Gejala: Selama upgrade ke 1.13.5, NodeUpgradeTask CR mengalami masalah pada kondisi NodeOSInPlaceUpgradePostProcessingCompleted.
Periksa apakah tugas os-artifact-collector yang sesuai telah selesai. Jika tugas macet selama berjam-jam, pesan berikut akan ditampilkan:
root@gpc-adhoc-7e017e71vm-bootstrapper-zone1:~# kag logs os-artifact-collector-bm-45942837-p8hrk-z56gh
I1020 22:06:11.844634 1 main.go:30] BuildDate: 2024-10-19T16:54:08Z
I1020 22:06:11.844695 1 main.go:31] Version: 0.0.0-gdch.1.v3f2043
Solusi:
- Hapus tugas atau pod untuk memaksa percobaan ulang.
NodeUpgradeTask CR macet pada kondisi NodeBIOSFirmwareUpgradeCompleted
Versi: 1.13.5
Gejala: Selama upgrade ke 1.13.5, NodeUpgradeTask CR mengalami masalah pada kondisi NodeBIOSFirmwareUpgradeCompleted.
Periksa apakah kondisi NodeBIOSFirmwareUpgradeCompleted yang sesuai mengalami masalah dengan kondisi berikut yang ditampilkan:
{
"lastTransitionTime": "2024-12-03T04:03:37Z",
"message": "",
"observedGeneration": 1,
"reason": "InProgress",
"status": "False",
"type": "NodeBIOSFirmwareUpgradeCompleted"
}
Solusi:
- Di CR
NodeUpgrade, edit"U30 v3.20 (05/29/2024)"menjadi"U30 v3.20 (05/27/2024)"secara manual.
Upgrade cluster diblokir karena node gagal memasuki mode pemeliharaan
Versi: 1.13.5, 1.13.6, 1.13.7
Gejala: Upgrade cluster (admin org, sistem, atau cluster pengguna) diblokir karena node gagal memasuki mode pemeliharaan.
Cluster menampilkan MaintenanceMode yang ditetapkan ke true, tetapi Status macet di false saat menjalankan perintah berikut:
kubectl get baremetalmachines -A -o custom-columns=NAMESPACE:.metadata.namespace,NAME:.metadata.name,MaintenanceMode:.spec.maintenanceMode,Status:.status.underMaintenace
Output berikut akan ditampilkan:
NAMESPACE NAME MaintenanceMode Status
user-vm-1-cluster 10.8.4.22 true false
user-vm-1-cluster 10.8.4.23 false false
user-vm-1-cluster 10.8.4.24 false false
user-vm-1-cluster 172.20.128.13 false false
user-vm-1-cluster 172.20.128.14 false false
user-vm-1-cluster 172.20.128.15 false false
Solusi:
Tetapkan KUBECONFIG ke file kubeconfig cluster yang berisi node yang tidak dikuras. Cluster dapat berupa cluster pengguna atau cluster layanan bersama.
for VM in $(kubectl get nodes -o custom-columns=NAME:.metadata.name,TAINTS:.spec.taints --no-headers | grep "baremetal.cluster.gke.io/maintenance" | awk '{print $1}'); do
for i in {1..50}; do
kubectl delete po -n kube-system $(kubectl get po -A -o wide | grep ang | grep -e $VM| awk '{print $2}');
done
done
Waktu tunggu yang persisten selama root awal organizationupgrade
Versi: 1.13.3
Gejala: Jika anotasi abaikan masa pemeliharaan ada selama upgrade organisasi, CR organizationupgrade akan di-patch berulang kali, sehingga mereset progres.
Solusi:
Jeda subkomponen rm-org dan turunkan skala replika rm-org-backend-controller.
Jika alias tidak dideklarasikan, jalankan:
alias ka="kubectl --kubeconfig=/root/release/root-admin/root-admin-kubeconfig"Jeda subkomponen dan turunkan skala deployment untuk
rm-org:kubectl --kubeconfigROOT_ADMIN_KUBECONFIG annotate subcomponent -n root rm-org lcm.private.gdc.goog/paused=true kubectl --kubeconfigROOT_ADMIN_KUBECONFIG scale deploy -n gpc-system rm-org-backend-controller --replicas=0Setelah upgrade cluster selesai, turunkan skala deployment:
kubectl --kubeconfigROOT_ADMIN_KUBECONFIG scale deploy -n gpc-system rm-org-backend-controller --replicas=1
Subkomponen obj-syslog-server gagal rekonsiliasi di organisasi root
Versi: 1.13.3, 1.13.4, 1.13.5, 1.13.6
Gejala: Selama upgrade ke versi 1.13.x, subkomponen obj-syslog-server ditemukan dalam status ReconciliationError:
root obj-syslog-server ReconciliationError
dengan kondisi yang mirip dengan:
Sub-Component: obj-syslog-server - Reconciliation error: E0100 - deploy: failed to install chart: release obj-syslog-server-backend failed, and has been uninstalled due to atomic being set: context deadline exceeded
Last Transition Time: 2024-09-17T21:49:25Z
Message: E0100 - deploy: failed to install chart: release obj-syslog-server-backend failed, and has been uninstalled due to atomic being set: context deadline exceeded
Observed Generation: 1
ReconciliationError
Status:True
Type: Reconciling
Last Transition Time: 2024-09-17T21:49:23Z
Message: E0100 - deploy: failed to install chart: release obj-syslog-server-backend failed, and has been uninstalled due to atomic being set: context deadline exceeded
Observed Generation: 1
Reason: DeployError
Status: False
Type: Deployed
Anda mungkin melihat bahwa pod, syslog-server-abcdefg-wxyz, berada dalam status CrashLoopBackOff dengan error berikut:
containerID: containerd://65d460176a1dcae412af698fa02fa5ffb0c5f0ef9bf0d0e2111ef88845630827
exitCode: 128
finishedAt: "2024-09-18T19:14:45Z"
message: 'failed to create containerd task: failed to create shim task: OCI
runtime create failed: runc create failed: unable to start container process:
error during container init: error mounting "/var/lib/kubelet/pods/637cf395-e597-446d-9949-1371cca88970/volume-subpaths/observability-ca/syslog-server/2"
to rootfs at "/etc/ssl/certs/obs-ca-cert.pem": mount /var/lib/kubelet/pods/637cf395-e597-446d-9949-1371cca88970/volume-subpaths/observability-ca/syslog-server/2:/etc/ssl/certs/obs-ca-cert.pem
(via /proc/self/fd/6), flags: 0x5001: not a directory: unknown'
reason: StartError
startedAt: "1970-01-01T00:00:00Z"
Solusi:
Untuk mengembalikan subkomponen ke status normal, hapus volumeMounts yang tidak diperlukan.
Edit deployment saat ini:
export KUBECONFIG=/root/release/root-admin/root-admin-kubeconfigkubectl edit deployments syslog-server -n istio-systemHapus
volumeMountsyang tidak diperlukan dispec.containers.volumeMounts. Hapus jalur pemasangan berikut:- mountPath: /etc/ssl/certs/obs-ca-cert.pem name: observability-ca readOnly: true1. subPath: ca.crt - mountPath: /etc/ssl/certs/obj-ca-cert.pem name: obj-ca readOnly: true subPath: ca.crtTerapkan perubahan dan subkomponen akan kembali ke
ReconciliationCompletedsetelah perubahan diterapkan.
Upgrade ABM atau Node terhenti di maintenanceMode false
Versi: 1.13.4
Gejala: Node macet saat upgrade cluster AnthosBaremetal dan node tidak memasuki mode pemeliharaan.
Periksa baremetalmachine di node cluster layanan, misalnya:
kubectl get baremetalmachine -n g-org-1-shared-service-cluster 192.0.2.0 -o json | jq .spec.maintenanceMode
false
Solusi:
Mulai ulang anthos-cluster-operator untuk menyebarkan BMM.MaintenanceMode:
kubectl get baremetalmachine -n g-org-1-shared-service-cluster 192.0.2.0 -o json | jq .spec.maintenanceMode
true
Upgrade gagal saat upgrade add-on atat-webhooks untuk org tenant
Versi: 1.13.5
Gejala: Upgrade add-on atat-webhooks gagal dipulihkan:
org-1 atat-webhooks false false 1.13.4-gdch.5582
Anda mungkin melihat pesan seperti ini:
Status: │
│ Conditions: │
│ Last Transition Time: 2024-10-30T17:57:06Z │
│ Message: Error occurred during addon installation: failed to generate parameters for AddOn[atat-webhooks]: failed to generate runtime parameters: parameter job not ready yet │
│ Observed Generation: 4 │
│ Reason: InstallationError │
│ Status: False │
│ Type: Deployed │
│ Last Transition Time: 2024-10-30T17:56:36Z │
│ Message: Reconciliation error
Periksa pod untuk atat-webhooks-parameters-*****:
kubectl logs -n org-1 atat-webhooks-parameters-***** --kubeconfig ROOT_ADMIN_KUBECONFIG
Anda mungkin melihat error seperti ini:
E1030 22:04:33.242244 7 main.go:39] failed to generate parameter for AddOn [atat-webhooks], error: ATAT0003: Organization.resourcemanager.private.gdc.goog "org-1" is invalid: metadata.labels[atat.config.google.com/task-order-number]: Invalid value: "TO1234": The current date 2024-10-30 is not within the valid range of this TaskOrder: 2024-06-30 - 2024-10-30.
Solusi:
Membuat salinan portofolio saat ini:
export KUBECONFIG=ROOT_ADMIN_KUBECONFIGkubectl get portfolios -n atat-system portfolio-org-1 -oyaml > portfolio-org-1Update
portfolio-org-1 Pop End Dateke tanggal mendatang:kubectl delete portfolios -n atat-system portfolio-org-1Jika perintah ini berhenti merespons, hapus kondisi
.Metadata.Finalizersdari portofolio aktif sebelum menghapus portofolio. Kondisinya mungkin terlihat seperti ini:│ portfolio.finalizers.atat.config.google.comTerapkan kembali file YAML yang disalin:
kubectl apply -f portfolio-org-1Periksa kembali tanggal untuk memastikan bahwa portofolio dan configmap telah diperbarui.
Jika tugas tidak pulih, hapus tugas
atat-webhooks-parametersyang gagal dan tugas akan pulih. Tunggu hingga selesai:kubectl delete jobs -n org-1 atat-webhooks-parameters
Postflight atau upgrade-check gagal karena error DeadlineExceeded atau BackoffLimitExceeded.
Versi: 1.13.8
Gejala:
Saat mengupgrade 1.13.7 ke 1.13.8, pemeriksaan pasca-peluncuran masih dalam status tertunda dan menampilkan error DeadlineExceeded atau BackoffLimitExceeded.
Message:postflight check result: pending, [NodeHealth (OS) HarborClusterHealth (AR)] still running
Observed Generation: 3
Reason: ReconcileBackoff
Status: Unknown
Type: ManagedCheckSucceeded
Last Transition Time: 2025-02-13T02:11:41Z
Message: observed the following failure reasons: [ReconcileBackoff UpgradeCheckJobsInProgress]
Solusi:
Identifikasi tempat terjadinya kegagalan tugas:
Periksa apakah tugas gagal selama pemeriksaan pra-penerbangan atau pasca-penerbangan:
kubectl get jobs -A -l "upgrade.private.gdc.goog/use" -o json | jq '.items[] | select(.status.conditions | any(.reason == "BackoffLimitExceeded" or .reason == "DeadlineExceeded")) | {name: .metadata.name, namespace: .metadata.namespace, status: .status.conditions[].type, reason: .status.conditions[].reason}'Periksa apakah tugas gagal selama upgrade:
kubectl get jobs -A -l "upgrade.private.gdc.goog/upgrade-check-owner" -o json | jq '.items[] | select(.status.conditions | any(.reason == "BackoffLimitExceeded" or .reason == "DeadlineExceeded")) | {name: .metadata.name, namespace: .metadata.namespace, status: .status.conditions[].type, reason: .status.conditions[].reason}'Hapus tugas:
kubectl delete jobs -n gpc-system CHECK_NAME
Pemeriksaan upgrade mencakup hasil yang tidak relevan dengan tingkat pemeriksaan
Versi: 1.13.x
Gejala:
Pemeriksaan upgrade organisasi mungkin gagal karena hasil yang disertakan secara tidak benar dari tingkat lainnya. Misalnya, pemeriksaan organisasi root dapat menampilkan hasil organisasi tenant, atau pemeriksaan organisasi tenant dapat menampilkan hasil cluster pengguna.
Contoh log kegagalan untuk pemeriksaan organisasi root:
kubectl logs -n gpc-system upgrade-check-postflight-haas-n2rk2-zv9rr --kubeconfig /root/release/root-admin/root-admin-kubeconfig
... {org-1 admin } failure ...
Solusi:
Lewati pemeriksaan preflight atau postflight sepenuhnya dengan:
Preflight:
kubectl delete organizationupgrade -n gpc-system ORG_NAME && kubectl annotate -n gpc-system organization ORG_NAME upgrade.private.gdc.goog/skip-preflight-check=ok
Setelah penerbangan:
kubectl delete organizationupgrade -n gpc-system ORG_NAME && kubectl annotate -n gpc-system organization ORG_NAME upgrade.private.gdc.goog/skip-postflight-check=ok
Vertex AI
API terlatih menampilkan status Enabling di antarmuka pengguna
Versi: 1.13.1
Gejala: MonitoringTarget menampilkan status Not Ready saat cluster pengguna sedang dibuat, sehingga menyebabkan API yang telah dilatih sebelumnya terus menampilkan status Enabling di antarmuka pengguna.
Solusi:
- Buka menu di browser Chrome Anda (ikon tiga titik).
- Klik Alat lainnya > Alat developer untuk membuka konsol.
- Klik tab Network di konsol.
- Temukan permintaan
ai-service-status. - Klik tab Response dalam permintaan
ai-service-statusuntuk menampilkan isi permintaan tersebut. - Pastikan semuanya sudah siap kecuali komponen
MonitoringTargetdanLoggingTarget.
Fungsi API terlatih streaming_recognize Speech-to-Text gagal
Versi: 1.13.3
Gejala: Saat memanggil fungsi API Speech-to-Text yang telah dilatih sebelumnya streaming_recognize, masalah pada library klien menyebabkan pesan error 400 yang mirip dengan berikut ini:
google.api_core.exceptions.InvalidArgument: 400 The header 'x-goog-user-project' should be set
Solusi: Gunakan skrip Python berikut agar fungsi streaming_recognize dapat berfungsi:
import base64
from google.cloud import speech_v1p1beta1
from google.cloud.speech_v1p1beta1.services.speech import client
import google.auth
from google.auth.transport import requests
import requests as reqs
from google.api_core.client_options import ClientOptions
import os
audience= "https://ENDPOINT:443"
api_endpoint="ENDPOINT:443"
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "APPLICATION_DEFAULT_CREDENTIALS_FILENAME"
os.environ["GRPC_DEFAULT_SSL_ROOTS_FILE_PATH"] = "CERT_NAME"
def get_client(creds):
opts = ClientOptions(api_endpoint=api_endpoint)
return client.SpeechClient(credentials=creds, client_options=opts)
def main():
creds = None
try:
creds, project_id = google.auth.default()
creds = creds.with_gdch_audience(audience)
sesh = reqs.Session()
sesh.verify = False
req = requests.Request(session=sesh)
creds.refresh(req)
except Exception as e:
print("Caught exception" + str(e))
raise e
return creds
def speech_func(creds):
tc = get_client(creds)
content="[ENCODED CONTENT STRING HERE]"
audio = speech_v1p1beta1.RecognitionAudio()
audio.content = base64.standard_b64decode(content)
config = speech_v1p1beta1.StreamingRecognitionConfig()
config.config.encoding= speech_v1p1beta1.RecognitionConfig.AudioEncoding.LINEAR16
config.config.sample_rate_hertz=16000
config.config.language_code="en-US"
config.config.audio_channel_count=1
request_config = speech_v1p1beta1.StreamingRecognizeRequest(
streaming_config = config,
)
request_audio = speech_v1p1beta1.StreamingRecognizeRequest(
audio_content = audio.content
)
requests = [request_config, request_audio]
def request_generator():
for request in requests:
yield request
metadata = (("x-goog-user-project", "projects/vtx-pretrained"),)
resp = tc.streaming_recognize(requests=request_generator(), metadata=metadata)
for response in resp:
print(response)
if __name__=="__main__":
creds = main()
speech_func(creds)
Ganti kode berikut:
ENDPOINT: endpoint Speech-to-Text. Untuk mengetahui informasi selengkapnya, lihat status dan endpoint layanan.APPLICATION_DEFAULT_CREDENTIALS_FILENAME: nama file JSON yang berisi kunci akun layanan yang Anda buat di project, sepertimy-service-key.json.CERT_NAME: nama file sertifikat Certificate Authority (CA), sepertiorg-1-trust-bundle-ca.cert. Untuk mengetahui informasi selengkapnya, lihat Membuat file sertifikat CA paket kepercayaan di lingkungan pengembangan.
Skrip Python memperkenalkan perbedaan berikut antara fungsi streaming_recognize dan recognize agar solusi untuk streaming_recognize berfungsi:
- Baris 4: Pernyataan
importtambahan dibandingkan dengan skriprecognize(from google.cloud.speech_v1p1beta1.services.speech import client). - Baris 18: Klien ditampilkan oleh
client.SpeechClient(), bukanspeech_v1p1beta1.SpeechClient().
Pod dan layanan frontend Translation gagal diinisialisasi
Versi: 1.11.x, 1.12.x, 1.13.x
Gejala: Selama upgrade, cluster DB Translation dibuat ulang, yang menyebabkan rahasia cluster sistem ODS secret-store menjadi tidak berlaku dan tidak sinkron. Oleh karena itu, pod dan layanan frontend Terjemahan gagal diinisialisasi.
Solusi:
Hapus secret di cluster sistem:
kubectl --kubeconfig SYSTEM_CLUSTER_KUBECONFIG delete secret postgres-secret-store -n ai-translation-system
Ganti SYSTEM_CLUSTER_KUBECONFIG dengan jalur ke file kubeconfig di cluster sistem.
Pengontrol membuat ulang secret secara otomatis dan menyinkronkannya kembali dengan cluster DB.
Polling status tugas tidak didukung untuk batchTranslateDocument API
Versi: 1.13.3
Gejala: Vertex AI tidak mendukung operasi GET dan LIST di API layanan Terjemahan. Memanggil Translation BatchTranslateDocument API akan menampilkan operasi yang berjalan lama yang mirip dengan contoh berikut:
{
"name": "projects/PROJECT_ID/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.translation.v3.BatchTranslateDocumentMetadata",
"state": "RUNNING"
}
}
Masalah ini disebabkan oleh batasan APIP (otorisasi) yang mencegah Anda memanggil endpoint secara langsung. Endpoint tidak mendukung polling status tugas, dan Anda tidak dapat melakukan operasi GET pada operasi yang berjalan lama karena batasan APIP.
Solusi: Sebagai Operator Aplikasi (AO), tinjau status tugas dengan memeriksa folder s3_destination Anda secara rutin dan cari file output tugas yang baru dibuat. Jika folder berisi file output, tugas berhasil diselesaikan.
Permintaan batchTranslateDocument dapat menyebabkan masalah performa
Versi: 1.13.3
Gejala: Layanan terjemahan dokumen batch membaca satu atau beberapa file input pengguna dan menulis file output terjemahan dan pemrosesan sementara di StorageGRID. Klien curl baru dibuat untuk setiap tindakan baca-tulis karena penggunaan ulang klien gagal.
Klien curl S3 dalam biner adalah penggunaan satu kali, yang berarti bahwa setiap klien hanya dapat melakukan satu tindakan baca-tulis pada bucket StorageGRID. Oleh karena itu, klien curl baru dibuat setiap kali komunikasi dengan klien StorageGRID dilakukan dari server batchTranslateDocument untuk membaca dan menulis file dalam bucket.
Namun, hal ini tidak optimal untuk klien curl. Hal ini dapat menyebabkan masalah berikut:
- Penurunan performa: peningkatan latensi dan penurunan throughput
- Kehabisan resource: overhead memori dan CPU serta kehabisan soket
- Server kelebihan beban: pembatasan kapasitas atau pembatasan
Konsol GDC menampilkan status yang tidak konsisten setelah mengaktifkan API terlatih
Versi: 1.13.3
Gejala: Saat Anda pertama kali mengaktifkan API terlatih, konsol GDC mungkin menampilkan status yang tidak konsisten setelah beberapa menit untuk layanan yang diaktifkan. Konsol GDC mengalihkan status Enabling kembali ke Disabled dan menampilkan tombol Aktifkan lagi di antarmuka pengguna meskipun layanan sebenarnya sedang diaktifkan.
Solusi: Status akan menjadi konsisten setelah beberapa menit, dan layanan akan mencerminkan status yang benar.
Untuk memverifikasi status layanan, buka tab Network di konsol browser dan periksa status permintaan ai-service-status. Payload harus menunjukkan bahwa operator L2 diaktifkan.
Permintaan terjemahan dengan lebih dari 250 karakter menyebabkan pod translation-prediction-server error
Versi: 1.13.3
Gejala: Saat Anda mengirim permintaan Terjemahan dengan sekitar 250 karakter atau lebih (termasuk permintaan terjemahan dokumen), pod translation-prediction-0 atau translation-prediction-1 mungkin mengalami error, sehingga memerlukan pemuatan ulang model. Pemuatan ulang model terjadi secara otomatis, dan proses ini dapat memerlukan waktu sekitar 30 menit untuk diselesaikan.
Masalah ini disebabkan oleh batasan pada penampung Terjemahan.
Solusi: Pisahkan permintaan Terjemahan agar panjangnya kurang dari 250 karakter. Rentang antara 200 dan 250 karakter aman untuk semua bahasa. Tidak ada tindakan lain yang diperlukan untuk mengurangi masalah jika permintaan yang panjang menyebabkan pod mengalami error.
GPUAllocation untuk cluster layanan bersama tidak dikonfigurasi dengan benar
Versi: 1.13.3
Gejala: Workload Vertex AI tidak dapat dijadwalkan karena kurangnya resource GPU yang memadai. Misalnya, jika Anda tidak dapat melihat atau mengaktifkan endpoint layanan Vertex AI, hal ini dapat disebabkan oleh kurangnya resource GPU yang memadai.
Masalah penyediaan resource ini dapat disebabkan oleh beberapa resource GPUAllocation yang berada dalam cluster layanan bersama yang tidak memiliki anotasi berikut:
processed: "true"
Solusi:
Ikuti IAM-R0004 untuk membuat file kubeconfig untuk
g-ORG_NAME-shared-service-cluster.Mencantumkan semua alokasi GPU di cluster layanan yang tidak memiliki anotasi
processed: "true":kubectl get gpuallocations -A -n vm-system \ --kubeconfig SERVICE_CLUSTER_KUBECONFIG \ -o json | jq \ '.items[] | select(.metadata.annotations.processed == null ) | .metadata.name'Outputnya mirip dengan hal berikut ini:
zi-ad-bm08Untuk resource
GPUAllocationyang tidak dialokasikan, buka di editor:kubectl edit gpuallocation -n vm-system NODE_NAMEEdit alokasi GPU berdasarkan jumlah total alokasi GPU yang ada di cluster layanan:
Jika hanya ada satu resource kustom alokasi GPU, tambahkan anotasi
processed: "true"ke resource tersebut dan ubah spesifikasinya agar seperti berikut:annotations: processed: "true" spec: mig: allowNodeReboot: true count: 4 profiles: - mixed-5 - uniform-3g.40gb - uniform-3g.40gb - uniform-7g.80gb node: $node_name // unchanged pod: 0 vm: 0Jika ada dua resource kustom alokasi GPU, temukan yang tanpa anotasi
processed: "true", tambahkan anotasiprocessed: "true"ke resource tersebut, dan ubah spesifikasinya agar seperti berikut:annotations: processed: "true" spec: mig: allowNodeReboot: true count: 2 profiles: - mixed-5 - uniform-3g.40gb node: $node_name // unchanged pod: 0 vm: 0Jika ada empat resource kustom alokasi GPU, temukan yang tanpa anotasi
processed: "true", tambahkan anotasiprocessed: "true"ke resource tersebut, dan ubah spesifikasinya agar seperti berikut:annotations: processed: "true" spec: mig: allowNodeReboot: true count: 1 profiles: - mixed-5 node: $node_name // unchanged pod: 0 vm: 0
Simpan perubahan pada resource kustom
GPUAllocationdan konfirmasi bahwa status alokasinya diperbarui menjaditrue:kubectl get gpuallocations -A --kubeconfig SERVICE_CLUSTER_KUBECONFIGOutputnya mirip dengan hal berikut ini:
NAMESPACE NAME ALLOCATED DEVICEMODEL vm-system zi-ad-bm08 true H100L 94GB vm-system zi-ad-bm09 true H100L 94GB
Saat mengupgrade dari versi 1.9.x ke 1.13.3, pengontrol OCLCM menampilkan error
Versi: 1.13.3
Gejala: Saat mengupgrade dari versi 1.9.x ke 1.13.3, pengontrol Operable Component Lifecycle Management (OCLCM) untuk subkomponen Vertex AI mungkin menampilkan error. Masalah ini disebabkan oleh error pada tugas add-on ai_platform. Error yang Anda terima selama upgrade menunjukkan bahwa OCLCM tidak dapat mentransfer kepemilikan komponen Vertex AI ini.
Berikut adalah komponen Vertex AI yang terpengaruh di cluster admin org:
| Nama | Namespace |
|---|---|
aip-l1operator-deployment |
ai-system |
aip-l2operator-deployment |
ai-system |
aip-web-plugin-frontend |
ai-system |
aip-web-plugin-backend |
ai-system |
aip-l1operator-sa |
ai-system |
aip-l2operator-sa |
ai-system |
aip-web-plugin-sa |
ai-system |
aip-l1operator-role |
T/A |
aip-l2operator-role |
T/A |
aip-web-plugin-role |
T/A |
aip-l1operator-rolebinding |
T/A |
aip-l2operator-rolebinding |
T/A |
aip-web-plugin-rolebinding |
T/A |
aip-l1operator-log |
ai-system |
aip-l2operator-log |
ai-system |
aip-web-plugin-frontend-log |
ai-system |
aip-web-plugin-backend-log |
ai-system |
log-rule-aipl-a004 |
platform-obs |
mon-rule-aipl-a0001 |
platform-obs |
mon-rule-aipl-a0003 |
platform-obs |
aip-l1operator-mon |
ai-system |
aip-l1operator-mon-cm |
ai-system |
aip-l2operator-mon |
ai-system |
aip-l2operator-mon-cm |
ai-system |
aip-l1operator-webhook-svc |
ai-system |
aip-web-plugin-frontend-svc |
ai-system |
aip-web-plugin-backend-svc |
ai-system |
aip-web-plugin-frontend-virtualsvc |
ai-system |
aip-web-plugin-backend-virtualsvc |
ai-system |
aip-l1operator-selfsigned-issuer |
ai-system |
aip-l1operator-serving-cert |
ai-system |
aip-l1operator-validating-webhook |
ai-system |
aip-l1operator-mutating-webhook |
ai-system |
Solusi: Untuk mengatasi masalah ini, Anda harus menghapus komponen Vertex AI yang terpengaruh secara manual dari cluster admin org. Kemudian, Vertex AI versi baru berbasis OCLCM akan menginstal ulang paket tersebut.
Hapus komponen Vertex AI yang terpengaruh secara manual di cluster admin org:
kubectl --kubeconfig=ORG_ADMIN_CLUSTER_KUBECONFIG delete deployment -n NAMESPACE COMPONENT_NAME
Ganti kode berikut:
ORG_ADMIN_CLUSTER_KUBECONFIG: jalur ke file kubeconfig di cluster admin org.NAMESPACE: namespace komponen Vertex AI yang ingin Anda hapus. Jika komponen tidak memiliki namespace, hapus-n NAMESPACEdari perintah.COMPONENT_NAME: nama komponen Vertex AI yang ingin Anda hapus.
Contoh berikut menunjukkan cara menghapus komponen aip-l1operator-deployment yang ada di namespace ai-system pada cluster admin org:
kubectl --kubeconfig=ORG-ADMIN-CLUSTER-KUBECONFIG delete deployment -n ai-system aip-l1operator-deployment
Permintaan terjemahan dapat menghasilkan kode error RESOURCE_EXHAUSTED
Versi: 1.13.3
Gejala: Setelah mengirim permintaan terjemahan, Anda mendapatkan kode error RESOURCE_EXHAUSTED dalam pesan respons. Error ini terjadi saat Anda melebihi batas frekuensi sistem. Resource telah habis, seperti kuota per pengguna, kueri maksimum per detik, atau seluruh sistem file kehabisan ruang.
Solusi: Minta Operator Infrastruktur (IO) Anda untuk memulai ulang shard backend layanan terjemahan. Kemudian, kirim permintaan terjemahan lagi dengan penundaan yang lebih lama antar-permintaan atau dengan mengirim permintaan yang lebih pendek.
batchTranslateDocument menampilkan error 503
Versi: 1.13.3
Gejala: Setelah mengirim permintaan batchTranslateDocument, Anda mendapatkan kode error 503 "Batch Document translation is not implemented" dalam pesan respons. Error ini terjadi karena metode BatchTranslateDocument memerlukan layanan Aspose, yang hanya di-deploy saat parameter yang dapat dioperasikan enableRAG ditetapkan ke true di cluster.
Solusi: Minta Operator Infrastruktur (IO) Anda untuk menyetel parameter enableRAG yang dapat dioperasikan ke true di cluster admin org dengan mengikuti langkah-langkah berikut:
Buat resource kustom
SubcomponentOverridedalam file YAML bernamavai-translation.yamldengan parameter yang dapat dioperasikanenableRAGdisetel ketrue:apiVersion: lcm.private.gdc.goog/v1 kind: SubcomponentOverride metadata: name: "vai-translation" namespace: ORG_ADMIN_NAMESPACE spec: subComponentRef: "vai-translation" backend: operableParameters: enableRAG: trueGanti
ORG_ADMIN_NAMESPACEdengan namespace cluster admin org.Terapkan resource kustom
SubcomponentOverrideke cluster admin org:kubectl --kubeconfig ORG_ADMIN_KUBECONFIG apply -f vai-translation.yamlGanti
ORG_ADMIN_KUBECONFIGdengan jalur ke file kubeconfig di cluster admin org.
Layanan terlatih Vertex AI tidak tersedia
Versi: 1.13.7, 1.13.9
Gejala: Layanan OCR dan Terjemahan Vertex AI gagal dimulai karena masalah penjadwalan Kubernetes. Anda mungkin melihat peringatan seperti ini di log:
Warning FailedScheduling 105s (x40 over 3h18m) default-scheduler 0/9 nodes are available: 1 Insufficient nvidia.com/mig-3g.40gb-NVIDIA_A100_80GB_PCIE, 1 node(s) had untolerated taint {serviceenvironment.private.gdc.goog/dbs-billing-
system-billing-dbcluster: }, 1 node(s) had untolerated taint {serviceenvironment.private.gdc.goog/dbs-g-vai-ocr-sie-g-vai-ocr-sie: }, 1 node(s) had untolerated taint {serviceenvironment.private.gdc.goog/dbs-g-vai-translation-sie-g-v-1gvg:
}, 3 Insufficient cpu, 3 node(s) had untolerated taint {node-role.kubernetes.io/control-plane: }. preemption: 0/9 nodes are available: 3 No preemption victims found for incoming pod, 6 Preemption is not helpful for scheduling.
Solusi: Tambahkan lebih banyak node pekerja ke kumpulan default dan hapus pod di node GPU sehingga workload AI dapat dijadwalkan.
Mesin virtual
Impor image BYO gagal untuk image qcow2 dan raw
Versi: 1.13.1, 1.13.3
Gejala: Saat image VM lokal diimpor menggunakan CLI gdcloud compute images import,
status impor macet di WaitingForTranslationVM atau ImportJobNotCreated. Hal ini karena
disk sementara yang dibuat untuk menerjemahkan atau mengimpor menggunakan ukuran yang sama persis dengan image qcow2/raw, tetapi LUKS menambahkan
overhead beberapa MiB yang menyebabkan penyediaan disk gagal.
Solusi:
Buat VirtualMachineImageImport baru secara manual dengan nama image yang sama, tetapi dengan
spec.minimumDiskSize yang lebih besar
Misalnya, jika ini adalah perintah yang digunakan untuk mengimpor gambar:
gdcloud compute images import $IMPORT_NAME --project $PROJECT --source-file=$LOCAL_FILENAME --os=$OS
Jika VirtualMachineImageImport asli yang dibuat secara otomatis oleh CLI memiliki
minimumDiskSize sebagai X Gi, buat yang baru dengan X+1 Gi. Nilai didasarkan pada
ukuran gambar yang diimpor. Untuk qcow2, ukurannya adalah ukuran virtual,
misalnya 20Gi harus diganti dengan 21Gi.
Ganti nilai placeholder berdasarkan cara CLI dipanggil.
Temukan
VirtualMachineImageImport:kubectl get virtualmachineimageimport $IMPORT_NAME -n $PROJECT -o yamlJika objek tidak ada, picu kembali perintah
gdcloud compute images import .... Setelah output konsol bertransisi dariUploading image to ..keImage import has started for ..., tekan ctrl+c agar image lokal diupload ke penyimpanan objek danVirtualMachineImageImportdipertahankan sebagai referensi untuk membuat yang baru.Buat
VirtualMachineImageImportbaru denganminimumDiskSizeyang lebih besar:apiVersion: virtualmachine.gdc.goog/v1 kind: VirtualMachineImageImport metadata: name: $IMPORT_NAME_NEW namespace: $NAMESPACE spec: imageMetadata: minimumDiskSize: $NEW_SIZE name: $IMAGE_NAME operatingSystem: $OS source: objectStorage: bucketRef: name: vm-images-bucket objectName: $LOCAL_FILENAME
Penyediaan disk dari image gagal
Versi: 1.13.1, 1.13.3
Gejala: Saat menyediakan disk dari image kustom, minimumDiskSize
mungkin terlalu dekat dengan ukuran virtual, sehingga menyebabkan penyediaan disk gagal.
Disk VM dalam status tertunda, tetapi tidak pernah disediakan.
Solusi: Buat disk baru secara manual dengan spec.minimumDiskSize yang lebih besar.
Plugin perangkat NVIDIA DaemonSet gagal saat cluster memiliki GPU
Versi: 1.13.3
Gejala: Plugin perangkat NVIDIA DaemonSet gagal dengan pesan driver rpc error di node cluster dengan GPU:
kubectl --kubeconfig KUBECONFIG describe pods -lgpu-device-plugin=nvidia -n vm-system
Ganti KUBECONFIG dengan jalur ke file kubeconfig di cluster.
Anda akan mendapatkan output yang mirip dengan contoh berikut:
Warning Failed 23m (x4 over 25m) kubelet Error: failed to create containerd task: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error running hook #0: error running hook: exit status 1, stdout: , stderr: Auto-detected mode as 'legacy'
nvidia-container-cli: initialization error: driver rpc error: timed out: unknown
Masalah ini menyebabkan GPU tidak tersedia untuk mesin virtual (VM) dan pod. Implikasinya didasarkan pada jenis cluster berikut:
- Cluster sistem: Resource kustom
GPUAllocationtidak dibuat untuk node bare metal tersebut, dan GPU di node tersebut tidak dikonfigurasi dalam mode VM untuk digunakan oleh cluster layanan dan pengguna. Lihat solusi untuk cluster sistem guna mengatasi masalah ini. - Cluster layanan atau pengguna: Resource kustom
GPUAllocationtidak dibuat untuk node VM tersebut, dan GPU di node tersebut tidak dapat digunakan oleh pod di cluster. Lihat solusi untuk layanan atau cluster pengguna guna mengatasi masalah ini.
Solusi untuk cluster sistem:
Ikuti langkah-langkah berikut untuk menyelesaikan masalah di cluster sistem:
Tetapkan variabel lingkungan
KUBECONFIGdengan jalur ke file kubeconfig di cluster sistem. Untuk mengetahui detailnya, lihat buku pedoman IAM-R0004.Identifikasi node yang mengalami masalah:
kubectl --kubeconfig $KUBECONFIG describe pods -lgpu-device-plugin=nvidia -n vm-system | grep -i Node:Output harus mencetak nama node dan alamat IP node Kubernetes.
Jika ada beberapa node, jalankan langkah-langkah di semua node tersebut. Dalam hal ini, outputnya akan terlihat seperti contoh berikut:
Node: yy-ab-bm04/172.20.128.26Tetapkan variabel lingkungan
NODE_NAMEdengan nama node, misalnya:export NODE_NAME=yy-ab-bm04Buat koneksi SSH dengan node. Untuk mengetahui detailnya, lihat buku pedoman PLATAUTH-G0001.
Verifikasi bahwa node memiliki GPU:
nvidia-smi -LOutput harus mencetak GPU di node seperti dalam contoh berikut:
GPU 0: NVIDIA H100 NVL (UUID: GPU-0f6179a7-71a8-c654-44f0-1542bddf2574) GPU 1: NVIDIA H100 NVL (UUID: GPU-4debf794-d8a5-74a2-e521-0c763288ea79) GPU 2: NVIDIA H100 NVL (UUID: GPU-5827b65a-3841-d877-fc17-881a2b71d416) GPU 3: NVIDIA H100 NVL (UUID: GPU-31448904-9ae2-c95a-1986-a56cce004f49)Aktifkan mode persistensi di GPU:
nvidia-smi -pm 1Tindakan ini memastikan bahwa driver NVIDIA selalu dimuat sehingga plugin perangkat tidak mengalami waktu tunggu habis.
Output harus terlihat seperti contoh berikut:
Enabled persistence mode for GPU 00000000:4E:00.0. Enabled persistence mode for GPU 00000000:62:00.0. Enabled persistence mode for GPU 00000000:C9:00.0. Enabled persistence mode for GPU 00000000:DE:00.0. All done.Keluar dari sesi SSH:
exitPastikan plugin perangkat berjalan dengan membuat kueri
DaemonSet:kubectl --kubeconfig $KUBECONFIG describe pods -lgpu-device-plugin=nvidia -n vm-systemPastikan resource kustom
GPUAllocationdibuat dan dikonfigurasi dalam mode VM:kubectl --kubeconfig $KUEBCONFIG get gpuallocation -n vm-system $NODE_NAME -o yamlOutput harus terlihat seperti contoh berikut:
apiVersion: gpu.cluster.gke.io/v1 kind: GPUAllocation metadata: annotations: processed: "true" creationTimestamp: "2024-08-21T07:03:18Z" generation: 2 name: yy-ab-bm04 namespace: vm-system resourceVersion: "12179728" uid: b840cb53-5b0b-45bf-ab26-66db98fd64a4 spec: node: yy-ab-bm04 pod: 0 vm: 4 status: allocated: true conditions: - lastTransitionTime: "2024-08-21T07:05:49Z" message: "" observedGeneration: 2 reason: AllocationFulfilled status: "True" type: AllocationStatus - lastTransitionTime: "2024-08-21T07:03:53Z" message: "" observedGeneration: 2 reason: DeviceStateUpdated status: "True" type: DeviceStateUpdated consumption: pod: 0/0 vm: 4/4 deviceModel: H100L 94GB
Solusi untuk layanan atau cluster pengguna:
Ikuti langkah-langkah berikut untuk menyelesaikan masalah di layanan atau cluster:
Tetapkan variabel lingkungan
KUBECONFIGdengan jalur ke file kubeconfig di cluster layanan atau pengguna. Untuk mengetahui detailnya, lihat buku pedoman IAM-R0004.Identifikasi node yang mengalami masalah:
kubectl --kubeconfig $KUBECONFIG describe pods -lgpu-device-plugin=nvidia -n vm-system | grep -i Node:Output harus mencetak nama node dan alamat IP node Kubernetes.
Jika ada beberapa node, jalankan langkah-langkah di semua node tersebut. Dalam hal ini, outputnya akan terlihat seperti contoh berikut:
Node: vm-948fa7f4/172.20.128.21Tetapkan variabel lingkungan
NODE_NAMEdengan nama node, misalnya:export NODE_NAME=vm-948fa7f4Buat koneksi SSH dengan node. Untuk mengetahui detailnya, lihat buku pedoman PLATAUTH-G0001.
Verifikasi bahwa node memiliki GPU:
nvidia-smi -LOutput harus mencetak GPU di node seperti dalam contoh berikut:
GPU 0: NVIDIA H100 NVL (UUID: GPU-0f6179a7-71a8-c654-44f0-1542bddf2574) GPU 1: NVIDIA H100 NVL (UUID: GPU-4debf794-d8a5-74a2-e521-0c763288ea79)Aktifkan mode persistensi di GPU:
nvidia-smi -pm 1Tindakan ini memastikan bahwa driver NVIDIA selalu dimuat sehingga plugin perangkat tidak mengalami waktu tunggu habis.
Output harus terlihat seperti contoh berikut:
Enabled persistence mode for GPU 00000000:05:00.0. Enabled persistence mode for GPU 00000000:06:00.0. All done.Keluar dari sesi SSH:
exitPastikan plugin perangkat berjalan dengan membuat kueri
DaemonSet:kubectl --kubeconfig $KUBECONFIG describe pods -lgpu-device-plugin=nvidia -n vm-systemPastikan resource kustom
GPUAllocationdibuat dan dikonfigurasi dalam mode VM:kubectl --kubeconfig $KUBECONFIG get gpuallocation -n vm-system $NODE_NAME -o yamlOutput harus terlihat seperti contoh berikut:
apiVersion: gpu.cluster.gke.io/v1 kind: GPUAllocation metadata: annotations: processed: "true" creationTimestamp: "2024-08-21T07:03:18Z" generation: 2 name: vm-948fa7f4 namespace: vm-system resourceVersion: "12179728" uid: b840cb53-5b0b-45bf-ab26-66db98fd64a4 spec: node: vm-948fa7f4 pod: 2 vm: 0 status: allocated: true conditions: - lastTransitionTime: "2024-08-21T07:05:49Z" message: "" observedGeneration: 2 reason: AllocationFulfilled status: "True" type: AllocationStatus - lastTransitionTime: "2024-08-21T07:03:53Z" message: "" observedGeneration: 2 reason: DeviceStateUpdated status: "True" type: DeviceStateUpdated consumption: pod: 0/2 vm: 0/0 deviceModel: H100L 94GB
VM cluster sistem belum siap
Versi: 1.13.3
Gejala: VM cluster sistem belum siap. Anda mungkin melihat pesan seperti ini:
│ Conditions: │
│ Type Status LastHeartbeatTime LastTransitionTime Reason │
│ Message │
│ ---- ------ ----------------- ------------------ ------ │
│ ------- │
│ KubeletUnhealthy False Tue, 20 Aug 2024 02:10:42 +0000 Tue, 20 Aug 2024 02:10:37 +0000 KubeletIsHealthy │
│ kubelet on the node is functioning properly │
│ KernelDeadlock False Tue, 20 Aug 2024 02:10:42 +0000 Sun, 30 Jun 2024 16:53:33 +0000 KernelHasNoDeadlock │
│ kernel has no deadlock │
│ ReadonlyFilesystem False Tue, 20 Aug 2024 02:10:42 +0000 Sun, 30 Jun 2024 16:53:33 +0000 FilesystemIsNotReadOnly │
│ Filesystem is not read-only │
│ FrequentUnregisterNetDevice False Tue, 20 Aug 2024 02:10:42 +0000 Tue, 20 Aug 2024 02:10:40 +0000 NoFrequentUnregisterNetDevice │
│ node is functioning properly │
│ ContainerRuntimeUnhealthy False Tue, 20 Aug 2024 02:10:42 +0000 Tue, 20 Aug 2024 02:10:39 +0000 ContainerRuntimeIsHealthy │
│ Container runtime on the node is functioning properly │
│ FrequentKubeletRestart False Tue, 20 Aug 2024 02:10:42 +0000 Tue, 20 Aug 2024 02:10:41 +0000 NoFrequentKubeletRestart │
│ kubelet is functioning properly │
│ FrequentDockerRestart False Tue, 20 Aug 2024 02:10:42 +0000 Tue, 20 Aug 2024 02:10:40 +0000 NoFrequentDockerRestart │
│ docker is functioning properly │
│ FrequentContainerdRestart False Tue, 20 Aug 2024 02:10:42 +0000 Thu, 15 Aug 2024 01:44:23 +0000 NoFrequentContainerdRestart │
│ containerd is functioning properly │
│ MemoryPressure Unknown Tue, 20 Aug 2024 01:25:55 +0000 Tue, 20 Aug 2024 01:27:22 +0000 NodeStatusUnknown │
│ Kubelet stopped posting node status. │
│ DiskPressure Unknown Tue, 20 Aug 2024 01:25:55 +0000 Tue, 20 Aug 2024 01:27:22 +0000 NodeStatusUnknown │
│ Kubelet stopped posting node status. │
│ PIDPressure Unknown Tue, 20 Aug 2024 01:25:55 +0000 Tue, 20 Aug 2024 01:27:22 +0000 NodeStatusUnknown │
│ Kubelet stopped posting node status. │
│ Ready Unknown Tue, 20 Aug 2024 01:25:55 +0000 Tue, 20 Aug 2024 01:27:22 +0000 NodeStatusUnknown │
│ Kubelet stopped posting node status.
Solusi:
- Temukan
VirtualMachineInstance, lalu hapus. - Mulai ulang VM baru.
Ruang sementara laporan volume data tidak ditemukan
Versi: 1.13.3, 1.13.4
Gejala: Saat membuat disk VM, volume data dilaporkan berhasil:
gdch-vm-infra gdc-vm-disk-vm-ce34b8ea-disk Succeeded 100.0% 1 18h
Namun, pod pengimpor, seperti importer-gdc-vm-disk-vm-ce34b8ea-disk crash
loop dengan pesan seperti ini:
E0823 16:14:15.920008 1 data-processor.go:251] scratch space required and none found
E0823 16:14:15.920017 1 importer.go:185] scratch space required and none found
Solusi: Hapus pod pengimpor setelah mengonfirmasi bahwa status volume data
adalah Succeeded.
VM dalam project dengan nama yang melebihi 45 karakter akan tetap dalam status dihentikan
Versi: 1.13.5
Gejala: Saat membuat VM, VM tetap dalam status Stopped jika nama project memiliki lebih dari 45 karakter.
Solusi: Buat project dengan nama yang tidak lebih dari 45 karakter.
Alokasi GPU tidak ada di cluster layanan
Versi: 1.13.5
Gejala: GPUAllocation tidak ada di cluster layanan bersama gpu-org. Anda mungkin melihat pesan saat mendapatkan alokasi GPU:
KUBECONFIG=/root/release/user/gpu-org-shared-service-kubeconfig kubectl get gpuallocations -A
Outputnya akan terlihat seperti ini:
No resources found
Solusi:
Tambahkan taint ke node GPU:
taints: - effect: NoExecute key: vmm.gdc.goog/gpu-node value: a3-highgpu-4gHapus taint untuk mengizinkan penjadwalan pod virt-launcher VM.
Tidak dapat menjadwalkan VM pekerja cluster layanan bersama
Versi: 1.13.6
Gejala: VM pekerja Kubernetes gagal dijadwalkan karena resource CPU yang tidak memadai pada node yang ditentukan, meskipun GPU tersedia. Anda mungkin melihat peristiwa seperti ini:
Warning FailedScheduling 33m (x29 over 92m) default-scheduler 0/9 nodes are available: 1 Insufficient memory, 3 node(s) had untolerated taint {node-role.kubernetes.io/control-plane: }, 5 Insufficient cpu, 5 Insufficient nvidia.com/gpu-vm-H100L_94GB. preemption: 0/
9 nodes are available: 3 Preemption is not helpful for scheduling, 6 No preemption victims found for incoming pod.
Solusi:
- Hentikan VM non-GPU secara manual untuk membebaskan resource CPU.
- Setelah VM yang tertunda dijadwalkan, mulai VM non-GPU.