Cluster Anthos di VMware kini menjadi Google Distributed Cloud (khusus software) untuk VMware. Untuk mengetahui informasi selengkapnya, lihat ringkasan produk.
Halaman ini mencantumkan semua masalah umum untuk Google Distributed Cloud di VMware. Halaman ini ditujukan
untuk Operator dan administrator IT yang mengelola siklus proses
infrastruktur teknologi yang mendasarinya, serta merespons pemberitahuan dan halaman saat tujuan tingkat layanan (SLO) tidak terpenuhi atau aplikasi gagal. Untuk mempelajari lebih lanjut peran umum dan contoh tugas yang kami referensikan dalam konten Google Cloud , lihat Peran dan tugas pengguna GKE Enterprise umum.
Jika Anda adalah bagian dari Program Developer Google, simpan halaman ini untuk menerima
notifikasi saat catatan rilis yang terkait dengan halaman ini dipublikasikan. Untuk
mempelajari lebih lanjut, lihat
Halaman Tersimpan.
Untuk memfilter masalah umum berdasarkan versi atau kategori produk, pilih filter yang diinginkan dari menu drop-down berikut.
Pencadangan cluster untuk cluster admin non-HA gagal karena nama datastore dan datadisk yang panjang
Saat mencoba mencadangkan cluster admin non-HA, pencadangan akan gagal karena panjang gabungan nama datastore dan datadisk melebihi panjang karakter maksimum.
Panjang maksimum karakter untuk nama datastore adalah 80. Jalur pencadangan untuk cluster admin non-HA memiliki sintaksis penamaan "__". Jadi, jika nama yang digabungkan melebihi panjang maksimum, pembuatan folder cadangan akan gagal
Solusi:
Ganti nama datastore atau datadisk menjadi nama yang lebih pendek. Pastikan panjang gabungan nama datastore dan datadisk tidak melebihi panjang karakter maksimum.
Update
1.13, 1.14, 1.15, 1.16
Node control plane cluster pengguna selalu dimulai ulang selama operasi update cluster admin pertama
Setelah node control plane cluster pengguna kubeception dibuat, diupdate, atau diupgrade, node tersebut akan dimulai ulang satu per satu, selama operasi cluster admin pertama saat cluster admin dibuat di atau diupgrade ke salah satu versi yang terpengaruh. Untuk cluster kubeception dengan 3 node bidang kontrol, hal ini tidak akan menyebabkan periode nonaktif bidang kontrol dan satu-satunya dampak adalah operasi cluster admin memerlukan waktu lebih lama.
Penginstalan, Upgrade, dan update
1,31
Error saat membuat resource kustom
Di Google Distributed Cloud versi 1.31, Anda mungkin mendapatkan error saat
mencoba membuat resource kustom, seperti cluster (semua jenis) dan
beban kerja. Masalah ini disebabkan oleh perubahan yang menyebabkan gangguan yang diperkenalkan di
Kubernetes 1.31 yang mencegah kolom caBundle dalam definisi resource
kustom bertransisi dari status valid menjadi tidak valid.
Untuk mengetahui informasi selengkapnya tentang perubahan ini, lihat
log perubahan Kubernetes 1.31.
Sebelum Kubernetes 1.31, kolom caBundle sering kali ditetapkan
ke nilai sementara \n, karena pada versi Kubernetes
sebelumnya, server API tidak mengizinkan konten paket CA kosong. Menggunakan
\n adalah solusi yang wajar untuk menghindari kebingungan, karena
cert-manager biasanya memperbarui caBundle
nanti.
Jika caBundle telah di-patch sekali dari status tidak valid menjadi
valid, seharusnya tidak ada masalah. Namun, jika definisi resource kustom
direkonsiliasi kembali ke \n (atau nilai lain yang tidak valid), Anda mungkin mengalami error berikut:
...Invalid value: []byte{0x5c, 0x6e}: unable to load root certificates: unable to parse bytes as PEM block]
Solusi
Jika memiliki definisi resource kustom dengan caBundle
ditetapkan ke nilai yang tidak valid, Anda dapat menghapus kolom caBundle
sepenuhnya dengan aman. Tindakan ini akan menyelesaikan masalah.
OS
1,31
cloud-init status selalu menampilkan error
Saat mengupgrade cluster yang menggunakan image OS
Container Optimized OS (COS) ke 1.31, perintah cloud-init status gagal meskipun
cloud-init selesai tanpa error.
Solusi:
Jalankan perintah berikut untuk memeriksa status cloud-init:
systemctl show -p Result cloud-final.service
Jika output-nya mirip dengan berikut ini, berarti cloud-init berhasil
selesai:
Result=success
Upgrade
1,28
Pemeriksaan pra-penerbangan workstation admin gagal saat mengupgrade ke 1.28 dengan
ukuran disk kurang dari 100 GB
Saat mengupgrade cluster ke 1.28, perintah gkectl prepare gagal saat menjalankan pemeriksaan pra-penerbangan workstation admin jika ukuran disk workstation admin kurang dari 100 GB. Dalam hal ini, perintah akan menampilkan pesan error yang mirip dengan berikut ini:
Workstation Hardware: Workstation hardware requirements are not satisfied
Di versi 1.28, prasyarat ukuran disk workstation admin ditingkatkan
dari 50 GB menjadi 100 GB.
gkectl menampilkan error palsu pada storageclass netapp
Perintah gkectl upgrade menampilkan error yang salah tentang storageclass netapp. Pesan errornya mirip dengan yang berikut ini,
detectedunsupporteddrivers:
csi.trident.netapp.io
Solusi:
Jalankan gkectl upgrade dengan flag `--skip-pre-upgrade-checks`.
VMware, Upgrade
1.16
Upgrade cluster gagal karena aturan grup anti-afinitas tidak ada di vCenter
Selama upgrade cluster, objek mesin mungkin macet di fase `Pembuatan` dan gagal ditautkan ke objek node karena aturan grup anti-afinitas (AAG) tidak ada di vCenter.
Jika mendeskripsikan objek mesin yang bermasalah, Anda dapat melihat pesan berulang seperti "Reconfigure DRS rule task "task-xxxx" complete"
credential.yaml dibuat ulang secara tidak benar selama upgrade
workstation admin
Saat mengupgrade workstation admin menggunakan perintah gkeadm upgrade
admin-workstation, file credential.yaml
dibuat ulang dengan tidak benar. Kolom nama pengguna dan sandi kosong.
Selain itu, kunci privateRegistry berisi kesalahan ketik.
Kesalahan ejaan yang sama pada kunci privateRegistry juga ada dalam
file admin-cluster.yaml. Karena file credential.yaml dibuat ulang selama proses upgrade cluster admin, kesalahan ketik akan muncul meskipun Anda telah memperbaikinya sebelumnya.
Solusi:
Perbarui nama kunci registry pribadi di credential.yaml agar
cocok dengan privateRegistry.credentials.fileRef.entry di
admin-cluster.yaml.
Perbarui nama pengguna dan sandi registry pribadi di
credential.yaml.
Upgrade
1.16+
Upgrade cluster pengguna gagal karena waktu tunggu rekonsiliasi pra-upgrade habis
Saat mengupgrade cluster pengguna, operasi rekonsiliasi pra-upgrade mungkin memerlukan waktu lebih lama daripada waktu tunggu yang ditentukan, sehingga menyebabkan kegagalan upgrade.
Pesan error terlihat seperti berikut:
Failed to reconcile the user cluster before upgrade: the pre-upgrade reconcile failed, error message:
failed to wait for reconcile to complete: error: timed out waiting for the condition,
message: Cluster reconcile hasn't finished yet, please fix that before
rerun the upgrade.
Waktu tunggu untuk operasi rekonsiliasi pra-upgrade adalah 5 menit ditambah 1 menit per node pool di cluster pengguna.
Solusi:
Pastikan perintah
gkectl diagnose cluster
lulus tanpa error. Lewati operasi rekonsiliasi pra-upgrade dengan menambahkan flag --skip-reconcile-before-preflight ke perintah gkectl upgrade cluster. Contoh:
Memperbarui ForwardMode DataplaneV2 tidak otomatis memicu mulai ulang DaemonSet anetd
Saat Anda memperbarui kolom dataplaneV2.forwardMode
cluster pengguna menggunakan gkectl update cluster, perubahan hanya diperbarui
di ConfigMap, DaemonSet anetd tidak akan mengambil perubahan konfigurasi hingga dimulai ulang dan perubahan Anda tidak diterapkan.
Solusi:
Setelah perintah gkectl update cluster selesai, Anda akan melihat
output Done updating the user cluster. Setelah Anda melihat pesan tersebut, jalankan perintah berikut untuk memulai ulang DaemonSet anetd guna mengambil perubahan konfigurasi:
Pada output perintah sebelumnya, pastikan angka di kolom DESIRED cocok dengan angka di kolom READY.
Upgrade
1.16
Perintah etcdctl tidak ditemukan selama upgrade cluster pada tahap pencadangan cluster admin
Selama upgrade cluster pengguna dari 1.16 ke 1.28, cluster admin akan dicadangkan. Proses pencadangan cluster admin menampilkan pesan error
"etcdctl: command not found". Upgrade cluster pengguna berhasil, dan
cluster admin tetap dalam kondisi baik. Satu-satunya masalah adalah file metadata di cluster admin tidak dicadangkan.
Penyebab masalah ini adalah biner etcdctl
ditambahkan di 1.28, dan tidak tersedia di node 1.16.
Pencadangan cluster admin melibatkan beberapa langkah, termasuk mengambil snapshot
etcd, lalu menulis file metadata untuk cluster admin.
Pencadangan etcd masih berhasil karena etcdctl masih dapat
dipicu setelah eksekusi ke Pod etcd. Namun, penulisan file metadata
gagal karena masih mengandalkan biner etcdctl untuk
diinstal di node. Namun, pencadangan file metadata bukanlah pemblokir
untuk membuat cadangan, sehingga proses pencadangan masih berhasil, begitu juga dengan
upgrade cluster pengguna.
Solusi:
Jika ingin mencadangkan file metadata, ikuti artikel Mencadangkan dan memulihkan cluster admin dengan gkectl untuk memicu pencadangan cluster admin terpisah menggunakan versi gkectl yang cocok dengan versi cluster admin Anda.
Penginstalan
1.16-1.29
Kegagalan pembuatan cluster pengguna dengan load balancing manual
Saat membuat cluster pengguna yang dikonfigurasi untuk load balancing manual, kegagalan gkectl check-config akan terjadi yang menunjukkan bahwa nilai ingressHTTPNodePort harus minimal 30.000, meskipun ingress yang dipaketkan dinonaktifkan.
Masalah ini terjadi terlepas dari apakah kolom ingressHTTPNodePort
dan ingressHTTPSNodePort ditetapkan atau dibiarkan kosong.
Solusi:
Untuk mengatasi masalah ini, abaikan hasil yang ditampilkan oleh
gkectl check-config. Untuk menonaktifkan ingress yang dipaketkan, lihat
Menonaktifkan ingress yang dipaketkan.
Upgrade
1.16, 1.28, 1.29
Upgrade cluster pengguna CPV2 macet karena mesin yang dicerminkan dengan deletionTimestamp
Selama upgrade cluster pengguna, operasi upgrade mungkin macet jika objek mesin yang dicerminkan di cluster pengguna berisi deletionTimestamp. Pesan error berikut akan ditampilkan
jika upgrade macet:
machine is still in the process of being drained and subsequently removed
Masalah ini dapat terjadi jika sebelumnya Anda mencoba memperbaiki node panel kontrol pengguna dengan menjalankan gkectl delete machine terhadap mesin yang dicerminkan di cluster pengguna.
Solusi:
Dapatkan objek mesin yang dicerminkan dan simpan ke file lokal untuk tujuan
pencadangan.
Jalankan perintah berikut untuk menghapus finalizer dari mesin yang dicerminkan dan tunggu hingga dihapus dari cluster pengguna.
Ikuti langkah-langkah di
Node bidang kontrol cluster pengguna Controlplane V2 untuk memicu perbaikan node
di node bidang kontrol, sehingga spesifikasi mesin sumber yang benar akan
disinkronkan ulang ke cluster pengguna.
Jalankan ulang gkectl upgrade cluster untuk melanjutkan upgrade
Konfigurasi, Penginstalan
1.15, 1.16, 1.28, 1.29
Kegagalan pembuatan cluster karena VIP bidang kontrol di subnet yang berbeda
Untuk cluster admin HA atau cluster pengguna ControlPlane V2, VIP
bidang kontrol harus berada di subnet yang sama dengan node cluster lainnya. Jika tidak, pembuatan
cluster akan gagal karena kubelet tidak dapat berkomunikasi dengan server API menggunakan VIP
bidang kontrol.
Solusi:
Sebelum pembuatan cluster, pastikan VIP bidang kontrol dikonfigurasi di subnet yang sama dengan node cluster lainnya.
Menginstal multipathd di node cluster akan mengganggu driver vSphere CSI sehingga workload pengguna tidak dapat dimulai.
Solusi:
Nonaktifkan multipathd
Update
1.15, 1.16
Webhook cluster admin mungkin memblokir update saat Anda
menambahkan konfigurasi yang diperlukan
Jika beberapa konfigurasi yang diperlukan kosong di cluster admin karena validasi dilewati, menambahkannya mungkin diblokir oleh webhook cluster admin. Misalnya, jika kolom gkeConnect tidak ditetapkan di cluster admin yang ada, menambahkannya dengan perintah gkectl update admin mungkin akan mendapatkan pesan error berikut:
admission webhook "vonpremadmincluster.onprem.cluster.gke.io" denied the request: connect: Required value: GKE connect is required for user clusters
Solusi:
Untuk cluster admin 1.15, jalankan perintah gkectl update admin dengan flag --disable-admin-cluster-webhook. Contoh:
Kolom controlPlaneNodePort ditetapkan secara default ke 30968 saat spec manualLB kosong
Jika akan menggunakan load balancer manual
(loadBalancer.kind ditetapkan ke "ManualLB"),
Anda tidak perlu mengonfigurasi bagian loadBalancer.manualLB
dalam file konfigurasi untuk cluster admin
ketersediaan tinggi (HA) dalam versi 1.16 dan yang lebih baru. Namun, jika bagian ini kosong,
Google Distributed Cloud akan menetapkan nilai default ke semua NodePort termasuk
manualLB.controlPlaneNodePort, yang menyebabkan pembuatan
cluster gagal dengan pesan error berikut:
Pengontrol clusterapi dapat mengalami error saat cluster admin dan cluster pengguna apa pun dengan ControlPlane V2 yang diaktifkan menggunakan kredensial vSphere yang berbeda
Jika cluster admin dan cluster pengguna dengan ControlPlane V2 yang diaktifkan menggunakan
kredensial vSphere yang berbeda, misalnya, setelah mengupdate kredensial vSphere untuk
cluster admin, clusterapi-controller mungkin gagal terhubung ke vCenter setelah dimulai ulang. Melihat log clusterapi-controller yang berjalan di namespace
`kube-system` cluster admin,
Perbarui kredensial vSphere sehingga cluster admin dan semua cluster pengguna dengan Controlplane V2 yang diaktifkan menggunakan kredensial vSphere yang sama.
Logging dan pemantauan
1,14
etcd jumlah permintaan GRPC yang gagal di Prometheus Alert Manager
Prometheus mungkin melaporkan pemberitahuan yang mirip dengan contoh berikut:
Untuk memeriksa apakah pemberitahuan ini adalah positif palsu yang dapat diabaikan,
selesaikan langkah-langkah berikut:
Periksa metrik grpc_server_handled_total mentah dengan
grpc_method yang diberikan dalam pesan pemberitahuan. Dalam contoh
ini, periksa label grpc_code untuk
Watch.
Anda dapat memeriksa metrik ini menggunakan Cloud Monitoring dengan kueri MQL berikut:
Jika membisukan pemberitahuan bukan opsi, tinjau langkah-langkah berikut untuk menyembunyikan positif palsu:
Skalakan operator pemantauan ke replika 0 sehingga
modifikasi dapat dipertahankan.
Ubah configmap prometheus-config, dan tambahkan
grpc_method!="Watch" ke
konfigurasi pemberitahuan etcdHighNumberOfFailedGRPCRequests seperti yang ditunjukkan
dalam contoh berikut:
Ganti CLUSTER_NAME berikut dengan
nama cluster Anda.
Mulai ulang Prometheus dan Alertmanager Statefulset untuk mengambil konfigurasi baru.
Jika kode termasuk dalam salah satu kasus yang bermasalah, periksa log
etcd dan log kube-apiserver untuk men-debug lebih lanjut.
Jaringan
1.16.0-1.16.2, 1.28.0
Koneksi NAT Keluar berumur panjang dihentikan
Koneksi NAT keluar mungkin dihentikan setelah 5 hingga 10 menit koneksi
dibuat jika tidak ada traffic.
Karena conntrack hanya penting dalam arah masuk (koneksi
eksternal ke cluster), masalah ini hanya terjadi jika koneksi
tidak mengirimkan informasi apa pun untuk sementara, lalu sisi tujuan
mengirimkan sesuatu. Jika Pod NAT keluar selalu membuat instance pesan, masalah ini tidak akan terlihat.
Masalah ini terjadi karena pembersihan sampah anetd secara tidak sengaja
menghapus entri conntrack yang menurut daemon tidak digunakan.
Perbaikan upstream
baru-baru ini diintegrasikan ke anetd untuk memperbaiki perilaku tersebut.
Solusi:
Tidak ada solusi mudah, dan kami belum melihat masalah dalam versi 1.16
dari perilaku ini. Jika Anda melihat koneksi yang lama terputus karena masalah ini, solusinya adalah menggunakan beban kerja di node yang sama dengan alamat IP keluar, atau mengirim pesan secara konsisten di koneksi TCP.
Operasi
1.14, 1.15, 1.16
Penanda tangan CSR mengabaikan spec.expirationSeconds saat menandatangani
sertifikat
Jika Anda membuat CertificateSigningRequest (CSR) dengan
expirationSeconds ditetapkan, expirationSeconds
akan diabaikan.
Solusi:
Jika terpengaruh oleh masalah ini, Anda dapat memperbarui cluster pengguna dengan
menambahkan disableNodeIDVerificationCSRSigning: true di file konfigurasi
cluster pengguna dan menjalankan perintah gkectl update cluster
untuk memperbarui cluster dengan konfigurasi ini.
Jaringan, Upgrade, Update
1.16.0-1.16.3
Validasi load balancer cluster pengguna gagal untuk
disable_bundled_ingress
[FAILURE] Config: ingress IP is required in user cluster spec
Error ini terjadi karena gkectl memeriksa alamat IP masuk load
balancer selama pemeriksaan pra-penerbangan. Meskipun pemeriksaan ini
tidak diperlukan saat menonaktifkan ingress yang dipaketkan, pemeriksaan preflight
gkectl akan gagal jika disableBundledIngress ditetapkan ke
true.
Solusi:
Gunakan parameter --skip-validation-load-balancer saat Anda
memperbarui cluster, seperti yang ditunjukkan dalam contoh berikut:
Jika Anda merotasi sertifikat certificate authority (CA) cluster admin,
upaya berikutnya untuk menjalankan perintah gkectl update admin akan gagal.
Error yang ditampilkan mirip dengan yang berikut ini:
failed to get last CARotationStage: configmaps "ca-rotation-stage" not found
Solusi:
Jika Anda terpengaruh oleh masalah ini, Anda dapat mengupdate cluster admin dengan menggunakan flag --disable-update-from-checkpoint dengan perintah gkectl update admin:
Saat Anda menggunakan tanda --disable-update-from-checkpoint, perintah update tidak menggunakan file checkpoint sebagai sumber tepercaya selama update cluster. File checkpoint masih diperbarui untuk penggunaan di masa mendatang.
Penyimpanan
1.15.0-1.15.6, 1.16.0-1.16.2
Pemeriksaan pra-penerbangan Workload CSI gagal karena kegagalan startup Pod
Selama pemeriksaan pra-penerbangan, pemeriksaan validasi Workload CSI akan menginstal Pod di namespace default. Pod Workload CSI memvalidasi
bahwa Driver CSI vSphere diinstal dan dapat melakukan penyediaan volume
dinamis. Jika Pod ini tidak dimulai, pemeriksaan validasi Workload CSI
akan gagal.
Ada beberapa masalah umum yang dapat mencegah Pod ini dimulai:
Jika Pod tidak memiliki batas resource yang ditentukan, seperti yang terjadi
untuk beberapa cluster dengan webhook keanggotaan yang diinstal, Pod tidak akan dimulai.
Jika Cloud Service Mesh diinstal di cluster dengan
injeksi sidecar Istio otomatis diaktifkan di namespace
default, Pod Workload CSI tidak akan dimulai.
Jika Pod Workload CSI tidak dimulai, Anda akan melihat error waktu tunggu seperti
berikut selama validasi pra-penerbangan:
Untuk melihat apakah kegagalan disebabkan oleh kurangnya resource Pod yang ditetapkan, jalankan perintah berikut untuk memeriksa status tugas anthos-csi-workload-writer-<run-id>:
Jika Pod Workload CSI tidak dimulai karena injeksi sidecar Istio,
Anda dapat menonaktifkan injeksi sidecar Istio otomatis untuk sementara di
namespace default. Periksa label namespace dan gunakan
perintah berikut untuk menghapus label yang dimulai dengan istio.io/rev:
kubectllabelnamespacedefaultistio.io/rev-
Jika Pod salah dikonfigurasi, verifikasi secara manual bahwa penyediaan volume dinamis dengan Driver CSI vSphere berfungsi:
Buat PVC yang menggunakan StorageClass standard-rwo.
Buat Pod yang menggunakan PVC.
Pastikan Pod dapat membaca/menulis data ke volume.
Hapus Pod dan PVC setelah Anda memverifikasi operasi yang tepat.
Jika penyediaan volume dinamis dengan Driver CSI vSphere berfungsi, jalankan
gkectl diagnose atau gkectl upgrade
dengan flag --skip-validation-csi-workload untuk melewati pemeriksaan Workload CSI.
Operasi
1.16.0-1.16.2
Waktu tunggu update cluster pengguna habis saat versi cluster admin adalah 1.15
Saat Anda login ke
workstation admin yang dikelola pengguna, perintah gkectl update cluster
mungkin kehabisan waktu tunggu dan gagal memperbarui cluster pengguna. Hal ini terjadi jika
versi cluster admin adalah 1.15 dan Anda menjalankan gkectl update admin
sebelum menjalankan gkectl update cluster.
Saat kegagalan ini terjadi, Anda akan melihat error berikut saat mencoba mengupdate cluster:
Preflight check failed with failed to run server-side preflight checks: server-side preflight checks failed: timed out waiting for the condition
Preflight check failed with failed to run server-side preflight checks: server-side preflight checks failed: timed out waiting for the condition
Selama update cluster admin 1.15, validation-controller
yang memicu pemeriksaan pra-penerbangan akan dihapus dari cluster. Jika Anda kemudian
mencoba mengupdate cluster pengguna, pemeriksaan pra-penerbangan akan berhenti berfungsi hingga
waktu tunggu tercapai.
Solusi:
Jalankan perintah berikut untuk men-deploy ulang validation-controller:
Setelah persiapan selesai, jalankan gkectl update cluster lagi untuk mengupdate cluster pengguna
Operasi
1.16.0-1.16.2
Waktu tunggu pembuatan cluster pengguna habis saat versi cluster admin adalah 1.15
Saat Anda login ke
workstation admin yang dikelola pengguna, perintah gkectl create cluster mungkin kehabisan waktu tunggu dan gagal membuat cluster pengguna. Hal ini terjadi jika
versi cluster admin adalah 1.15.
Saat kegagalan ini terjadi, Anda akan melihat error berikut saat mencoba membuat cluster:
Preflight check failed with failed to run server-side preflight checks: server-side preflight checks failed: timed out waiting for the condition
Preflight check failed with failed to run server-side preflight checks: server-side preflight checks failed: timed out waiting for the condition
Karena validation-controller ditambahkan di 1.16, saat menggunakan
cluster admin 1.15, validation-controller yang bertanggung jawab untuk memicu pemeriksaan pra-penerbangan tidak ada. Oleh karena itu, saat mencoba membuat cluster pengguna, pemeriksaan pra-penerbangan akan berhenti berfungsi hingga waktu tunggu tercapai.
Solusi:
Jalankan perintah berikut untuk men-deploy validation-controller:
Setelah persiapan selesai, jalankan gkectl create cluster lagi untuk membuat cluster pengguna
Upgrade, Update
1.16.0-1.16.2
Update atau upgrade cluster admin gagal jika project atau lokasi layanan add-on tidak cocok satu sama lain
Saat Anda mengupgrade cluster admin dari versi 1.15.x ke 1.16.x, atau menambahkan konfigurasi connect, stackdriver, cloudAuditLogging, atau gkeOnPremAPI saat Anda mengupdate cluster admin, operasi tersebut mungkin ditolak oleh webhook cluster admin. Salah satu pesan error berikut mungkin ditampilkan:
"projects for connect, stackdriver and cloudAuditLogging must be the
same when specified during cluster creation."
"locations for connect, gkeOnPremAPI, stackdriver and
cloudAuditLogging must be in the same region when specified during
cluster creation."
"locations for stackdriver and cloudAuditLogging must be the same
when specified during cluster creation."
Update atau upgrade cluster admin memerlukan
onprem-admin-cluster-controller untuk merekonsiliasi cluster admin
dalam cluster jenis. Saat status cluster admin dipulihkan di
cluster jenis, webhook cluster admin tidak dapat membedakan apakah
objek OnPremAdminCluster ditujukan untuk pembuatan cluster admin,
atau untuk melanjutkan operasi untuk update atau upgrade. Beberapa validasi khusus pembuatan
dipanggil saat memperbarui dan mengupgrade secara tidak terduga.
Solusi:
Tambahkan anotasi
onprem.cluster.gke.io/skip-project-location-sameness-validation: true
ke objek OnPremAdminCluster:
ADMIN_CLUSTER_KUBECONFIG: jalur
file kubeconfig cluster admin.
Tambahkan anotasi onprem.cluster.gke.io/skip-project-location-sameness-validation: true dan simpan resource kustom.
Bergantung pada jenis cluster admin, selesaikan salah satu langkah berikut:
Untuk cluster admin non-HA dengan file checkpoint: tambahkan parameter disable-update-from-checkpoint dalam perintah update, atau tambahkan parameter `disable-upgrade-from-checkpoint` dalam perintah upgrade. Parameter
ini hanya diperlukan untuk saat berikutnya Anda menjalankan
perintah update atau upgrade:
Untuk cluster admin HA atau file checkpoint dinonaktifkan:
update atau upgrade cluster admin seperti biasa. Tidak diperlukan parameter tambahan pada perintah update atau upgrade.
Operasi
1.16.0-1.16.2
Penghapusan cluster pengguna gagal saat menggunakan workstation admin yang dikelola pengguna
Saat Anda login ke
workstation admin yang dikelola pengguna, perintah gkectl delete cluster mungkin kehabisan waktu tunggu dan gagal menghapus cluster pengguna. Hal ini terjadi jika
Anda telah menjalankan gkectl terlebih dahulu di workstation yang dikelola pengguna untuk
membuat, mengupdate, atau mengupgrade cluster pengguna. Saat kegagalan ini terjadi,
Anda akan melihat error berikut saat mencoba menghapus cluster:
failed to wait for user cluster management namespace "USER_CLUSTER_NAME-gke-onprem-mgmt"
to be deleted: timed out waiting for the condition
Selama penghapusan, cluster akan menghapus semua objeknya terlebih dahulu. Penghapusan objek Validasi (yang dibuat selama pembuatan, pembaruan, atau upgrade) macet di fase penghapusan. Hal ini terjadi
karena finalizer memblokir penghapusan objek, yang menyebabkan
penghapusan cluster gagal.
Solusi:
Dapatkan nama semua objek Validasi:
kubectl --kubeconfig ADMIN_KUBECONFIG get validations \
-n USER_CLUSTER_NAME-gke-onprem-mgmt
Untuk setiap objek Validasi, jalankan perintah berikut untuk menghapus
pengakhir dari objek Validasi:
Setelah menghapus pengakhir dari semua objek Validasi, objek tersebut akan dihapus dan operasi penghapusan cluster pengguna akan selesai secara otomatis. Anda tidak perlu melakukan tindakan tambahan.
Jaringan
1.15, 1.16
Traffic gateway NAT keluar ke server eksternal gagal
Jika Pod sumber dan Pod gateway NAT keluar berada di dua node pekerja yang berbeda, traffic dari Pod sumber tidak dapat menjangkau layanan eksternal apa pun. Jika Pod berada di host yang sama, koneksi ke
layanan atau aplikasi eksternal akan berhasil.
Masalah ini disebabkan oleh vSphere yang menghapus paket VXLAN saat agregasi
tunnel diaktifkan. Ada masalah umum pada NSX dan VMware yang
hanya mengirim traffic gabungan di port VXLAN yang diketahui (4789).
Solusi:
Ubah port VXLAN yang digunakan oleh Cilium menjadi 4789:
Solusi ini akan dikembalikan setiap kali cluster diupgrade. Anda harus
mengonfigurasi ulang setelah setiap upgrade. VMware harus menyelesaikan masalahnya di vSphere
untuk perbaikan permanen.
Penyimpanan
1.11-1.16
Error disk dan kegagalan lampiran saat menggunakan Change Block Tracking
(CBT)
Google Distributed Cloud tidak mendukung Pelacakan Blok yang Berubah (CBT) di
disk. Beberapa software pencadangan menggunakan fitur CBT untuk melacak status disk dan
melakukan pencadangan, yang menyebabkan disk tidak dapat terhubung ke VM
yang menjalankan Google Distributed Cloud. Untuk mengetahui informasi selengkapnya, lihat
artikel Pusat Informasi
VMware.
Solusi:
Jangan mencadangkan VM Google Distributed Cloud, karena software pencadangan pihak ketiga
dapat menyebabkan CBT diaktifkan di disknya. Anda tidak perlu mencadangkan VM ini.
Jangan aktifkan CBT di node, karena perubahan ini tidak akan dipertahankan di seluruh update atau upgrade.
Jika Anda sudah memiliki disk dengan CBT yang diaktifkan, ikuti
langkah-langkah Penyelesaian dalam
artikel VMware KB untuk menonaktifkan CBT di Disk Kelas Satu.
Penyimpanan
1.14, 1.15, 1.16
Kerusakan data pada NFSv3 saat penambahan paralel ke file bersama
dilakukan dari beberapa host
Jika menggunakan array penyimpanan Nutanix untuk menyediakan share NFSv3 ke
host, Anda mungkin mengalami kerusakan data atau ketidakmampuan Pod untuk
berjalan dengan sukses. Masalah ini disebabkan oleh masalah kompatibilitas yang diketahui
antara versi VMware dan Nutanix tertentu. Untuk mengetahui informasi
selengkapnya, lihat
artikel VMware KB
terkait.
Solusi:
Artikel Pusat Informasi (KB) VMware sudah tidak berlaku karena menyatakan bahwa tidak ada
resolusi saat ini. Untuk mengatasi masalah ini, update ke versi terbaru
ESXi di host dan ke versi Nutanix terbaru di array
penyimpanan Anda.
Sistem operasi
1.13.10, 1.14.6, 1.15.3
Ketidakcocokan versi antara kubelet dan panel kontrol Kubernetes
Untuk rilis Google Distributed Cloud tertentu, kubelet yang berjalan di node menggunakan versi yang berbeda dengan panel kontrol Kubernetes. Ada
ketidakcocokan karena biner kubelet yang dimuat sebelumnya di image OS menggunakan
versi yang berbeda.
Tabel berikut mencantumkan ketidakcocokan versi yang diidentifikasi:
Versi Google Distributed Cloud
versi kubelet
Versi Kubernetes
1.13.10
v1.24.11-gke.1200
v1.24.14-gke.2100
1.14.6
v1.25.8-gke.1500
v1.25.10-gke.1200
1.15.3
v1.26.2-gke.1001
v1.26.5-gke.2100
Solusi:
Anda tidak perlu melakukan apa pun. Inkonsistensi hanya terjadi antara versi patch Kubernetes dan tidak ada masalah yang disebabkan oleh penyimpangan versi ini.
Operasi
1.13, 1.14.0-1.14.8, 1.15.0-1.15.4, 1.16.0-1.16.1
Penghapusan cluster Controlplane V2 non-HA macet hingga waktu tunggu habis
Saat dihapus, cluster Controlplane V2 non-HA akan macet pada penghapusan node hingga waktu tunggu habis.
Solusi:
Jika cluster berisi StatefulSet dengan data penting, hubungi
hubungi Cloud Customer Care untuk
menyelesaikan masalah ini.
Jika tidak, lakukan langkah-langkah berikut:
Hapus semua VM cluster dari vSphere. Anda dapat menghapus VM melalui UI vSphere, atau menjalankan perintah berikut:
Tugas attachvolume CNS yang konstan muncul setiap menit untuk PVC/PV dalam hierarki
setelah mengupgrade ke versi 1.15+
Jika cluster berisi volume persisten vSphere dalam hierarki (misalnya, PVC yang dibuat dengan StorageClass standard), Anda akan mengamati tugas com.vmware.cns.tasks.attachvolume yang dipicu setiap menit dari vCenter.
Solusi:
Edit configMap fitur vSphere CSI dan tetapkan list-volumes ke false:
Jika cluster berisi volume persisten vSphere intree, perintah
gkectl diagnose dan gkectl upgrade dapat memunculkan
peringatan palsu terhadap persistent volume claim (PVC) saat
memvalidasi setelan penyimpanan cluster. Pesan peringatan akan terlihat seperti
berikut
Rotasi kunci akun layanan gagal saat masa berlaku beberapa kunci berakhir
Jika cluster Anda tidak menggunakan registry pribadi, dan kunci akun layanan akses komponen Anda serta kunci akun layanan Logging-monitoring (atau Connect-register) telah berakhir masa berlakunya, saat Anda memutar kunci akun layanan, gkectl update credentials akan gagal dengan error yang mirip dengan berikut:
Pertama, rotasi kunci akun layanan akses komponen. Meskipun
pesan error yang sama ditampilkan, Anda akan dapat memutar kunci
lainnya setelah rotasi kunci akun layanan akses komponen.
1.15 Mesin master pengguna mengalami pembuatan ulang yang tidak terduga saat pengontrol cluster pengguna diupgrade ke 1.16
Selama upgrade cluster pengguna, setelah pengontrol cluster pengguna diupgrade ke 1.16, jika Anda memiliki cluster pengguna 1.15 lainnya yang dikelola oleh cluster admin yang sama, mesin master penggunanya mungkin dibuat ulang secara tidak terduga.
Ada bug di pengontrol cluster pengguna 1.16 yang dapat memicu pembuatan ulang mesin master pengguna 1.15.
Solusi yang Anda lakukan bergantung pada cara Anda mengalami masalah ini.
Solusi saat mengupgrade cluster pengguna menggunakan konsol Google Cloud:
Opsi 1: Gunakan GKE versi 1.16.6+ di VMware dengan perbaikan.
Opsi 2: Lakukan langkah-langkah berikut:
Tambahkan anotasi jalankan ulang secara manual dengan perintah berikut:
Pantau progres upgrade dengan memeriksa kolom status OnPremUserCluster.
Solusi saat mengupgrade cluster pengguna menggunakan workstation admin Anda sendiri:
Opsi 1: Gunakan GKE versi 1.16.6+ di VMware dengan perbaikan.
Opsi 2: Lakukan langkah-langkah berikut:
Tambahkan file info build /etc/cloud/build.info dengan konten berikut. Hal ini menyebabkan pemeriksaan pra-penerbangan berjalan secara lokal di workstation admin Anda, bukan di server.
gke_on_prem_version:GKE_ON_PREM_VERSION
Misalnya:
gke_on_prem_version:1.16.0-gke.669
Jalankan kembali perintah upgrade.
Setelah upgrade selesai, hapus file build.info.
Buat
1.16.0-1.16.5, 1.28.0-1.28.100
Pemeriksaan pra-penerbangan gagal jika nama host tidak ada dalam file blok IP.
Selama pembuatan cluster, jika Anda tidak menentukan nama host untuk setiap alamat IP dalam file blok IP, pemeriksaan pra-penerbangan akan gagal dengan pesan error berikut:
Ada bug dalam pemeriksaan pra-penerbangan yang menganggap nama host kosong sebagai duplikat.
Solusi:
Opsi 1: Gunakan versi dengan perbaikan.
Opsi 2: Abaikan pemeriksaan pra-penerbangan ini dengan menambahkan tanda --skip-validation-net-config.
Opsi 3: Tentukan nama host unik untuk setiap alamat IP dalam file blok IP.
Upgrade, Update
1.16
Kegagalan pemasangan volume saat mengupgrade/memperbarui cluster admin jika menggunakan cluster admin non-HA dan cluster pengguna bidang kontrol v1
Untuk cluster admin non-HA dan cluster pengguna bidang kontrol v1, saat Anda mengupgrade atau mengupdate cluster admin, pembuatan ulang mesin master cluster admin mungkin terjadi bersamaan dengan mulai ulang mesin master cluster pengguna, yang dapat memunculkan kondisi perlombaan.
Hal ini menyebabkan Pod bidang kontrol cluster pengguna tidak dapat berkomunikasi dengan bidang kontrol cluster admin, yang menyebabkan masalah pemasangan volume untuk kube-etcd dan kube-apiserver di bidang kontrol cluster pengguna.
Untuk memverifikasi masalah, jalankan perintah berikut untuk pod yang terpengaruh:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedMount 101s kubelet Unable to attach or mount volumes: unmounted volumes=[kube-audit], unattached volumes=[], failed to process volumes=[]: timed out waiting for the condition
Warning FailedMount 86s (x2 over 3m28s) kubelet MountVolume.SetUp failed for volume "pvc-77cd0635-57c2-4392-b191-463a45c503cb" : rpc error: code = FailedPrecondition desc = volume ID: "bd313c62-d29b-4ecd-aeda-216648b0f7dc" does not appear staged to "/var/lib/kubelet/plugins/kubernetes.io/csi/csi.vsphere.vmware.com/92435c96eca83817e70ceb8ab994707257059734826fedf0c0228db6a1929024/globalmount"
Solusi:
SSH ke node bidang kontrol pengguna, karena merupakan cluster pengguna bidang kontrol v1, node bidang kontrol pengguna berada di cluster admin.
Mulai ulang kubelet menggunakan perintah berikut:
sudosystemctlrestartkubelet
Setelah dimulai ulang, kubelet dapat merekonstruksi pemasangan global tahap dengan benar.
Upgrade, Update
1.16.0
Node bidang kontrol gagal dibuat
Selama upgrade atau update cluster admin, kondisi perlombaan dapat
menyebabkan pengelola pengontrol cloud vSphere menghapus node
control plane baru secara tidak terduga. Hal ini menyebabkan clusterapi-controller macet
menunggu node dibuat, dan pada akhirnya waktu upgrade/update
habis. Dalam hal ini, output perintah upgrade/update gkectl mirip dengan berikut:
controlplane'default/gke-admin-hfzdg'isnotready:condition"Ready":conditionisnotreadywithreason"MachineInitializing",message"Wait for the control plane machine "gke-admin-hfzdg-6598459f9zb647c8-0\"toberebooted"...
Untuk mengidentifikasi gejalanya, jalankan perintah di bawah untuk mendapatkan log di vSphere cloud controller manager di cluster admin:
Nama host duplikat di pusat data yang sama menyebabkan kegagalan upgrade atau pembuatan cluster
Mengupgrade cluster 1.15 atau membuat cluster 1.16 dengan IP statis akan gagal jika ada nama host
duplikat di pusat data yang sama. Kegagalan ini terjadi karena
pengelola pengontrol cloud vSphere gagal menambahkan IP eksternal dan ID
penyedia di objek node. Hal ini menyebabkan waktu tunggu upgrade/pembuatan cluster habis.
Untuk mengidentifikasi masalah, dapatkan log pod pengelola pengontrol cloud vSphere untuk cluster. Perintah yang Anda gunakan bergantung pada jenis cluster,
sebagai berikut:
Perbarui nama host mesin yang terpengaruh di user-ip-block.yaml menjadi nama unik.
Jalankan ulang gkectl create cluster.
Operasi
1.16.0, 1.16.1, 1.16.2, 1.16.3
$ dan ` tidak didukung dalam nama pengguna atau sandi vSphere
Operasi berikut akan gagal jika nama pengguna atau sandi vSphere
berisi $ atau `:
Mengupgrade cluster pengguna 1.15 dengan Controlplane V2 yang diaktifkan ke 1.16
Mengupgrade cluster admin ketersediaan tinggi (HA) 1.15 ke 1.16
Membuat cluster pengguna 1.16 dengan Controlplane V2 yang diaktifkan
Membuat cluster admin HA 1.16
Gunakan Google Distributed Cloud versi 1.16.4+ dengan perbaikan atau lakukan solusi di bawah. Solusi yang Anda lakukan bergantung pada operasi yang gagal.
Solusi untuk upgrade:
Ubah nama pengguna atau sandi vCenter di sisi vCenter untuk menghapus
$ dan `.
Kegagalan pembuatan PVC setelah node dibuat ulang dengan nama yang sama
Setelah node dihapus, lalu dibuat ulang dengan nama node yang sama,
ada kemungkinan kecil bahwa pembuatan PersistentVolumeClaim (PVC)
berikutnya akan gagal dengan error seperti berikut:
Jika menggunakan Seesaw sebagai jenis load balancer untuk cluster dan melihat bahwa VM Seesaw tidak aktif atau terus gagal melakukan booting, Anda mungkin melihat pesan error berikut di konsol vSphere:
Error ini menunjukkan bahwa ruang disk di VM rendah karena fluent-bit
yang berjalan di VM Seesaw tidak dikonfigurasi dengan rotasi log yang benar.
Solusi:
Temukan file log yang menggunakan sebagian besar ruang disk menggunakan du -sh -- /var/lib/docker/containers/* | sort -rh. Bersihkan file log dengan ukuran terbesar dan mulai ulang VM.
Catatan: Jika VM benar-benar tidak dapat diakses, pasang disk ke VM yang berfungsi (misalnya, workstation admin), hapus file dari disk yang terpasang, lalu pasang kembali disk ke VM Seesaw asli.
Untuk mencegah masalah ini terjadi lagi, hubungkan ke VM dan ubah file /etc/systemd/system/docker.fluent-bit.service. Tambahkan --log-opt max-size=10m --log-opt max-file=5 dalam perintah Docker, lalu jalankan systemctl restart docker.fluent-bit.service
Operasi
1.13, 1.14.0-1.14.6, 1.15
Error kunci publik SSH admin setelah upgrade atau update cluster admin
Saat Anda mencoba mengupgrade (gkectl upgrade admin) atau mengupdate (gkectl update admin) cluster admin non-High-Availability dengan checkpoint diaktifkan, upgrade atau update mungkin gagal dengan error seperti berikut:
Jika Anda tidak dapat mengupgrade ke versi patch Google Distributed Cloud dengan perbaikan ini,
hubungi Dukungan Google untuk mendapatkan bantuan.
Upgrade
1.13.0-1.13.9, 1.14.0-1.14.6, 1.15.1-1.15.2
Mengupgrade cluster admin yang terdaftar di GKE On-Prem API dapat gagal
Jika cluster admin terdaftar di GKE On-Prem API, mengupgrade
cluster admin ke versi yang terpengaruh dapat gagal karena keanggotaan fleet
tidak dapat diperbarui. Saat kegagalan ini terjadi, Anda akan melihat error berikut saat mencoba mengupgrade cluster:
dan lanjutkan
upgrade cluster admin. Anda mungkin melihat error `gagal mendaftarkan cluster` yang sudah tidak berlaku untuk sementara. Setelah beberapa saat, status akan diperbarui
secara otomatis.
Upgrade, Update
1.13.0-1.13.9, 1.14.0-1.14.4, 1.15.0
Anotasi link resource cluster admin terdaftar tidak dipertahankan
Saat cluster admin terdaftar di GKE On-Prem API, anotasi link resource-nya diterapkan ke resource kustom OnPremAdminCluster, yang tidak dipertahankan selama update cluster admin berikutnya karena kunci anotasi yang salah digunakan. Hal ini dapat menyebabkan cluster admin didaftarkan lagi di GKE On-Prem API secara tidak sengaja.
Status OnPremAdminCluster tidak konsisten antara checkpoint dan CR sebenarnya
Kondisi perlombaan tertentu dapat menyebabkan status OnPremAdminCluster tidak konsisten antara checkpoint dan CR sebenarnya. Saat masalah ini terjadi, Anda mungkin mengalami error berikut saat mengupdate cluster admin setelah mengupgradenya:
Untuk mengatasi masalah ini, Anda harus mengedit checkpoint atau menonaktifkan checkpoint untuk upgrade/update. Hubungi tim dukungan kami untuk melanjutkan solusinya.
Operasi
1.13.0-1.13.9, 1.14.0-1.14.5, 1.15.0-1.15.1
Proses rekonsiliasi mengubah sertifikat admin di cluster admin
Google Distributed Cloud mengubah sertifikat admin di bidang kontrol cluster admin dengan setiap proses rekonsiliasi, seperti selama upgrade cluster. Perilaku ini
meningkatkan kemungkinan mendapatkan sertifikat yang tidak valid untuk cluster admin Anda,
terutama untuk cluster versi 1.15.
Jika terpengaruh oleh masalah ini, Anda mungkin mengalami masalah seperti
berikut:
Sertifikat yang tidak valid dapat menyebabkan waktu tunggu perintah berikut habis dan
menampilkan error:
gkectl create admin
gkectl upgrade amdin
gkectl update admin
Perintah ini dapat menampilkan error otorisasi seperti berikut:
Upgrade ke versi Google Distributed Cloud dengan perbaikan:
1.13.10+, 1.14.6+, 1.15.2+.
Jika Anda tidak dapat melakukan upgrade, hubungi Cloud Customer Care untuk menyelesaikan masalah ini.
Jaringan, Operasi
1.10, 1.11, 1.12, 1.13, 1.14
Komponen Anthos Network Gateway dihapus atau tertunda karena tidak ada
class prioritas
Pod gateway jaringan di kube-system mungkin menampilkan status
Pending atau Evicted, seperti yang ditunjukkan dalam contoh output ringkas
berikut:
Error ini menunjukkan peristiwa pengusiran atau ketidakmampuan untuk menjadwalkan Pod
karena resource node. Karena tidak memiliki PriorityClass, Pod Anthos Network Gateway memiliki prioritas default yang sama dengan workload lainnya.
Jika node kekurangan resource, Pod gateway jaringan mungkin
dihapus. Perilaku ini sangat buruk untuk DaemonSet
ang-node, karena Pod tersebut harus dijadwalkan di node tertentu dan tidak dapat
bermigrasi.
Solusi:
Upgrade ke 1.15 atau yang lebih baru.
Sebagai perbaikan jangka pendek, Anda dapat menetapkan
PriorityClass
secara manual ke komponen Anthos Network Gateway. Pengontrol Google Distributed Cloud
menimpa perubahan manual ini selama proses rekonsiliasi, seperti
selama upgrade cluster.
Tetapkan PriorityClass system-cluster-critical ke Deployment pengontrol cluster ang-controller-manager dan autoscaler.
Tetapkan PriorityClass system-node-critical ke DaemonSet node ang-daemon.
Upgrade, Update
1.12, 1.13, 1.14, 1.15.0-1.15.2
upgrade cluster admin gagal setelah mendaftarkan cluster dengan gcloud
Setelah menggunakan gcloud untuk mendaftarkan cluster admin dengan bagian gkeConnect yang tidak kosong, Anda mungkin melihat error berikut saat mencoba mengupgrade cluster:
gkectl diagnose snapshot --log-since gagal membatasi periode waktu untuk
perintah journalctl yang berjalan di node cluster
Hal ini tidak memengaruhi fungsi pengambilan snapshot
cluster, karena snapshot masih menyertakan semua log yang dikumpulkan secara
default dengan menjalankan journalctl di node cluster. Oleh karena itu,
tidak ada informasi proses debug yang terlewat.
Penginstalan, Upgrade, Update
1.9+, 1.10+, 1.11+, 1.12+
gkectl prepare windows gagal
gkectl prepare windows gagal menginstal Docker di
Google Distributed Cloud versi sebelum 1.13 karena
MicrosoftDockerProvider
tidak digunakan lagi.
Solusi:
Ide umum untuk mengatasi masalah ini adalah mengupgrade ke Google Distributed Cloud 1.13 dan menggunakan gkectl 1.13 untuk membuat template VM Windows, lalu membuat node pool Windows. Ada dua opsi untuk membuka Google Distributed Cloud 1.13 dari versi saat ini seperti yang ditunjukkan di bawah.
Catatan: Kami memiliki opsi untuk mengatasi masalah ini di versi saat ini
tanpa perlu mengupgrade ke versi 1.13, tetapi akan memerlukan lebih banyak langkah
manual. Hubungi tim dukungan kami jika Anda ingin mempertimbangkan
opsi ini.
Opsi 1: Upgrade Blue/Green
Anda dapat membuat cluster baru menggunakan versi Google Distributed Cloud 1.13+ dengan node pool Windows, dan memigrasikan workload ke cluster baru, lalu menghapus cluster saat ini. Sebaiknya gunakan versi minor Google Distributed Cloud terbaru.
Catatan: Tindakan ini akan memerlukan resource tambahan untuk menyediakan cluster baru, tetapi
periode nonaktif dan gangguan untuk workload yang ada akan berkurang.
Opsi 2: Hapus kumpulan node Windows dan tambahkan kembali saat
mengupgrade ke Google Distributed Cloud 1.13
Catatan: Untuk opsi ini, workload Windows tidak akan dapat berjalan hingga
cluster diupgrade ke 1.13 dan node pool Windows ditambahkan kembali.
Hapus node pool Windows yang ada dengan menghapus konfigurasi node pool Windows dari file user-cluster.yaml, lalu jalankan perintah:
Upgrade cluster admin+pengguna khusus Linux ke 1.12 dengan mengikuti
panduan pengguna upgrade untuk versi minor target yang sesuai.
(Pastikan untuk melakukan langkah ini sebelum mengupgrade ke 1.13) Pastikan enableWindowsDataplaneV2: true dikonfigurasi di CR OnPremUserCluster. Jika tidak, cluster akan terus menggunakan node pool Docker untuk Windows, yang tidak akan kompatibel dengan template VM Windows 1.13 yang baru dibuat dan tidak menginstal Docker. Jika tidak dikonfigurasi atau disetel ke salah (false), update cluster Anda untuk menyetelnya ke benar (true) di user-cluster.yaml, lalu jalankan:
Konfigurasi RootDistanceMaxSec tidak berlaku untuk node ubuntu
Nilai default 5 detik untuk RootDistanceMaxSec akan
digunakan di node, bukan 20 detik yang seharusnya merupakan konfigurasi
yang diharapkan. Jika memeriksa log startup node dengan SSH ke VM,
yang terletak di `/var/log/startup.log`, Anda dapat menemukan error
berikut:
Jika memeriksa log gkectl, Anda mungkin melihat bahwa beberapa
perubahan mencakup setelan osImageType dari string kosong menjadi
ubuntu_containerd.
Error update ini disebabkan oleh pengisian ulang kolom osImageType yang tidak tepat di konfigurasi cluster admin sejak diperkenalkan di versi 1.9.
Solusi:
Upgrade ke versi Google Distributed Cloud dengan perbaikan. Jika upgrade tidak memungkinkan bagi Anda, hubungi Cloud Customer Care untuk menyelesaikan masalah ini.
Pemasangan, Keamanan
1.13, 1.14, 1.15, 1.16
SNI tidak berfungsi di cluster pengguna dengan Controlplane V2
Kemampuan untuk memberikan sertifikat penayangan tambahan untuk
server Kubernetes API dari cluster pengguna dengan
authentication.sni tidak berfungsi saat Controlplane V2
diaktifkan (enableControlplaneV2: true).
Solusi:
Sampai patch Google Distributed Cloud tersedia dengan perbaikan, jika Anda
perlu menggunakan SNI, nonaktifkan Controlplane V2 (enableControlplaneV2: false).
$ di nama pengguna registry pribadi menyebabkan kegagalan startup mesin bidang kontrol admin
Mesin panel kontrol admin gagal dimulai saat nama pengguna registry pribadi berisi $.
Saat memeriksa /var/log/startup.log di mesin bidang kontrol admin, Anda akan melihat error berikut:
Hindari rotasi kunci penandatanganan KSA lain hingga cluster diupgrade ke versi dengan perbaikan.
Operasi
1.13.1+, 1.14, 1., 1.16
Server virtual F5 BIG-IP tidak dibersihkan saat Terraform menghapus cluster pengguna
Saat Anda menggunakan Terraform untuk menghapus cluster pengguna dengan load
balancer F5 BIG-IP, server virtual F5 BIG-IP tidak akan dihapus setelah penghapusan
cluster.
cluster kind mengambil image container dari docker.io
Jika Anda membuat cluster admin versi 1.13.8 atau versi 1.14.4, atau
mengupgrade cluster admin ke versi 1.13.8 atau 1.14.4, cluster kind akan menarik
gambar penampung berikut dari docker.io:
docker.io/kindest/kindnetd
docker.io/kindest/local-path-provisioner
docker.io/kindest/local-path-helper
Jika docker.io tidak dapat diakses dari workstation admin, pembuatan atau upgrade cluster admin akan gagal menampilkan cluster jenis.
Menjalankan perintah berikut di workstation admin akan menampilkan
container yang sesuai yang tertunda dengan ErrImagePull:
Image container ini harus dimuat sebelumnya di image container cluster kind. Namun, kind v0.18.0 memiliki
masalah dengan image container yang dimuat sebelumnya,
yang menyebabkan image tersebut diambil dari internet secara tidak sengaja.
Solusi:
Jalankan perintah berikut di workstation admin, saat cluster admin Anda menunggu pembuatan atau upgrade:
Failover yang gagal di cluster pengguna dan cluster admin Controlplane V2 HA saat jaringan memfilter permintaan GARP duplikat
Jika VM cluster Anda terhubung dengan tombol yang memfilter permintaan GARP (ARP gratis) duplikat, pemilihan pemimpin keepalived mungkin mengalami kondisi perlombaan, yang menyebabkan beberapa node memiliki entri tabel ARP yang salah.
Node yang terpengaruh dapat ping VIP bidang kontrol, tetapi waktu tunggu koneksi TCP ke VIP bidang kontrol akan habis.
Solusi:
Jalankan perintah berikut di setiap node bidang kontrol cluster yang terpengaruh:
vsphere-csi-controller perlu dimulai ulang setelah rotasi sertifikat vCenter
vsphere-csi-controller harus memuat ulang secret vCenter setelah rotasi sertifikat vCenter. Namun, sistem saat ini tidak memulai ulang pod vsphere-csi-controller dengan benar, sehingga menyebabkan vsphere-csi-controller error setelah rotasi.
Solusi:
Untuk cluster yang dibuat pada versi 1.13 dan yang lebih baru, ikuti petunjuk di bawah untuk memulai ulang vsphere-csi-controller
Meskipun
pendaftaran cluster gagal selama pembuatan cluster admin, perintah gkectl create admin tidak gagal karena error dan mungkin berhasil. Dengan kata lain, pembuatan cluster admin dapat "berhasil" tanpa didaftarkan ke fleet.
Untuk mengidentifikasi gejalanya, Anda dapat mencari pesan error berikut di log `gkectl create admin`,
Failed to register admin cluster
Anda juga dapat memeriksa apakah Anda dapat menemukan cluster di antara cluster terdaftar di cloud console.
Solusi:
Untuk cluster yang dibuat pada versi 1.12 dan yang lebih baru, ikuti petunjuk untuk mencoba lagi pendaftaran cluster admin setelah pembuatan cluster. Untuk cluster yang dibuat pada versi sebelumnya,
Tambahkan pasangan nilai kunci palsu seperti "foo: bar" ke file kunci SA connect-register
Pendaftaran ulang cluster admin mungkin dilewati selama upgrade cluster admin
Selama upgrade cluster admin, jika waktu tunggu upgrade node panel kontrol pengguna habis, cluster admin tidak akan didaftarkan ulang dengan versi agen koneksi yang diupdate.
Solusi:
Periksa apakah cluster ditampilkan di antara cluster terdaftar.
Sebagai langkah opsional, Login ke cluster setelah menyiapkan autentikasi. Jika cluster masih terdaftar, Anda dapat melewati petunjuk berikut untuk mencoba kembali pendaftaran.
Untuk cluster yang diupgrade ke versi 1.12 dan yang lebih baru, ikuti petunjuk untuk mencoba lagi pendaftaran cluster admin setelah pembuatan cluster. Untuk cluster yang diupgrade ke versi sebelumnya,
Tambahkan pasangan nilai kunci palsu seperti "foo: bar" ke file kunci SA connect-register
Volume vSphere dalam hierarki yang dimigrasikan menggunakan sistem file Windows tidak dapat digunakan dengan driver CSI vSphere
Dalam kondisi tertentu, disk dapat dilampirkan sebagai hanya baca ke node
Windows. Hal ini menyebabkan volume yang sesuai menjadi hanya baca di dalam Pod.
Masalah ini lebih cenderung terjadi saat kumpulan node baru menggantikan kumpulan node lama (misalnya, upgrade cluster atau update node pool). Workload stateful yang sebelumnya berfungsi dengan baik mungkin tidak dapat menulis ke volumenya di kumpulan node baru.
Solusi:
Dapatkan UID Pod yang tidak dapat menulis ke volumenya:
Pod harus dijadwalkan ke node yang sama. Namun, jika Pod dijadwalkan ke node baru, Anda mungkin perlu mengulangi langkah-langkah sebelumnya di node baru.
Upgrade, Update
1.12, 1.13.0-1.13.7, 1.14.0-1.14.4
vsphere-csi-secret tidak diperbarui setelah gkectl update credentials vsphere --admin-cluster
Jika Anda memperbarui kredensial vSphere untuk cluster admin setelah
memperbarui kredensial cluster,
Anda mungkin menemukan vsphere-csi-secret di bawah namespace kube-system di cluster admin yang masih menggunakan kredensial lama.
audit-proxy mengalami crashloop saat mengaktifkan Cloud Audit Logs dengan gkectl update cluster
audit-proxy mungkin mengalami crashloop karena --cluster-name kosong.
Perilaku ini disebabkan oleh bug dalam logika update, dengan nama cluster tidak disebarkan ke
manifes pod / penampung audit-proxy.
Solusi:
Untuk cluster pengguna bidang kontrol v2 dengan enableControlplaneV2: true, hubungkan ke mesin bidang kontrol pengguna menggunakan SSH, dan update /etc/kubernetes/manifests/audit-proxy.yaml dengan --cluster_name=USER_CLUSTER_NAME.
Untuk cluster pengguna v1 bidang kontrol, edit penampung audit-proxy di statefulset kube-apiserver untuk menambahkan --cluster_name=USER_CLUSTER_NAME:
Deployment ulang bidang kontrol tambahan tepat setelah gkectl upgrade cluster
Tepat setelah gkectl upgrade cluster, pod panel kontrol mungkin di-deploy ulang.
Status cluster dari gkectl list clusters berubah dari RUNNING MENJADI RECONCILING.
Permintaan ke cluster pengguna mungkin kehabisan waktu tunggu.
Perilaku ini terjadi karena rotasi sertifikat bidang kontrol terjadi secara otomatis setelah
gkectl upgrade cluster.
Masalah ini hanya terjadi pada cluster pengguna yang TIDAK menggunakan bidang kontrol v2.
Solusi:
Tunggu hingga status cluster berubah kembali ke RUNNING lagi di gkectl list clusters, atau upgrade ke versi dengan perbaikan: 1.13.6+, 1.14.2+, atau 1.15+.
Upgrade, Update
1.12.7
Rilis yang buruk 1.12.7-gke.19 telah dihapus
Google Distributed Cloud 1.12.7-gke.19 adalah rilis yang buruk
dan Anda tidak boleh menggunakannya. Artefak telah dihapus
dari bucket Cloud Storage.
Solusi:
Sebagai gantinya, gunakan rilis 1.12.7-gke.20.
Upgrade, Update
1.12.0+, 1.13.0-1.13.7, 1.14.0-1.14.3
gke-connect-agent
terus menggunakan image lama setelah kredensial registry diperbarui
Jika Anda memperbarui kredensial registry menggunakan salah satu metode berikut:
gkectl update credentials componentaccess jika tidak menggunakan registry pribadi
gkectl update credentials privateregistry jika menggunakan registry pribadi
Anda mungkin mendapati gke-connect-agent terus menggunakan image
lama atau pod gke-connect-agent tidak dapat ditarik karena
ImagePullBackOff.
Masalah ini akan diperbaiki dalam rilis Google Distributed Cloud 1.13.8,
1.14.4, dan rilis berikutnya.
Solusi:
Opsi 1: Deploy ulang gke-connect-agent secara manual:
Saat Anda memvalidasi konfigurasi sebelum membuat cluster dengan Load Balancer manual dengan menjalankan gkectl check-config, perintah akan gagal dengan pesan error berikut.
Cluster yang menjalankan etcd versi 3.4.13 atau yang lebih lama mungkin mengalami kehabisan resource
watch dan resource watch yang tidak beroperasi, yang dapat menyebabkan
masalah berikut:
Penjadwalan pod terganggu
Node tidak dapat mendaftar
kubelet tidak mengamati perubahan pod
Masalah ini dapat membuat cluster tidak berfungsi.
Masalah ini telah diperbaiki dalam rilis Google Distributed Cloud 1.12.7, 1.13.6, 1.14.3, dan rilis berikutnya. Rilis yang lebih baru ini menggunakan etcd versi
3.4.21. Semua versi Google Distributed Cloud sebelumnya terpengaruh oleh masalah ini.
Solusi
Jika tidak dapat langsung mengupgrade, Anda dapat mengurangi risiko kegagalan cluster dengan mengurangi jumlah node dalam cluster. Hapus node hingga metrik etcd_network_client_grpc_sent_bytes_total kurang dari 300 MBps.
Luaskan Select a metric, masukkan Kubernetes Container
di panel filter, lalu gunakan submenu untuk memilih metrik:
Di menu Active resources, pilih Kubernetes Container.
Di menu Active metric categories, pilih Anthos.
Di menu Active metrics, pilih etcd_network_client_grpc_sent_bytes_total.
Klik Terapkan.
Upgrade, Update
1.10, 1.11, 1.12, 1.13, dan 1.14
Identity Service GKE dapat menyebabkan latensi bidang kontrol
Saat memulai ulang atau mengupgrade cluster, Identity Service GKE dapat
kewalahan dengan traffic yang terdiri dari token JWT yang sudah tidak berlaku dan diteruskan dari
kube-apiserver ke Identity Service GKE melalui
webhook autentikasi. Meskipun tidak mengalami crashloop, Layanan Identitas GKE menjadi tidak responsif dan berhenti menayangkan permintaan lebih lanjut.
Masalah ini pada akhirnya menyebabkan latensi bidang kontrol yang lebih tinggi.
Masalah ini telah diperbaiki dalam rilis Google Distributed Cloud berikut:
1.12.6+
1.13.6+
1.14.2+
Untuk menentukan apakah Anda terpengaruh oleh masalah ini, lakukan langkah-langkah berikut:
Periksa apakah endpoint Identity Service GKE dapat dijangkau secara eksternal:
Ganti CLUSTER_ENDPOINT
dengan VIP bidang kontrol dan port load balancer bidang kontrol untuk
cluster Anda (misalnya, 172.16.20.50:443).
Jika Anda terpengaruh oleh masalah ini, perintah akan menampilkan kode status 400. Jika waktu tunggu permintaan habis, mulai ulang Pod ais dan jalankan kembali perintah curl untuk melihat apakah tindakan tersebut dapat menyelesaikan masalah. Jika
Anda mendapatkan kode status 000, masalah telah teratasi dan
Anda sudah selesai. Jika Anda masih mendapatkan kode status 400, server HTTP Layanan Identitas GKE tidak akan dimulai. Dalam hal ini, lanjutkan.
Periksa log GKE Identity Service dan kube-apiserver:
Jika log kube-apiserver berisi entri seperti berikut, berarti Anda terpengaruh oleh masalah ini:
E081122:30:22.6560851webhook.go:127]Failedtomakewebhookauthenticatorrequest:errortryingtoreachservice:net/http:TLShandshaketimeout
E081122:30:22.6562661authentication.go:63]"Unable to authenticate the request"err="[invalid bearer token, error trying to reach service: net/http: TLS handshake timeout]"
Solusi
Jika tidak dapat langsung mengupgrade cluster untuk mendapatkan perbaikan, Anda dapat
mengidentifikasi dan memulai ulang pod yang melanggar sebagai solusi:
Tingkatkan tingkat kejelasan Identity Service GKE menjadi 9:
Untuk mendapatkan payload token yang terkait dengan setiap konteks token yang tidak valid,
urai setiap secret akun layanan terkait dengan perintah berikut:
Untuk mendekode token dan melihat nama dan namespace pod sumber, salin
token ke debugger di jwt.io.
Mulai ulang pod yang diidentifikasi dari token.
Operasi
1.9, 1.10, 1.11, 1.12, 1.13
Melewatkan health check pod bidang kontrol cluster pengguna
Pengontrol kesehatan cluster dan perintah gkectl diagnose cluster menjalankan serangkaian health check, termasuk health check pod di seluruh namespace. Namun, mereka mulai melewatkan pod bidang kontrol pengguna secara tidak sengaja. Jika Anda menggunakan mode bidang kontrol v2, hal ini tidak akan memengaruhi cluster Anda.
Solusi:
Hal ini tidak akan memengaruhi beban kerja atau pengelolaan cluster. Jika ingin memeriksa kondisi pod kontrol, Anda dapat menjalankan perintah berikut:
Hal ini karena file grup seesaw sudah ada. Selain itu, pemeriksaan pra-penerbangan
mencoba memvalidasi load balancer seesaw yang tidak ada.
Solusi:
Hapus file grup seesaw yang ada untuk cluster ini. Nama filenya adalah seesaw-for-gke-admin.yaml untuk cluster admin, dan seesaw-for-{CLUSTER_NAME}.yaml untuk cluster pengguna.
Jaringan
1,14
Waktu tunggu aplikasi habis karena kegagalan penyisipan tabel conntrack
Google Distributed Cloud versi 1.14 rentan terhadap kegagalan penyisipan tabel pelacakan koneksi (conntrack) netfilter saat menggunakan gambar sistem operasi Ubuntu atau COS. Kegagalan penyisipan menyebabkan waktu tunggu
aplikasi habis secara acak dan dapat terjadi meskipun tabel conntrack memiliki ruang
untuk entri baru. Kegagalan ini disebabkan oleh perubahan pada kernel 5.15 dan yang lebih tinggi yang membatasi penyisipan tabel berdasarkan panjang rantai.
Untuk melihat apakah Anda terpengaruh oleh masalah ini, Anda dapat memeriksa statistik sistem pelacakan koneksi dalam kernel di setiap node dengan perintah berikut:
Jika nilai chaintoolong dalam respons adalah angka yang bukan nol, Anda terpengaruh oleh masalah ini.
Solusi
Mitigasi jangka pendeknya adalah dengan meningkatkan ukuran tabel hash
netfilter (nf_conntrack_buckets) dan tabel pelacakan koneksi
netfilter (nf_conntrack_max). Gunakan
perintah berikut di setiap node cluster untuk meningkatkan ukuran
tabel:
Ganti TABLE_SIZE dengan ukuran baru dalam byte. Nilai
ukuran tabel default adalah 262144. Sebaiknya tetapkan nilai yang sama dengan 65.536 kali jumlah core di node. Misalnya,
jika node Anda memiliki delapan core, tetapkan ukuran tabel ke 524288.
Jaringan
1.13.0-1.13.2
Loop error calico-typha atau anetd-operator di node Windows dengan Controlplane V2
Dengan
Controlplane V2 diaktifkan, calico-typha atau anetd-operator mungkin dijadwalkan ke node Windows dan mengalami loop error.
Alasannya adalah kedua deployment tersebut mentoleransi semua taint, termasuk taint node Windows.
Solusi:
Upgrade ke 1.13.3+, atau jalankan perintah berikut untuk mengedit deployment `calico-typha` atau `anetd-operator`:
# If dataplane v2 is not used.kubectleditdeployment-nkube-systemcalico-typha--kubeconfigUSER_CLUSTER_KUBECONFIG# If dataplane v2 is used.kubectleditdeployment-nkube-systemanetd-operator--kubeconfigUSER_CLUSTER_KUBECONFIG
kube-controller-manager mungkin melepaskan volume persisten
secara paksa setelah 6 menit
kube-controller-manager mungkin kehabisan waktu tunggu saat melepaskan PV/PVC setelah 6 menit, dan melepaskan PV/PVC secara paksa. Log mendetail
dari kube-controller-manager menampilkan peristiwa yang mirip dengan
berikut:
$ cat kubectl_logs_kube-controller-manager-xxxx | grep "DetachVolume started" | grep expired
kubectl_logs_kube-controller-manager-gke-admin-master-4mgvr_--container_kube-controller-manager_--kubeconfig_kubeconfig_--request-timeout_30s_--namespace_kube-system_--timestamps:2023-01-05T16:29:25.883577880Z W0105 16:29:25.883446 1 reconciler.go:224] attacherDetacher.DetachVolume started for volume "pvc-8bb4780b-ba8e-45f4-a95b-19397a66ce16" (UniqueName: "kubernetes.io/csi/csi.vsphere.vmware.com^126f913b-4029-4055-91f7-beee75d5d34a") on node "sandbox-corp-ant-antho-0223092-03-u-tm04-ml5m8-7d66645cf-t5q8f"
This volume is not safe to detach, but maxWaitForUnmountDuration 6m0s expired, force detaching
Untuk memverifikasi masalah, login ke node dan jalankan perintah berikut:
# See all the mounting points with disks
lsblk-f
# See some ext4 errors
sudodmesg-T
Dalam log kubelet, error seperti berikut akan ditampilkan:
Error: GetDeviceMountRefs check failed for volume "pvc-8bb4780b-ba8e-45f4-a95b-19397a66ce16" (UniqueName: "kubernetes.io/csi/csi.vsphere.vmware.com^126f913b-4029-4055-91f7-beee75d5d34a") on node "sandbox-corp-ant-antho-0223092-03-u-tm04-ml5m8-7d66645cf-t5q8f" :
the device mount path "/var/lib/kubelet/plugins/kubernetes.io/csi/pv/pvc-8bb4780b-ba8e-45f4-a95b-19397a66ce16/globalmount" is still mounted by other references [/var/lib/kubelet/plugins/kubernetes.io/csi/pv/pvc-8bb4780b-ba8e-45f4-a95b-19397a66ce16/globalmount
Solusi:
Hubungkan ke node yang terpengaruh menggunakan SSH dan mulai ulang node.
Upgrade, Update
1.12+, 1.13+, 1.14+
Upgrade cluster macet jika driver CSI pihak ketiga digunakan
Anda mungkin tidak dapat mengupgrade cluster jika menggunakan driver CSI pihak ketiga. Perintah gkectl cluster diagnose mungkin menampilkan error berikut:
"virtual disk "kubernetes.io/csi/csi.netapp.io^pvc-27a1625f-29e3-4e4f-9cd1-a45237cc472c" IS NOT attached to machine "cluster-pool-855f694cc-cjk5c" but IS listed in the Node.Status"
Solusi:
Lakukan upgrade menggunakan opsi --skip-validation-all.
Operasi
1.10+, 1.11+, 1.12+, 1.13+, 1.14+
gkectl repair admin-master membuat VM master admin
tanpa mengupgrade versi hardware VM-nya
Node master admin yang dibuat melalui gkectl repair admin-master
dapat menggunakan versi hardware VM yang lebih rendah dari yang diharapkan. Saat masalah terjadi,
Anda akan melihat error dari laporan
gkectl diagnose cluster.
CSIPrerequisites [VM Hardware]: The current VM hardware versions are lower than vmx-15 which is unexpected. Please contact Anthos support to resolve this issue.
Solusi:
Matikan node master admin, ikuti
https://kb.vmware.com/s/article/1003746
untuk mengupgrade node ke versi yang diharapkan yang dijelaskan dalam pesan
error, lalu mulai node.
Sistem operasi
1.10+, 1.11+, 1.12+, 1.13+, 1.14+, 1.15+, 1.16+
VM melepaskan lease DHCP saat dimatikan/di-reboot secara tidak terduga, yang dapat
menyebabkan perubahan IP
Di systemd v244, systemd-networkd memiliki
perubahan perilaku default
pada konfigurasi KeepConfiguration. Sebelum perubahan ini, VM tidak mengirim pesan rilis sewa DHCP ke server DHCP saat dimatikan atau dimulai ulang. Setelah perubahan ini, VM akan mengirimkan pesan tersebut dan
menampilkan IP ke server DHCP. Akibatnya, IP yang dirilis dapat
dialokasikan ulang ke VM yang berbeda dan/atau IP yang berbeda dapat ditetapkan ke VM, sehingga menyebabkan konflik IP (di tingkat Kubernetes, bukan tingkat vSphere)
dan/atau perubahan IP pada VM, yang dapat merusak cluster dengan berbagai cara.
Misalnya, Anda mungkin melihat gejala berikut.
UI vCenter menunjukkan bahwa tidak ada VM yang menggunakan IP yang sama, tetapi kubectl get
nodes -o wide menampilkan node dengan IP duplikat.
NAME STATUS AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
node1 Ready 28h v1.22.8-gke.204 10.180.85.130 10.180.85.130 Ubuntu 20.04.4 LTS 5.4.0-1049-gkeop containerd://1.5.13
node2 NotReady 71d v1.22.8-gke.204 10.180.85.130 10.180.85.130 Ubuntu 20.04.4 LTS 5.4.0-1049-gkeop containerd://1.5.13
Node baru gagal dimulai karena error calico-node
2023-01-19T22:07:08.817410035Z 2023-01-19 22:07:08.817 [WARNING][9] startup/startup.go 1135: Calico node 'node1' is already using the IPv4 address 10.180.85.130.
2023-01-19T22:07:08.817514332Z 2023-01-19 22:07:08.817 [INFO][9] startup/startup.go 354: Clearing out-of-date IPv4 address from this node IP="10.180.85.130/24"
2023-01-19T22:07:08.825614667Z 2023-01-19 22:07:08.825 [WARNING][9] startup/startup.go 1347: Terminating
2023-01-19T22:07:08.828218856Z Calico node failed to start
Solusi:
Deploy DaemonSet berikut di cluster untuk mengembalikan perubahan perilaku default systemd-networkd. VM yang menjalankan
DaemonSet ini tidak akan melepaskan IP ke server DHCP saat
dimatikan/di-reboot. IP akan otomatis dibebaskan oleh server DHCP
saat masa sewa berakhir.
Kunci akun layanan akses komponen dihapus setelah cluster admin
diupgrade dari 1.11.x
Masalah ini hanya akan memengaruhi cluster admin yang diupgrade
dari 1.11.x, dan tidak akan memengaruhi cluster admin yang baru dibuat setelah
1.12.
Setelah mengupgrade cluster 1.11.x ke 1.12.x, kolom component-access-sa-key di secret admin-cluster-creds akan dihapus hingga kosong.
Hal ini dapat diperiksa dengan menjalankan perintah berikut:
Jika Anda menemukan output kosong, artinya kunci telah dihapus.
Setelah kunci akun layanan akses komponen dihapus,
penginstalan cluster pengguna baru atau upgrade cluster pengguna yang ada akan
gagal. Berikut adalah daftar beberapa pesan error yang mungkin Anda lihat:
Kegagalan pra-penerbangan validasi lambat dengan pesan error: "Failed
to create the test VMs: failed to get service account key: service
account is not configured."
Penyiapan oleh gkectl prepare gagal dengan pesan error:
"Failed to prepare OS images: dialing: unexpected end of JSON
input"
Jika Anda mengupgrade cluster pengguna 1.13 menggunakan Konsol Google Cloud atau gcloud CLI, saat menjalankan gkectl update admin --enable-preview-user-cluster-central-upgrade untuk men-deploy pengontrol platform upgrade, perintah akan gagal dengan pesan: "failed to download bundle to disk: dialing:
unexpected end of JSON input" (Anda dapat melihat pesan ini di kolom status dalam output kubectl --kubeconfig ADMIN_KUBECONFIG -n kube-system get onprembundle -oyaml).
Solusi:
Tambahkan kunci akun layanan akses komponen kembali ke secret secara manual dengan menjalankan perintah berikut:
Autoscaler cluster tidak berfungsi saat Controlplane V2 diaktifkan
Untuk cluster pengguna yang dibuat dengan Controlplane V2
diaktifkan, node pool dengan penskalaan otomatis yang diaktifkan selalu menggunakan autoscaling.minReplicas di user-cluster.yaml. Log pod cluster-autoscaler
menampilkan error yang mirip dengan berikut:
Sertakan setiap IP dalam file blok IP hingga mengupgrade ke versi dengan perbaikan: 1.12.5, 1.13.4, 1.14.1+.
Operasi
1.10, 1.11, 1.12, 1.13, 1.14.0
Error pembuatan atau penghapusan pod karena masalah token autentikasi akun layanan Calico CNI
Masalah pada Calico di Google Distributed Cloud 1.14.0
menyebabkan pembuatan dan penghapusan Pod gagal dengan pesan error berikut di
output kubectl describe pods:
error getting ClusterInformation: connection is unauthorized: Unauthorized
Masalah ini hanya diamati 24 jam setelah cluster
dibuat atau diupgrade ke 1.14 menggunakan Calico.
Cluster admin selalu menggunakan Calico, sedangkan untuk cluster pengguna, ada
kolom konfigurasi `enableDataPlaneV2` di user-cluster.yaml. Jika kolom tersebut
ditetapkan ke `false`, atau tidak ditentukan, berarti Anda menggunakan Calico di cluster
pengguna.
Penampung install-cni node membuat kubeconfig dengan token yang berlaku selama 24 jam. Token ini perlu diperpanjang secara berkala oleh Pod calico-node. Pod calico-node
tidak dapat memperpanjang token karena tidak memiliki akses ke direktori
yang berisi file kubeconfig di node.
Solusi:
Masalah ini telah diperbaiki di Google Distributed Cloud versi 1.14.1. Upgrade ke
versi ini atau yang lebih baru.
Jika Anda tidak dapat langsung mengupgrade, terapkan patch berikut pada
DaemonSet calico-node di cluster admin dan pengguna:
ADMIN_CLUSTER_KUBECONFIG: jalur
file kubeconfig cluster admin.
USER_CLUSTER_CONFIG_FILE: jalur file konfigurasi cluster pengguna Anda.
Penginstalan
1.12.0-1.12.4, 1.13.0-1.13.3, 1.14.0
Validasi blok IP gagal saat menggunakan CIDR
Pembuatan cluster gagal meskipun pengguna memiliki konfigurasi yang tepat. Pengguna melihat pembuatan gagal karena cluster tidak memiliki cukup IP.
Solusi:
Membagi CIDR menjadi beberapa blok CIDR yang lebih kecil, seperti 10.0.0.0/30 menjadi 10.0.0.0/31, 10.0.0.2/31. Selama ada CIDR N+1, dengan N adalah jumlah node dalam cluster, ini sudah cukup.
Upgrade, Update
1.11, 1.12
Komponen GMP yang di-deploy sendiri tidak dipertahankan setelah mengupgrade ke versi 1.12
Jika Anda menggunakan Google Distributed Cloud versi di bawah 1.12, dan telah menyiapkan komponen Prometheus yang dikelola Google (GMP) secara manual di namespace gmp-system untuk cluster Anda, komponen tersebut tidak akan dipertahankan saat Anda mengupgrade ke versi 1.12.x.
Mulai versi 1.12, komponen GMP di namespace gmp-system dan CRD dikelola oleh objek stackdriver, dengan tanda enableGMPForApplications ditetapkan ke false secara default. Jika Anda men-deploy komponen GMP secara manual di namespace sebelum mengupgrade ke 1.12, resource akan dihapus oleh stackdriver.
Solusi:
Cadangkan semua resource kustom (CR) PodMonitoring yang ada.
Objek ClusterAPI tidak ada dalam skenario system snapshot cluster
Dalam skenario system, snapshot cluster tidak menyertakan resource apa pun dalam namespace default.
Namun, beberapa resource Kubernetes seperti objek Cluster API yang berada dalam namespace ini berisi informasi proses debug yang berguna. Snapshot cluster harus menyertakannya.
Solusi:
Anda dapat menjalankan perintah berikut secara manual untuk mengumpulkan informasi proses debug.
kubevols adalah direktori default untuk driver dalam hierarki vSphere. Jika tidak ada objek PVC/PV yang dibuat, Anda mungkin mengalami bug yang menyebabkan node drain macet saat menemukan kubevols, karena implementasi saat ini mengasumsikan bahwa kubevols selalu ada.
Solusi:
Buat direktori kubevols di datastore tempat node dibuat. Ini ditentukan di kolom vCenter.datastore dalam file user-cluster.yaml atau admin-cluster.yaml.
Konfigurasi
1.7, 1.8, 1.9, 1.10, 1.11, 1.12, 1.13, 1.14
Cluster Autoscaler clusterrolebinding dan clusterrole dihapus setelah menghapus cluster pengguna.
Saat cluster pengguna dihapus, clusterrole dan clusterrolebinding yang sesuai untuk cluster-autoscaler juga akan dihapus. Hal ini memengaruhi semua cluster pengguna lainnya di cluster admin yang sama dengan autoscaler cluster yang diaktifkan. Hal ini karena clusterrole dan clusterrolebinding yang sama digunakan untuk semua pod autoscaler cluster dalam cluster admin yang sama.
Terapkan clusterrole dan clusterrolebinding berikut ke cluster admin jika tidak ada. Tambahkan subjek akun layanan ke clusterrolebinding untuk setiap cluster pengguna.
apiVersion:rbac.authorization.k8s.io/v1kind:ClusterRolemetadata:name:cluster-autoscalerrules:-apiGroups:["cluster.k8s.io"]resources:["clusters"]verbs:["get","list","watch"]-apiGroups:["cluster.k8s.io"]resources:["machinesets","machinedeployments","machinedeployments/scale","machines"]verbs:["get","list","watch","update","patch"]-apiGroups:["onprem.cluster.gke.io"]resources:["onpremuserclusters"]verbs:["get","list","watch"]-apiGroups:-coordination.k8s.ioresources:-leasesresourceNames:["cluster-autoscaler"]verbs:-get-list-watch-create-update-patch-apiGroups:-""resources:-nodesverbs:["get","list","watch","update","patch"]-apiGroups:-""resources:-podsverbs:["get","list","watch"]-apiGroups:-""resources:-pods/evictionverbs:["create"]# read-only access to cluster state-apiGroups:[""]resources:["services","replicationcontrollers","persistentvolumes","persistentvolumeclaims"]verbs:["get","list","watch"]-apiGroups:["apps"]resources:["daemonsets","replicasets"]verbs:["get","list","watch"]-apiGroups:["apps"]resources:["statefulsets"]verbs:["get","list","watch"]-apiGroups:["batch"]resources:["jobs"]verbs:["get","list","watch"]-apiGroups:["policy"]resources:["poddisruptionbudgets"]verbs:["get","list","watch"]-apiGroups:["storage.k8s.io"]resources:["storageclasses","csinodes"]verbs:["get","list","watch"]# misc access-apiGroups:[""]resources:["events"]verbs:["create","update","patch"]-apiGroups:[""]resources:["configmaps"]verbs:["create"]-apiGroups:[""]resources:["configmaps"]resourceNames:["cluster-autoscaler-status"]verbs:["get","update","patch","delete"]
cluster admin cluster-health-controller dan vsphere-metrics-exporter tidak berfungsi setelah menghapus cluster pengguna
Saat cluster pengguna dihapus, clusterrole yang sesuai juga akan dihapus, yang menyebabkan perbaikan otomatis dan ekspor metrik vsphere tidak berfungsi
Masalah umum yang dapat menyebabkan kegagalan gkectl check-config tanpa menjalankan gkectl prepare. Hal ini membingungkan karena sebaiknya Anda menjalankan perintah sebelum menjalankan gkectl prepare
Gejalanya adalah perintah gkectl check-config akan gagal dengan
pesan error berikut:
Node gagal didaftarkan jika nama host yang dikonfigurasi berisi titik
Pendaftaran node gagal selama pembuatan, upgrade, update, dan perbaikan otomatis node cluster, jika ipMode.type adalah static dan nama host yang dikonfigurasi di file blok IP berisi satu atau beberapa titik. Dalam hal ini, Permintaan Penandatanganan Sertifikat (CSR) untuk node tidak otomatis disetujui.
Untuk melihat CSR yang tertunda untuk node, jalankan perintah berikut:
kubectlgetcsr-A-owide
Periksa log berikut untuk menemukan pesan error:
Lihat log di cluster admin untuk penampung clusterapi-controller-manager di Pod clusterapi-controllers:
ADMIN_CLUSTER_KUBECONFIG adalah file kubeconfig
cluster admin.
USER_CLUSTER_NAME adalah nama cluster pengguna.
Berikut adalah contoh pesan error yang mungkin Anda lihat: "msg"="failed
to validate token id" "error"="failed to find machine for node
node-worker-vm-1" "validate"="csr-5jpx9"
Lihat log kubelet di node yang bermasalah:
journalctl--ukubelet
Berikut adalah contoh pesan error yang mungkin Anda lihat: "Error getting
node" err="node \"node-worker-vm-1\" not found"
Jika Anda menentukan nama domain di kolom nama host file blok IP,
karakter apa pun setelah titik pertama akan diabaikan. Misalnya, jika
Anda menentukan nama host sebagai bob-vm-1.bank.plc, nama host VM
dan nama node akan ditetapkan ke bob-vm-1.
Jika verifikasi ID node diaktifkan, pemberi persetujuan CSR akan membandingkan
nama node dengan nama host dalam spesifikasi Komputer, dan gagal merekonsiliasi
nama tersebut. Pengajuan CSR ditolak oleh pemberi persetujuan, dan node gagal melakukan bootstrap.
Solusi:
Cluster pengguna
Nonaktifkan verifikasi ID node dengan menyelesaikan langkah-langkah berikut:
Tambahkan kolom berikut di file konfigurasi cluster pengguna:
NetworkGatewayNodes marked unhealthy from concurrent
status update conflict
In networkgatewaygroups.status.nodes, some nodes switch
between NotHealthy and Up.
Logs for the ang-daemon Pod running on that node reveal
repeated errors:
2022-09-16T21:50:59.696Z ERROR ANGd Failed to report status {"angNode": "kube-system/my-node", "error": "updating Node CR status: sending Node CR update: Operation cannot be fulfilled on networkgatewaynodes.networking.gke.io \"my-node\": the object has been modified; please apply your changes to the latest version and try again"}
Status NotHealthy mencegah pengontrol menetapkan IP floating tambahan ke node. Hal ini dapat menyebabkan beban yang lebih tinggi pada node lain atau kurangnya redundansi untuk ketersediaan tinggi.
Aktivitas dataplane tidak terpengaruh.
Persaingan pada objek networkgatewaygroup menyebabkan beberapa
pembaruan status gagal karena kesalahan dalam penanganan percobaan ulang. Jika terlalu banyak
pembaruan status gagal, ang-controller-manager akan menganggap node telah
melewati batas waktu heartbeat dan menandai node NotHealthy.
Kesalahan dalam penanganan percobaan ulang telah diperbaiki di versi yang lebih baru.
Solusi:
Upgrade ke versi yang diperbaiki, jika tersedia.
Upgrade, Update
1.12.0-1.12.2, 1.13.0
Kondisi perlombaan memblokir penghapusan objek mesin selama update atau
upgrade
Masalah umum yang dapat menyebabkan upgrade atau update cluster stuck menunggu objek mesin lama dihapus. Hal ini karena
finalizer tidak dapat dihapus dari objek mesin. Hal ini memengaruhi
operasi update rolling untuk node pool.
Gejalanya adalah waktu tunggu perintah gkectl habis dengan
pesan error berikut:
E0821 18:28:02.546121 61942 console.go:87] Exit with error:
E0821 18:28:02.546184 61942 console.go:87] error: timed out waiting for the condition, message: Node pool "pool-1" is not ready: ready condition is not true: CreateOrUpdateNodePool: 1/3 replicas are updated
Check the status of OnPremUserCluster 'cluster-1-gke-onprem-mgmt/cluster-1' and the logs of pod 'kube-system/onprem-user-cluster-controller' for more detailed debugging information.
Dalam log Pod clusterapi-controller, error-nya seperti
di bawah ini:
$ kubectl logs clusterapi-controllers-[POD_NAME_SUFFIX] -n cluster-1
-c vsphere-controller-manager --kubeconfig [ADMIN_KUBECONFIG]
| grep "Error removing finalizer from machine object"
[...]
E0821 23:19:45.114993 1 machine_controller.go:269] Error removing finalizer from machine object cluster-1-pool-7cbc496597-t5d5p; Operation cannot be fulfilled on machines.cluster.k8s.io "cluster-1-pool-7cbc496597-t5d5p": the object has been modified; please apply your changes to the latest version and try again
Error ini berulang untuk mesin yang sama selama beberapa menit untuk
menjalankan yang berhasil meskipun tanpa masalah ini, sebagian besar waktu dapat
berjalan dengan cepat, tetapi dalam beberapa kasus yang jarang terjadi, error ini dapat terjebak dalam kondisi
race ini selama beberapa jam.
Masalahnya adalah VM yang mendasarinya sudah dihapus di vCenter, tetapi
objek mesin yang sesuai tidak dapat dihapus, yang macet di
penghapusan finalizer karena update yang sangat sering dari pengontrol lain.
Hal ini dapat menyebabkan waktu tunggu perintah gkectl habis, tetapi pengontrol terus merekonsiliasi cluster sehingga proses upgrade atau update pada akhirnya selesai.
Solusi:
Kami telah menyiapkan beberapa opsi mitigasi yang berbeda untuk masalah ini,
yang bergantung pada lingkungan dan persyaratan Anda.
Opsi 1: Tunggu hingga upgrade selesai dengan sendirinya.
Berdasarkan analisis dan reproduksi di lingkungan Anda, upgrade
pada akhirnya dapat selesai dengan sendirinya tanpa intervensi manual. Batasan
opsi ini adalah tidak pasti berapa lama waktu yang diperlukan untuk
penghapusan finalizer untuk setiap objek mesin. Proses ini dapat langsung
selesai jika cukup beruntung, atau dapat berlangsung selama beberapa jam
jika rekonsiliasi pengontrol set mesin terlalu cepat dan pengontrol
mesin tidak pernah mendapatkan kesempatan untuk menghapus finalizer di antara
rekonsiliasi.
Untungnya, opsi ini tidak memerlukan tindakan apa pun dari pihak Anda, dan beban kerja tidak akan terganggu. Hanya perlu waktu yang lebih lama
untuk menyelesaikan upgrade.
Opsi 2: Terapkan anotasi perbaikan otomatis ke semua objek mesin lama.
Pengontrol set mesin akan memfilter mesin yang memiliki
anotasi perbaikan otomatis dan stempel waktu penghapusan yang bukan nol, dan tidak akan
terus mengeluarkan panggilan penghapusan pada mesin tersebut, hal ini dapat membantu menghindari
kondisi perlombaan.
Kelemahannya adalah pod di mesin akan dihapus langsung,
bukan dihapus, yang berarti pod tidak akan mengikuti konfigurasi PDB,
hal ini berpotensi menyebabkan periode nonaktif untuk workload Anda.
Perintah untuk mendapatkan semua nama mesin:
kubectl--kubeconfigCLUSTER_KUBECONFIGgetmachines
Perintah untuk menerapkan anotasi perbaikan otomatis untuk setiap mesin:
Jika Anda mengalami masalah ini dan upgrade atau update masih tidak dapat
diselesaikan setelah waktu yang lama,
hubungi
tim dukungan kami untuk mitigasi.
Penginstalan, Upgrade, Update
1.10.2, 1.11, 1.12, 1.13
gkectl kegagalan pra-penerbangan validasi image OS yang disiapkan
Perintah gkectl prepare gagal dengan:
- Validation Category: OS Images
- [FAILURE] Admin cluster OS images exist: os images [os_image_name] don't exist, please run `gkectl prepare` to upload os images.
Pemeriksaan pra-penerbangan gkectl prepare menyertakan
validasi yang salah.
Solusi:
Jalankan perintah yang sama dengan flag tambahan
--skip-validation-os-images.
Penginstalan
1.7, 1.8, 1.9, 1.10, 1.11, 1.12, 1.13
URL vCenter dengan awalan https:// atau http://
dapat menyebabkan kegagalan startup cluster
Pembuatan cluster admin gagal dengan:
Exit with error:
Failed to create root cluster: unable to apply admin base bundle to external cluster: error: timed out waiting for the condition, message:
Failed to apply external bundle components: failed to apply bundle objects from admin-vsphere-credentials-secret 1.x.y-gke.z to cluster external: Secret "vsphere-dynamic-credentials" is invalid:
[data[https://xxx.xxx.xxx.username]: Invalid value: "https://xxx.xxx.xxx.username": a valid config key must consist of alphanumeric characters, '-', '_' or '.'
(e.g. 'key.name', or 'KEY_NAME', or 'key-name', regex used for validation is '[-._a-zA-Z0-9]+'), data[https://xxx.xxx.xxx.password]:
Invalid value: "https://xxx.xxx.xxx.password": a valid config key must consist of alphanumeric characters, '-', '_' or '.'
(e.g. 'key.name', or 'KEY_NAME', or 'key-name', regex used for validation is '[-._a-zA-Z0-9]+')]
URL digunakan sebagai bagian dari Kunci rahasia, yang tidak
mendukung "/" atau ":".
Solusi:
Hapus awalan https:// atau http:// dari kolom vCenter.Address di yaml konfigurasi cluster admin atau cluster pengguna.
Penginstalan, Upgrade, Update
1.10, 1.11, 1.12, 1.13
gkectl prepare panik pada util.CheckFileExists
gkectl prepare dapat mengalami error dengan stacktrace
berikut:
gkectl repair admin-master dan upgrade admin yang dapat dilanjutkan tidak
berfungsi bersama
Setelah upaya upgrade cluster admin gagal, jangan jalankan gkectl
repair admin-master. Tindakan ini dapat menyebabkan upaya upgrade admin berikutnya gagal dengan masalah seperti kegagalan daya master admin atau VM tidak dapat diakses.
Solusi:
Jika Anda telah mengalami skenario kegagalan ini,
hubungi dukungan.
Sistem operasi
1.12, 1.13
cgroup v2 dapat memengaruhi beban kerja
Pada versi 1.12.0, cgroup v2 (terpadu) diaktifkan secara default untuk node Container Optimized OS (COS). Hal ini berpotensi menyebabkan ketidakstabilan untuk workload Anda di cluster COS.
Solusi:
Kami beralih kembali ke cgroup v1 (hibrida) dalam versi 1.12.1. Jika Anda menggunakan node COS, sebaiknya upgrade ke versi 1.12.1 segera setelah dirilis.
Identitas
1.10, 1.11, 1.12, 1.13
Resource kustom ClientConfig
gkectl update akan mengembalikan perubahan manual apa pun yang telah Anda
buat pada resource kustom ClientConfig.
Solusi:
Sebaiknya cadangkan resource ClientConfig setelah setiap perubahan manual.
Penginstalan
1.10, 1.11, 1.12, 1.13
Validasi gkectl check-config gagal: tidak dapat menemukan partisi BIG-IP F5
Validasi gagal karena partisi F5 BIG-IP tidak dapat ditemukan, meskipun
ada.
Masalah pada F5 BIG-IP API dapat menyebabkan validasi gagal.
Solusi:
Coba jalankan gkectl check-config lagi.
Penginstalan
1.12
Penginstalan cluster pengguna gagal karena masalah pemilihan pemimpin
cert-manager/ca-injector
Anda mungkin melihat kegagalan penginstalan karena
cert-manager-cainjector dalam crashloop, saat apiserver/etcd
lambat:
# These are logs from `cert-manager-cainjector`, from the command
# `kubectl --kubeconfig USER_CLUSTER_KUBECONFIG -n kube-system
cert-manager-cainjector-xxx`
I0923 16:19:27.911174 1 leaderelection.go:278] failed to renew lease kube-system/cert-manager-cainjector-leader-election: timed out waiting for the condition
E0923 16:19:27.911110 1 leaderelection.go:321] error retrieving resource lock kube-system/cert-manager-cainjector-leader-election-core:
Get "https://10.96.0.1:443/api/v1/namespaces/kube-system/configmaps/cert-manager-cainjector-leader-election-core": context deadline exceeded
I0923 16:19:27.911593 1 leaderelection.go:278] failed to renew lease kube-system/cert-manager-cainjector-leader-election-core: timed out waiting for the condition
E0923 16:19:27.911629 1 start.go:163] cert-manager/ca-injector "msg"="error running core-only manager" "error"="leader election lost"
Edit Deployment cert-manager-cainjector untuk menonaktifkan pemilihan pemimpin, karena kita hanya memiliki satu replika yang berjalan. Hal ini tidak
diperlukan untuk satu replika:
# Add a command line flag for cainjector: `--leader-elect=false`
kubectl--kubeconfigUSER_CLUSTER_KUBECONFIGedit\-nkube-systemdeploymentcert-manager-cainjector
Cuplikan YAML yang relevan untuk deployment cert-manager-cainjector
akan terlihat seperti contoh berikut:
Setelah setiap upgrade, perubahan akan dikembalikan. Lakukan langkah-langkah
yang sama lagi untuk memitigasi masalah ini hingga diperbaiki dalam rilis
mendatang.
VMware
1.10, 1.11, 1.12, 1.13
Memulai ulang atau mengupgrade vCenter untuk versi yang lebih rendah dari 7.0U2
Jika vCenter, untuk versi yang lebih rendah dari 7.0U2, dimulai ulang, setelah upgrade atau tidak, nama jaringan dalam informasi vm dari vCenter salah, dan menyebabkan mesin berada dalam status Unavailable. Hal ini pada akhirnya menyebabkan node diperbaiki secara otomatis untuk membuat node baru.
Masalah ini telah diperbaiki di vCenter versi 7.0U2 dan yang lebih baru.
Untuk versi yang lebih rendah, klik kanan host, lalu pilih
Koneksi > Putuskan Sambungan. Selanjutnya, hubungkan kembali, yang akan memaksa update
grup port VM.
Sistem operasi
1.10, 1.11, 1.12, 1.13
Koneksi SSH ditutup oleh host jarak jauh
Untuk Google Distributed Cloud versi 1.7.2 dan yang lebih baru, image OS Ubuntu di-harden dengan
CIS L1 Server Benchmark.
Untuk memenuhi aturan CIS "5.2.16 Pastikan Interval Waktu tunggu Tidak Ada Aktivitas SSH
dikonfigurasi", /etc/ssh/sshd_config memiliki setelan
berikut:
ClientAliveInterval 300
ClientAliveCountMax 0
Tujuan setelan ini adalah untuk menghentikan sesi klien setelah 5
menit waktu tidak ada aktivitas. Namun, nilai ClientAliveCountMax 0
menyebabkan perilaku yang tidak terduga. Saat Anda menggunakan sesi ssh di
workstation admin, atau node cluster, koneksi SSH mungkin
terputus meskipun klien ssh Anda tidak tidak ada aktivitas, seperti saat menjalankan
perintah yang memakan waktu, dan perintah Anda dapat dihentikan dengan
pesan berikut:
Connection to [IP] closed by remote host.
Connection to [IP] closed.
Solusi:
Anda dapat:
Gunakan nohup untuk mencegah perintah Anda dihentikan saat koneksi SSH terputus,
Dalam rilis 1.13, monitoring-operator akan menginstal
cert-manager di namespace cert-manager. Jika karena alasan
tertentu, Anda perlu menginstal pengelola sertifikat sendiri, ikuti petunjuk
berikut untuk menghindari konflik:
Anda hanya perlu menerapkan solusi ini satu kali untuk setiap cluster, dan perubahan akan dipertahankan di seluruh upgrade cluster.
Catatan: Salah satu gejala umum saat menginstal cert-manager Anda sendiri
adalah versi atau image cert-manager (misalnya,
v1.7.2) dapat dikembalikan ke versi sebelumnya. Hal ini disebabkan oleh
monitoring-operator yang mencoba merekonsiliasi
cert-manager, dan mengembalikan versi dalam proses.
Solusi:
<pMenghindari konflik selama upgrade
Uninstal versi cert-manager Anda. Jika menentukan resource sendiri, sebaiknya cadangkan
resource tersebut.
Anda dapat melewati langkah ini jika menggunakan
penginstalan cert-manager default upstream, atau Anda yakin
cert-manager diinstal di namespace cert-manager.
Jika tidak, salin Sertifikat metrics-ca cert-manager.io/v1 dan resource Issuer metrics-pki.cluster.local dari cert-manager ke namespace resource cluster cert-manager yang diinstal.
Merestor cert-manager Anda sendiri di cluster admin
Secara umum, Anda tidak perlu menginstal ulang cert-manager di cluster admin karena cluster admin hanya menjalankan workload platform kontrol Google Distributed Cloud. Dalam kasus yang jarang terjadi, jika Anda juga perlu menginstal
cert-manager Anda sendiri di cluster admin, ikuti petunjuk berikut
untuk menghindari konflik. Perhatikan bahwa jika Anda adalah pelanggan Apigee dan hanya memerlukan cert-manager untuk Apigee, Anda tidak perlu menjalankan perintah cluster admin.
Anda dapat melewati langkah ini jika menggunakan
penginstalan cert-manager default upstream, atau Anda yakin
cert-manager diinstal di namespace cert-manager.
Jika tidak, salin Sertifikat metrics-ca cert-manager.io/v1 dan resource Issuer metrics-pki.cluster.local dari cert-manager ke namespace resource cluster cert-manager yang diinstal.
Positif palsu dalam pemindaian kerentanan docker, containerd, dan runc
Docker, containerd, dan runc dalam image OS Ubuntu yang dikirimkan dengan
Google Distributed Cloud disematkan ke versi khusus menggunakan
Ubuntu PPA. Hal ini memastikan
bahwa setiap perubahan runtime penampung akan memenuhi syarat oleh
Google Distributed Cloud sebelum setiap rilis.
Namun, versi khusus tidak diketahui oleh
Ubuntu CVE
Tracker, yang digunakan sebagai feed kerentanan oleh berbagai alat
pemindaian CVE. Oleh karena itu, Anda akan melihat positif palsu dalam hasil pemindaian kerentanan Docker,
containerd, dan runc.
Misalnya, Anda mungkin melihat positif palsu berikut dari hasil pemindaian
CVE. CVE ini telah diperbaiki di versi patch terbaru Google Distributed Cloud.
Koneksi jaringan antara cluster admin dan pengguna mungkin tidak tersedia
untuk waktu yang singkat selama upgrade cluster non-HA
Jika mengupgrade cluster non-HA dari 1.9 ke 1.10, Anda mungkin melihat bahwa kubectl exec, kubectl log, dan webhook terhadap cluster pengguna mungkin tidak tersedia untuk sementara waktu. Periode nonaktif ini
dapat berlangsung hingga satu menit. Hal ini terjadi karena permintaan masuk
(kubectl exec, kubectl log, dan webhook) ditangani oleh kube-apiserver untuk
cluster pengguna. kube-apiserver pengguna adalah
Statefulset. Dalam cluster non-HA, hanya ada satu replika untuk
Statefulset. Jadi, selama upgrade, ada kemungkinan kube-apiserver lama tidak tersedia saat kube-apiserver baru belum siap.
Solusi:
Periode nonaktif ini hanya terjadi selama proses upgrade. Jika Anda menginginkan
waktu nonaktif yang lebih singkat selama upgrade, sebaiknya beralihlah ke
cluster
HA.
Penginstalan, Upgrade, Update
1.10, 1.11, 1.12, 1.13
Pemeriksaan kesiapan konektivitas gagal dalam diagnosis cluster HA setelah pembuatan atau upgrade cluster
Jika Anda membuat atau mengupgrade cluster HA dan melihat bahwa pemeriksaan kesiapan koneksi gagal dalam diagnosis cluster, biasanya hal ini tidak akan memengaruhi fungsi Google Distributed Cloud (kubectl exec, log
kubectl, dan webhook). Hal ini terjadi karena terkadang satu atau dua replika konektivitas mungkin belum siap selama jangka waktu tertentu karena jaringan yang tidak stabil atau masalah lainnya.
Solusi:
Konektivitas akan pulih dengan sendirinya. Tunggu selama 30 menit hingga 1 jam, lalu jalankan kembali diagnosis cluster.
Jaringan
1.10, 1.11, 1.12, 1.13
Load balancer dan aturan firewall terdistribusi stateful NSX-T berinteraksi secara tidak terduga
Saat men-deploy Google Distributed Cloud versi 1.9 atau yang lebih baru, jika deployment memiliki load balancer Seesaw yang dipaketkan di lingkungan yang menggunakan aturan firewall terdistribusi stateful NSX-T, stackdriver-operator mungkin gagal membuat ConfigMap gke-metrics-agent-conf dan menyebabkan Pod gke-connect-agent berada dalam loop error.
Masalah yang mendasarinya adalah aturan firewall terdistribusi NSX-T stateful
menghentikan koneksi dari klien ke server API cluster pengguna
melalui load balancer Seesaw karena Seesaw menggunakan alur koneksi
asimetris. Masalah integrasi dengan aturan firewall terdistribusi NSX-T memengaruhi semua rilis Google Distributed Cloud yang menggunakan Seesaw. Anda
mungkin melihat masalah koneksi serupa pada aplikasi Anda sendiri saat
membuat objek Kubernetes besar yang ukurannya lebih besar dari 32K.
Solusi:
Dalam dokumentasi versi 1.13, ikuti
petunjuk ini untuk menonaktifkan aturan firewall terdistribusi NSX-T, atau untuk
menggunakan aturan firewall terdistribusi stateless untuk VM Seesaw.
Jika cluster Anda menggunakan load balancer manual, ikuti
petunjuk ini untuk mengonfigurasi load balancer agar mereset koneksi
klien saat mendeteksi kegagalan node backend. Tanpa konfigurasi ini, klien server Kubernetes API mungkin berhenti merespons selama beberapa menit saat instance server mengalami error.
Logging dan pemantauan
1.10, 1.11, 1.12, 1.13, 1.14, 1.15
Penagihan pemantauan yang tidak terduga
Untuk Google Distributed Cloud versi 1.10 hingga 1.15, beberapa pelanggan menemukan penagihan yang tidak terduga tinggi untuk Metrics volume di halaman Billing. Masalah ini hanya memengaruhi Anda jika semua keadaan berikut berlaku:
Logging dan pemantauan aplikasi diaktifkan (enableStackdriverForApplications=true)
Pod Aplikasi memiliki anotasi
prometheus.io/scrap=true. (Menginstal Cloud Service Mesh juga dapat menambahkan anotasi ini.)
Untuk mengonfirmasi apakah Anda terpengaruh oleh masalah ini,
cantumkan
metrik yang ditentukan pengguna. Jika Anda melihat tagihan untuk metrik yang tidak diinginkan dengan awalan nama external.googleapis.com/prometheus dan juga melihat enableStackdriverForApplications ditetapkan ke true dalam respons kubectl -n kube-system get stackdriver stackdriver -o yaml, berarti masalah ini berlaku untuk Anda.
Solusi
Jika Anda terpengaruh oleh masalah ini, sebaiknya upgrade
cluster ke versi 1.12 atau yang lebih baru, berhenti menggunakan flag enableStackdriverForApplications, dan beralih ke solusi pemantauan aplikasi baru managed-service-for-prometheus yang tidak lagi mengandalkan anotasi prometheus.io/scrap=true. Dengan solusi baru ini, Anda juga dapat mengontrol pengumpulan log dan metrik secara terpisah untuk aplikasi Anda, masing-masing dengan flag enableCloudLoggingForApplications dan enableGMPForApplications.
Untuk berhenti menggunakan flag enableStackdriverForApplications, buka objek `stackdriver` untuk diedit:
Penginstal Google Distributed Cloud dapat gagal jika peran kustom terikat
pada tingkat izin yang salah.
Jika pengikatan peran salah, pembuatan disk data vSphere dengan
govc akan mengalami hang dan disk dibuat dengan ukuran sama dengan 0. Untuk
memperbaiki masalah ini, Anda harus mengikat peran kustom di tingkat vCenter vSphere (root).
Solusi:
Jika ingin mengikat peran kustom di tingkat DC (atau lebih rendah dari
root), Anda juga perlu mengikat peran hanya baca ke pengguna di tingkat vCenter
root.
Mengganti metrik yang tidak digunakan lagi di dasbor
Jika metrik yang tidak digunakan lagi digunakan di dasbor bawaan, Anda akan melihat beberapa diagram kosong. Untuk menemukan metrik yang tidak digunakan lagi di dasbor
Monitoring, jalankan perintah berikut:
Hapus "Status node on-prem GKE" di dasbor Google Cloud Monitoring. Instal ulang "Status node lokal GKE" dengan mengikuti
petunjuk ini.
Hapus "Penggunaan node on-prem GKE" di dasbor Google Cloud Monitoring. Instal ulang "Penggunaan node on-prem GKE" dengan mengikuti
petunjuk ini.
Hapus "GKE on-prem vSphere vm health" di dasbor Google Cloud Monitoring. Instal ulang "GKE on-prem vSphere vm health"
dengan mengikuti
petunjuk ini.
Penghentian ini disebabkan oleh upgrade agen
kube-state-metrics dari v1.9 ke v2.4, yang diperlukan untuk
Kubernetes 1.22. Anda dapat mengganti semua metrik kube-state-metrics yang tidak digunakan lagi, yang memiliki awalan kube_, di dasbor kustom atau kebijakan pemberitahuan.
Logging dan pemantauan
1.10, 1.11, 1.12, 1.13
Data metrik yang tidak diketahui di Cloud Monitoring
Untuk Google Distributed Cloud versi 1.10 dan yang lebih baru, data untuk cluster di Cloud Monitoring dapat berisi entri metrik ringkasan yang tidak relevan seperti berikut:
Untuk memperbaiki masalah ini, lakukan langkah-langkah berikut sebagai solusi. Untuk
[versi 1.9.5+, 1.10.2+, 1.11.0]: tingkatkan CPU untuk gke-metrics-agent
dengan mengikuti langkah 1 - 4
Untuk meningkatkan permintaan CPU untuk gke-metrics-agent dari
10m ke 50m, batas CPU dari 100m
ke 200m tambahkan bagian resourceAttrOverride
berikut ke manifes stackdriver :
Perintah ini akan menemukan cpu: 50m jika hasil edit Anda telah diterapkan.
Logging dan pemantauan
1.11.0-1.11.2, 1.12.0
Metrik penjadwal dan pengelola pengontrol tidak ada di cluster admin
Jika cluster admin Anda terpengaruh oleh masalah ini, metrik penjadwal dan
pengendali-pengelola tidak ada. Misalnya, kedua metrik ini tidak ada
# scheduler metric example
scheduler_pending_pods
# controller-manager metric example
replicaset_controller_rate_limiter_use
Solusi:
Upgrade ke v1.11.3+, v1.12.1+, atau v1.13+.
1.11.0-1.11.2, 1.12.0
Metrik penjadwal dan pengelola pengontrol tidak ada di cluster pengguna
Jika cluster pengguna Anda terpengaruh oleh masalah ini, metrik penjadwal dan pengendali-pengelola tidak ada. Misalnya, dua metrik ini tidak ada:
# scheduler metric example
scheduler_pending_pods
# controller-manager metric example
replicaset_controller_rate_limiter_use
Solusi:
Masalah ini telah diperbaiki di Google Distributed Cloud versi 1.13.0 dan yang lebih baru.
Upgrade cluster Anda ke versi yang memiliki perbaikan.
Penginstalan, Upgrade, Update
1.10, 1.11, 1.12, 1.13
Gagal mendaftarkan cluster admin selama pembuatan
Jika Anda membuat cluster admin untuk versi 1.9.x atau 1.10.0, dan jika
cluster admin gagal mendaftar dengan spesifikasi gkeConnect
yang disediakan selama pembuatannya, Anda akan mendapatkan error berikut.
Failed to create root cluster: failed to register admin cluster: failed to register cluster: failed to apply Hub Membership: Membership API request failed: rpc error: ode = PermissionDenied desc = Permission 'gkehub.memberships.get' denied on PROJECT_PATH
Anda masih dapat menggunakan cluster admin ini, tetapi Anda akan mendapatkan error berikut jika nanti mencoba mengupgrade cluster admin ke versi 1.10.y.
failed to migrate to first admin trust chain: failed to parse current version "": invalid version: "" failed to migrate to first admin trust chain: failed to parse current version "": invalid version: ""
Jika error ini terjadi, ikuti langkah-langkah berikut untuk memperbaiki masalah pendaftaran cluster. Setelah melakukan perbaikan ini, Anda dapat mengupgrade cluster admin.
Jalankan gkectl update admin untuk mendaftarkan cluster admin dengan kunci akun layanan yang benar.
Buat akun layanan khusus untuk menerapkan patch pada resource kustom OnPremAdminCluster.
exportKUBECONFIG=ADMIN_CLUSTER_KUBECONFIG# Create Service Account modify-admin
kubectlapply-f-<<EOF
apiVersion:v1
kind:ServiceAccount
metadata:
name:modify-admin
namespace:kube-system
EOF
# Create ClusterRole
kubectlapply-f-<<EOF
apiVersion:rbac.authorization.k8s.io/v1
kind:ClusterRole
metadata:
creationTimestamp:null
name:modify-admin-role
rules:
-apiGroups:
-"onprem.cluster.gke.io"resources:
-"onpremadminclusters/status"verbs:
-"patch"
EOF
# Create ClusterRoleBinding for binding the permissions to the modify-admin SA
kubectlapply-f-<<EOF
apiVersion:rbac.authorization.k8s.io/v1
kind:ClusterRoleBinding
metadata:
creationTimestamp:null
name:modify-admin-rolebinding
roleRef:
apiGroup:rbac.authorization.k8s.io
kind:ClusterRole
name:modify-admin-role
subjects:
-kind:ServiceAccount
name:modify-admin
namespace:kube-system
EOF
Ganti ADMIN_CLUSTER_KUBECONFIG dengan jalur file kubeconfig cluster admin Anda.
Jalankan perintah ini untuk memperbarui resource kustom OnPremAdminCluster.
exportKUBECONFIG=ADMIN_CLUSTER_KUBECONFIGSERVICE_ACCOUNT=modify-admin
SECRET=$(kubectlgetserviceaccount${SERVICE_ACCOUNT}\-nkube-system-ojson\|jq-Mr'.secrets[].name | select(contains("token"))')TOKEN=$(kubectlgetsecret${SECRET}-nkube-system-ojson\|jq-Mr'.data.token'|base64-d)
kubectlgetsecret${SECRET}-nkube-system-ojson\|jq-Mr'.data["ca.crt"]'\|base64-d>/tmp/ca.crt
APISERVER=https://$(kubectl-ndefaultgetendpointskubernetes\--no-headers|awk'{ print $2 }')# Find out the admin cluster name and gkeOnPremVersion from the OnPremAdminCluster CRADMIN_CLUSTER_NAME=$(kubectlgetonpremadmincluster-nkube-system\--no-headers|awk'{ print $1 }')GKE_ON_PREM_VERSION=$(kubectlgetonpremadmincluster\-nkube-system$ADMIN_CLUSTER_NAME\-o=jsonpath='{.spec.gkeOnPremVersion}')# Create the Status field and set the gkeOnPremVersion in OnPremAdminCluster CR
curl-H"Accept: application/json"\--header"Authorization: Bearer $TOKEN"-XPATCH\-H"Content-Type: application/merge-patch+json"\--cacert/tmp/ca.crt\--data'{"status": {"gkeOnPremVersion": "'$GKE_ON_PREM_VERSION'"}}'\$APISERVER/apis/onprem.cluster.gke.io/v1alpha1/namespaces/kube-system/onpremadminclusters/$ADMIN_CLUSTER_NAME/status
Coba upgrade cluster admin lagi dengan flag --disable-upgrade-from-checkpoint.
Jika mengalami masalah ini dengan cluster yang ada, Anda dapat melakukan salah satu hal berikut:
Nonaktifkan GKE Identity Service. Jika Anda menonaktifkan
Identity Service GKE, tindakan ini tidak akan menghapus biner
Identity Service GKE yang di-deploy atau menghapus
ClientConfig Identity Service GKE. Untuk menonaktifkan Identity Service GKE, jalankan perintah ini:
Update cluster ke versi 1.9.3 atau yang lebih baru, atau versi 1.10.1 atau
yang lebih baru, untuk mengupgrade versi Agen Connect.
Jaringan
1.10, 1.11, 1.12, 1.13
Cisco ACI tidak berfungsi dengan Direct Server Return (DSR)
Seesaw berjalan dalam mode DSR, dan secara default tidak berfungsi di Cisco ACI
karena pembelajaran IP bidang data.
Solusi:
Solusi yang mungkin adalah menonaktifkan pembelajaran IP dengan menambahkan alamat IP Seesaw sebagai IP Virtual L4-L7 di Cisco Application Policy Infrastructure Controller (APIC).
Anda dapat mengonfigurasi opsi IP Virtual L4-L7 dengan membuka Tenant >
Application Profiles > Application EPGs atau uSeg EPGs. Kegagalan
untuk menonaktifkan pembelajaran IP akan menyebabkan endpoint IP berpindah-pindah antara
lokasi yang berbeda di fabric Cisco API.
VMware
1.10, 1.11, 1.12, 1.13
Masalah vSphere 7.0 Update 3
VMWare baru-baru ini mengidentifikasi masalah kritis pada rilis vSphere 7.0 Update 3 berikut:
vSphere ESXi 7.0 Update 3 (build 18644231)
vSphere ESXi 7.0 Update 3a (build 18825058)
vSphere ESXi 7.0 Update 3b (build 18905247)
vSphere vCenter 7.0 Update 3b (build 18901211)
Solusi:
VMWare telah menghapus rilis ini. Anda harus mengupgrade
ESXi dan
Server vCenter ke versi yang lebih baru.
Sistem operasi
1.10, 1.11, 1.12, 1.13
Kegagalan untuk memasang volume emptyDir sebagai exec ke Pod yang berjalan
di node COS
Untuk Pod yang berjalan di node yang menggunakan image Container-Optimized OS (COS),
Anda tidak dapat memasang volume emptyDir sebagai exec. File ini akan di-mount sebagai
noexec dan Anda akan mendapatkan error berikut: exec user
process caused: permission denied. Misalnya, Anda akan melihat pesan error ini jika men-deploy Pod pengujian berikut:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: fix-cos-noexec
namespace: kube-system
spec:
selector:
matchLabels:
app: fix-cos-noexec
template:
metadata:
labels:
app: fix-cos-noexec
spec:
hostIPC: true
hostPID: true
containers:
- name: fix-cos-noexec
image: ubuntu
command: ["chroot", "/host", "bash", "-c"]
args:
- |
set -ex
while true; do
if ! $(nsenter -a -t 1 findmnt -l | grep -qe "^/var/lib/kubelet\s"); then
echo "remounting /var/lib/kubelet with exec"
nsenter -a -t 1 mount --bind /var/lib/kubelet /var/lib/kubelet
nsenter -a -t 1 mount -o remount,exec /var/lib/kubelet
fi
sleep 3600
done
volumeMounts:
- name: host
mountPath: /host
securityContext:
privileged: true
volumes:
- name: host
hostPath:
path: /
Upgrade, Update
1.10, 1.11, 1.12, 1.13
Pembaruan replika node pool cluster tidak berfungsi setelah penskalaan otomatis dinonaktifkan di node pool
Replika node pool tidak diupdate setelah penskalaan otomatis diaktifkan dan dinonaktifkan di node pool.
Solusi:
Menghapus anotasi
cluster.x-k8s.io/cluster-api-autoscaler-node-group-max-size
dan cluster.x-k8s.io/cluster-api-autoscaler-node-group-min-size
dari deployment mesin node pool yang sesuai.
Logging dan pemantauan
1.11, 1.12, 1.13
Dasbor pemantauan Windows menampilkan data dari cluster Linux
Mulai versi 1.11, di dasbor pemantauan siap pakai, dasbor status Pod Windows dan dasbor status node Windows juga menampilkan data dari cluster Linux. Hal ini karena metrik Pod dan node Windows
juga ditampilkan di cluster Linux.
Logging dan pemantauan
1.10, 1.11, 1.12
stackdriver-log-forwarder dalam CrashLoopBackOff konstan
Untuk Google Distributed Cloud versi 1.10, 1.11, dan 1.12, stackdriver-log-forwarder
DaemonSet mungkin mengalami error CrashLoopBackOff saat ada
log buffering yang rusak di disk.
Solusi:
Untuk memitigasi masalah ini, kita perlu membersihkan log yang dibuffer di node.
Untuk mencegah perilaku yang tidak terduga, skalakan
stackdriver-log-forwarder:
Untuk memastikan DaemonSet pembersihan telah membersihkan semua bagian,
Anda dapat menjalankan perintah berikut. Output dari kedua perintah tersebut
harus sama dengan nomor node Anda di cluster:
Kemungkinan kecepatan input log melebihi batas agen logging,
yang menyebabkan stackdriver-log-forwarder tidak mengirim log.
Masalah ini terjadi di semua versi Google Distributed Cloud.
Solusi:
Untuk memitigasi masalah ini, Anda perlu meningkatkan batas resource pada
agen logging.
Perintah ini akan menemukan cpu: 1200m jika hasil edit Anda telah diterapkan.
Keamanan
1.13
Layanan Kubelet akan tidak tersedia untuk sementara setelah NodeReady
ada periode singkat saat node siap, tetapi sertifikat server
kubelet belum siap. kubectl exec dan
kubectl logs tidak tersedia selama puluhan detik ini.
Hal ini karena perlu waktu bagi pemberi persetujuan sertifikat server baru untuk
melihat IP node yang valid dan diperbarui.
Masalah ini hanya memengaruhi sertifikat server kubelet, dan tidak akan memengaruhi
penjadwalan Pod.
Upgrade, Update
1.12
Upgrade cluster admin sebagian tidak memblokir upgrade cluster pengguna
berikutnya
Upgrade cluster pengguna gagal dengan:
.LBKind in body is required (Check the status of OnPremUserCluster 'cl-stg-gdl-gke-onprem-mgmt/cl-stg-gdl' and the logs of pod 'kube-system/onprem-user-cluster-controller' for more detailed debugging information.
Cluster admin tidak diupgrade sepenuhnya, dan versi statusnya masih 1.10. Upgrade cluster pengguna ke 1.12 tidak akan diblokir oleh pemeriksaan preflight, dan gagal dengan masalah kemiringan versi.
Solusi:
Selesaikan untuk mengupgrade cluster admin ke 1.11 terlebih dahulu, lalu upgrade
cluster pengguna ke 1.12.
Penyimpanan
1.10.0-1.10.5, 1.11.0-1.11.2, 1.12.0
Datastore salah melaporkan ruang kosong yang tidak memadai
Perintah gkectl diagnose cluster gagal dengan:
Checking VSphere Datastore FreeSpace...FAILURE
Reason: vCenter datastore: [DATASTORE_NAME] insufficient FreeSpace, requires at least [NUMBER] GB
Validasi ruang kosong datastore tidak boleh digunakan untuk node pool cluster yang ada, dan ditambahkan di gkectl diagnose cluster secara tidak sengaja.
Solusi:
Anda dapat mengabaikan pesan error atau melewati validasi menggunakan
--skip-validation-infra.
Operasi, Jaringan
1.11, 1.12.0-1.12.1
Kegagalan menambahkan cluster pengguna baru saat cluster admin menggunakan load balancer MetalLB
Anda mungkin tidak dapat menambahkan cluster pengguna baru jika cluster admin Anda
disiapkan dengan konfigurasi load balancer MetalLB.
Proses penghapusan cluster pengguna mungkin macet karena beberapa alasan yang
mengakibatkan pembatalan validasi ConfigMap MatalLB. Anda tidak akan dapat
menambahkan cluster pengguna baru dalam status ini.
Kegagalan saat menggunakan Container-Optimized OS (COS) untuk cluster pengguna
Jika osImageType menggunakan cos untuk cluster admin, dan saat gkectl check-config dijalankan setelah pembuatan cluster admin dan sebelum pembuatan cluster pengguna, gkectl check-config akan gagal di:
Failed to create the test VMs: VM failed to get IP addresses on the network.
VM pengujian yang dibuat untuk cluster pengguna check-config secara default menggunakan osImageType yang sama dari cluster admin, dan saat ini VM pengujian belum kompatibel dengan COS.
Solusi:
Untuk menghindari pemeriksaan pra-penerbangan yang lambat yang membuat VM pengujian, gunakan
gkectl check-config --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config
USER_CLUSTER_CONFIG --fast.
Logging dan pemantauan
1.12.0-1.12.1
Grafana di cluster admin tidak dapat menjangkau cluster pengguna
Masalah ini memengaruhi pelanggan yang menggunakan Grafana di cluster admin untuk
memantau cluster pengguna di Google Distributed Cloud versi 1.12.0 dan
1.12.1. Hal ini berasal dari ketidakcocokan sertifikat pushprox-client di cluster pengguna dan daftar yang diizinkan di pushprox-server di cluster admin.
Gejalanya adalah pushprox-client di cluster pengguna mencetak log error seperti
berikut:
Temukan baris principals untuk
pemroses external-pushprox-server-auth-proxy dan perbaiki
principal_name untuk semua cluster pengguna dengan menghapus
substring kube-system dari
pushprox-client.metrics-consumers.kube-system.cluster.
Konfigurasi baru akan terlihat seperti berikut:
Langkah-langkah sebelumnya akan menyelesaikan masalah. Setelah cluster
diupgrade ke 1.12.2 dan yang lebih baru tempat masalah diperbaiki, skalakan
operator pemantauan kube-system cluster admin sehingga dapat mengelola
pipeline lagi.
Cloud Audit Logs memerlukan penyiapan izin khusus yang saat ini hanya dilakukan secara otomatis untuk cluster pengguna melalui GKE Hub.
Sebaiknya miliki setidaknya satu cluster pengguna yang menggunakan project ID dan akun layanan yang sama dengan cluster admin untuk Log Audit Cloud sehingga cluster admin akan memiliki izin yang diperlukan.
Namun, jika cluster admin menggunakan project ID atau akun layanan yang berbeda dengan cluster pengguna, log audit dari cluster admin akan gagal dimasukkan ke dalam Google Cloud. Gejalanya adalah
serangkaian error Permission Denied di
Pod audit-proxy di cluster admin.
Bergantung pada responsnya, lakukan salah satu hal berikut:
Jika Anda menerima error 404 Not_found, artinya tidak ada akun layanan yang diizinkan untuk ID project ini. Anda dapat
mengizinkan akun layanan dengan mengaktifkan
fitur Hub cloudauditlogging:
Jika Anda menerima spesifikasi fitur yang berisi
"lifecycleState": "ENABLED" dengan "code":
"OK" dan daftar akun layanan di
allowlistedServiceAccounts, artinya ada akun layanan yang sudah ada dan diizinkan untuk project ini. Anda dapat menggunakan akun layanan dari daftar ini di cluster, atau menambahkan akun layanan baru ke daftar yang diizinkan:
Jika Anda menerima spesifikasi fitur yang berisi
"lifecycleState": "ENABLED" dengan "code":
"FAILED", artinya penyiapan izin tidak berhasil.
Coba atasi masalah di kolom description
respons, atau cadangkan daftar yang diizinkan saat ini, hapus
fitur hub cloudauditlogging, dan aktifkan kembali dengan mengikuti langkah 1
bagian ini lagi. Anda dapat menghapus fitur Hub cloudauditlogging dengan:
/var/log/audit/ diisi dengan log audit. Anda dapat memeriksa
penggunaan disk dengan menjalankan sudo du -h -d 1 /var/log/audit.
Perintah gkectl tertentu di workstation admin, misalnya, gkectl diagnose snapshot berkontribusi pada penggunaan ruang
disk.
Sejak Google Distributed Cloud v1.8, image Ubuntu di-harden dengan CIS Level 2 Benchmark. Dan salah satu aturan kepatuhan, "4.1.2.2 Memastikan log audit
tidak otomatis dihapus", memastikan setelan auditd
max_log_file_action = keep_logs. Hal ini menyebabkan semua
aturan audit disimpan di disk.
Setelan di atas akan membuat auditd secara otomatis merotasi lognya
setelah menghasilkan lebih dari 250 file (masing-masing dengan ukuran 8 M).
Node cluster
Untuk node cluster, upgrade ke 1.11.5+, 1.12.4+, 1.13.2+, atau 1.14+. Jika
Anda belum dapat mengupgrade ke versi tersebut, terapkan DaemonSet berikut ke cluster Anda:
apiVersion:apps/v1kind:DaemonSetmetadata:name:change-auditd-log-actionnamespace:kube-systemspec:selector:matchLabels:app:change-auditd-log-actiontemplate:metadata:labels:app:change-auditd-log-actionspec:hostIPC:truehostPID:truecontainers:-name:update-audit-ruleimage:ubuntucommand:["chroot","/host","bash","-c"]args:-|while true; doif $(grep -q "max_log_file_action = keep_logs" /etc/audit/auditd.conf); thenecho "updating auditd max_log_file_action to rotate with a max of 250 files"sed -i 's/max_log_file_action = keep_logs/max_log_file_action = rotate/g' /etc/audit/auditd.confsed -i 's/num_logs = .*/num_logs = 250/g' /etc/audit/auditd.confecho "restarting auditd"systemctl restart auditdelseecho "auditd setting is expected, skip update"fisleep 600donevolumeMounts:-name:hostmountPath:/hostsecurityContext:privileged:truevolumes:-name:hosthostPath:path:/
Perhatikan bahwa membuat perubahan konfigurasi auditd ini akan melanggar aturan CIS Level 2 "4.1.2.2 Pastikan log audit tidak otomatis dihapus".
Jaringan
1.10, 1.11.0-1.11.3, 1.12.0-1.12.2, 1.13.0
NetworkGatewayGroup IP mengambang bertentangan dengan alamat node
Pengguna tidak dapat membuat atau memperbarui objek NetworkGatewayGroup karena error webhook validasi berikut:
[1] admission webhook "vnetworkgatewaygroup.kb.io" denied the request: NetworkGatewayGroup.networking.gke.io "default" is invalid: [Spec.FloatingIPs: Invalid value: "10.0.0.100": IP address conflicts with node address with name: "my-node-name"
Pada versi yang terpengaruh, kubelet dapat salah mengikat ke alamat IP
mengambang yang ditetapkan ke node dan melaporkannya sebagai alamat node di
node.status.addresses. Webhook validasi memeriksa
alamat IP mengambang NetworkGatewayGroup terhadap semua
node.status.addresses di cluster dan menganggapnya sebagai
konflik.
Solusi:
Di cluster yang sama tempat pembuatan atau pembaruan objek NetworkGatewayGroup gagal, nonaktifkan sementara webhook validasi ANG dan kirimkan perubahan Anda:
Simpan konfigurasi webhook agar dapat dipulihkan pada akhirnya:
Hapus item vnetworkgatewaygroup.kb.io dari daftar konfigurasi webhook dan tutup untuk menerapkan perubahan.
Buat atau edit objek NetworkGatewayGroup.
Terapkan kembali konfigurasi webhook asli:
kubectl-nkube-systemapply-fwebhook-config.yaml
Jaringan
semua versi sebelum 1.14.7, 1.15.0-1.15.3, 1.16.0
Balasan GARP yang dikirim oleh Seesaw tidak menetapkan IP target
GARP (ARP Serampangan) berkala yang dikirim oleh Seesaw setiap 20 detik tidak menetapkan
IP target di header ARP. Beberapa jaringan mungkin tidak menerima paket tersebut (seperti Cisco ACI). Hal ini dapat menyebabkan waktu nonaktif layanan yang lebih lama setelah split brain (karena paket VRRP hilang) dipulihkan.
Solusi:
Picu failover Seesaw dengan menjalankan sudo seesaw -c failover di salah satu VM Seesaw. Tindakan ini akan
memulihkan traffic.
Sistem operasi
1.16, 1.28.0-1.28.200
Kubelet dibanjiri log yang menyatakan bahwa "/etc/kubernetes/manifests" tidak ada di node pekerja
"staticPodPath" salah ditetapkan untuk node pekerja
Solusi:
Buat folder "/etc/kubernetes/manifests" secara manual
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Sulit dipahami","hardToUnderstand","thumb-down"],["Informasi atau kode contoh salah","incorrectInformationOrSampleCode","thumb-down"],["Informasi/contoh yang saya butuhkan tidak ada","missingTheInformationSamplesINeed","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2025-02-28 UTC."],[],[]]