Halaman ini mencantumkan semua masalah umum Google Distributed Cloud Virtual untuk Bare Metal. Untuk memfilter masalah umum
menurut versi atau kategori produk, pilih filter Anda dari
menu drop-down berikut.
Pilih GDCV untuk versi Bare Metal Anda:
Pilih kategori masalah Anda:
Atau, telusuri masalah Anda:
Kategori
Versi yang diidentifikasi
Masalah dan solusi
Networking
1,15, 1,16
GKE Dataplane V2 tidak kompatibel dengan beberapa driver penyimpanan
GKE pada cluster Bare Metal menggunakan GKE Dataplane V2, yang tidak kompatibel dengan beberapa penyedia penyimpanan. Anda mungkin mengalami
masalah dengan volume NFS atau Pod yang macet. Hal ini sangat mungkin terjadi jika Anda memiliki workload yang menggunakan volume ReadWriteMany yang didukung oleh driver penyimpanan yang rentan terhadap masalah ini:
Robin.io
Portworx (sharedv4 volume layanan)
csi-nfs
Ini bukan merupakan daftar lengkap.
Solusi
Perbaikan untuk masalah ini tersedia untuk versi Ubuntu berikut:
LTS 20.04: Gunakan image kernel 5.4.0 yang lebih baru dari
linux-image-5.4.0-166-generic
LTS 22.04: Gunakan image kernel 5.15.0 yang lebih baru dari
linux-image-5.15.0-88-generic atau gunakan kernel HWE 6.5.
Jika Anda tidak menggunakan salah satu versi ini, hubungi
Dukungan Google.
Logging dan pemantauan
1,15, 1,16, 1,28
kube-state-metrics OOM di cluster besar
Anda mungkin melihat bahwa Pod kube-state-metrics atau
gke-metrics-agent yang ada di node yang sama dengan
kube-state-metrics kehabisan memori (OOM).
Hal ini dapat terjadi dalam cluster dengan lebih dari 50 node atau dengan banyak objek Kubernetes.
Solusi
Untuk mengatasi masalah ini, perbarui definisi resource kustom stackdriver untuk menggunakan gate fitur ksmNodePodMetricsOnly. Gate fitur ini memastikan bahwa hanya sejumlah kecil metrik penting yang terekspos.
Untuk menggunakan solusi ini, selesaikan langkah-langkah berikut:
Periksa definisi resource kustom stackdriver untuk
gerbang fitur yang tersedia:
Pemeriksaan preflight gagal pada RHEL 9.2 karena iptable tidak ada
Saat menginstal cluster di sistem operasi Red Hat Enterprise Linux (RHEL) 9.2, Anda mungkin mengalami kegagalan karena tidak adanya paket iptables. Kegagalan terjadi selama pemeriksaan preflight dan memicu pesan error yang mirip dengan yang berikut:
'check_package_availability_pass': "The following packages are not available: ['iptables']"
RHEL 9.2 berada dalam Pratinjau
untuk GKE on Bare Metal versi 1.28.
Solusi
Abaikan error pemeriksaan preflight dengan menetapkan
spec.bypassPreflightCheck ke true pada
resource Cluster Anda.
Operasi
1,10, 1,11, 1,12, 1,13, 1,14, 1,15, 1,16
Failover MetalLB lambat dalam skala tinggi
Saat MetalLB menangani layanan dalam jumlah besar (lebih dari 10.000), failover dapat memerlukan waktu lebih dari satu jam. Hal ini terjadi karena MetalLB menggunakan antrean pembatasan kapasitas, yang jika berskala tinggi, dapat memerlukan waktu cukup lama untuk mengakses layanan yang perlu digagalkan.
Solusi
Upgrade cluster Anda ke versi 1.28 atau yang lebih baru. Jika Anda tidak dapat
mengupgrade, mengedit layanan secara manual (misalnya, menambahkan
anotasi) akan menyebabkan layanan failover lebih cepat.
Operasi
1.16.0-1.16.6, 1.28.0-1.28.200
Variabel lingkungan harus ditetapkan di workstation admin jika proxy diaktifkan
bmctl check cluster dapat gagal karena kegagalan proxy jika Anda tidak memiliki variabel lingkungan HTTPS_PROXY dan NO_PROXY yang ditentukan di workstation admin. Perintah bmctl melaporkan pesan error tentang kegagalan memanggil beberapa layanan Google, seperti contoh berikut:
Tetapkan HTTPS_PROXY dan NO_PROXY secara manual di workstation admin.
Upgrade dan update
1.28.0-gke.435
Upgrade ke versi 1.28.0-gke.435 mungkin gagal jika audit.log memiliki kepemilikan yang salah
Dalam beberapa kasus, file /var/log/apiserver/audit.log pada node bidang kontrol memiliki kepemilikan grup dan pengguna yang ditetapkan ke root.
Setelan kepemilikan file ini menyebabkan kegagalan upgrade untuk node bidang kontrol saat mengupgrade cluster dari versi 1.16.x ke versi 1.28.0-gke.435.
Masalah ini hanya berlaku untuk cluster yang dibuat sebelum versi 1.11 dan yang telah menonaktifkan Cloud Audit Logs. Cloud Audit Logs diaktifkan secara default untuk cluster pada versi 1.9 dan yang lebih tinggi.
Solusi
Jika Anda tidak dapat mengupgrade cluster ke versi 1.28.100-gke.146,
gunakan langkah-langkah berikut sebagai solusi untuk menyelesaikan upgrade cluster Anda
ke versi 1.28.0-gke.435:
Jika Cloud Audit Logs diaktifkan, hapus file /var/log/apiserver/audit.log.
Jika Cloud Audit Logs dinonaktifkan, ubah kepemilikan /var/log/apiserver/audit.log agar sama dengan direktori induk, /var/log/apiserver.
Networking, Upgrade, dan update
1.28.0-gke.435
MetalLB tidak menetapkan alamat IP ke Layanan VIP
GKE di Bare Metal menggunakan MetalLB untuk load balancing yang dipaketkan. Pada GKE on Bare Metal rilis 1.28.0-gke.435, MetalLB yang dipaketkan diupgrade ke versi 0.13, yang memperkenalkan dukungan CRD untuk IPAddressPools. Namun, karena ConfigMaps mengizinkan nama untuk IPAddressPool, nama kumpulan tersebut harus dikonversi menjadi nama yang sesuai dengan Kubernetes dengan menambahkan hash ke akhir nama IPAddressPool.
Misalnya, IPAddressPool dengan nama default
akan dikonversi menjadi nama seperti default-qpvpd saat Anda mengupgrade
cluster ke versi 1.28.0-gke.435.
Karena MetalLB memerlukan nama IPPool yang spesifik untuk dipilih, konversi nama ini mencegah MetalLB membuat pilihan kumpulan dan menetapkan alamat IP. Oleh karena itu, Layanan yang menggunakan metallb.universe.tf/address-pool sebagai anotasi untuk memilih kumpulan alamat untuk alamat IP tidak lagi menerima alamat IP dari pengontrol MetalLB.
Masalah ini telah diperbaiki di GKE pada Bare Metal versi 1.28.100-gke.146.
Solusi
Jika Anda tidak dapat mengupgrade cluster ke versi 1.28.100-gke.146, gunakan
langkah-langkah berikut sebagai solusi:
Dapatkan nama IPAddressPool yang dikonversi:
kubectl get IPAddressPools -n kube-system
Update Layanan yang terpengaruh untuk menetapkan anotasi metallb.universe.tf/address-pool
ke nama yang dikonversi dengan hash.
Misalnya, jika nama IPAddressPool dikonversi dari
default menjadi nama seperti default-qpvpd, ubah
anotasi metallb.universe.tf/address-pool: default
di Layanan menjadi metallb.universe.tf/address-pool: default-qpvpd.
Hash yang digunakan dalam konversi nama bersifat deterministik, sehingga
solusinya tetap ada.
Upgrade dan update
1,14
Pod orphan setelah diupgrade ke versi 1.14.x
Saat Anda mengupgrade GKE pada cluster Bare Metal ke versi 1.14.x, beberapa resource dari versi sebelumnya tidak akan dihapus. Secara khusus, Anda mungkin melihat kumpulan pod usang seperti berikut ini:
Masalah ini telah diperbaiki di GKE pada Bare Metal versi 1.15.0 dan yang lebih baru.
Penginstalan
1,14
Pembuatan cluster macet pada tugas machine-init
Jika mencoba menginstal Google Distributed Cloud Virtual for Bare Metal versi 1.14.x, Anda mungkin
akan mengalami kegagalan karena tugas machine-init, mirip dengan
contoh output berikut:
"kubeadm join" task failed due to:
error execution phase control-plane-join/etcd: error creating local etcd static pod manifest file: etcdserver: re-configuration failed due to not enough started members
"kubeadm reset" task failed due to:
panic: runtime error: invalid memory address or nil pointer dereference
Solusi:
Hapus anggota etcd yang sudah tidak digunakan lagi dan menyebabkan
tugas machine-init gagal. Selesaikan langkah-langkah berikut pada node bidang kontrol yang berfungsi:
Cantumkan anggota etcd yang sudah ada:
etcdctl --key=/etc/kubernetes/pki/etcd/peer.key \
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/etcd/peer.crt \
member list
Cari anggota dengan status unstarted, seperti ditunjukkan dalam
contoh output berikut:
etcdctl --key=/etc/kubernetes/pki/etcd/peer.key \
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/etcd/peer.crt \
member remove MEMBER_ID
Ganti MEMBER_ID dengan ID anggota etcd yang gagal. Dalam contoh output sebelumnya, ID ini adalah
bd1949bcb70e2cb5.
Contoh output berikut menunjukkan bahwa anggota telah dihapus:
Member bd1949bcb70e2cb5 removed from cluster 9d70e2a69debf2f
Networking
1.28.0
Cilium-operator tidak memiliki izin list dan
watch Node
Di Cilium 1.13, izin ClusterRole cilium-operator salah. Izin list dan
watch Node tidak ada. cilium-operator
gagal memulai pembersih sampah memori, yang
mengakibatkan masalah berikut:
Kebocoran resource Cilium.
Identitas usang tidak dihapus dari peta kebijakan BFP.
Peta kebijakan mungkin mencapai batas 16K.
Entri baru tidak dapat ditambahkan.
Penerapan NetworkPolicy salah.
Identitas mungkin mencapai batas 64K.
Pod baru tidak dapat dibuat.
Operator yang tidak memiliki izin Node melaporkan
contoh pesan log berikut:
2024-01-02T20:41:37.742276761Z level=error msg=k8sError error="github.com/cilium/cilium/operator/watchers/node.go:83: Failed to watch *v1.Node: failed to list *v1.Node: nodes is forbidden: User \"system:serviceaccount:kube-system:cilium-operator\" cannot list resource \"nodes\" in API group \"\" at the cluster scope" subsys=k8s
Agen Cilium melaporkan pesan error jika tidak dapat memasukkan entri ke peta kebijakan, seperti contoh berikut:
level=error msg="Failed to add PolicyMap key" bpfMapKey="{6572100 0 0 0}" containerID= datapathPolicyRevision=0 desiredPolicyRevision=7 endpointID=1313 error="Unable to update element for Cilium_policy_01313 map with file descriptor 190: the map is full, please consider resizing it. argument list too long" identity=128 ipv4= ipv6= k8sPodName=/ port=0 subsys=endpoint
Solusi:
Hapus identitas Cilium, lalu tambahkan izin ClusterRole yang hilang ke operator:
Hapus objek CiliumIdentity yang sudah ada:
kubectl delete ciliumid –-all
Edit objek ClusterRole cilium-operator:
kubectl edit clusterrole cilium-operator
Tambahkan bagian untuk nodes yang menyertakan izin yang tidak ada, seperti yang ditunjukkan dalam contoh berikut:
- apiGroups:
- ""
resources:
- nodes
verbs:
- get
- list
- watch
Simpan dan tutup editor. Operator secara dinamis mendeteksi perubahan izin. Anda tidak perlu memulai ulang operator secara manual.
Upgrade dan update
1.15.0-1.15.7, 1.16.0-1.16.3
Masalah sementara yang terjadi selama pemeriksaan preflight
Salah satu tugas health check kubeadm yang berjalan selama pemeriksaan preflight upgrade mungkin gagal dengan pesan error berikut:
[ERROR CreateJob]: could not delete Job \"upgrade-health-check\" in the namespace \"kube-system\": jobs.batch \"upgrade-health-check\" not found
Error ini dapat diabaikan dengan aman. Jika Anda mengalami error ini yang memblokir upgrade, jalankan kembali perintah upgrade.
Jika Anda melihat error ini saat menjalankan preflight menggunakan
perintah bmctl preflightcheck, tidak ada yang diblokir oleh
kegagalan ini. Anda dapat menjalankan pemeriksaan preflight lagi untuk mendapatkan
informasi preflight yang akurat.
Solusi:
Jalankan kembali perintah upgrade, atau jika ditemukan selama
bmctl preflightcheck, jalankan kembali perintah
preflightcheck.
Operasi
1.14, 1.15.0-1.15.7, 1.16.0-1.16.3, 1.28.0
Health check Jaringan berkala gagal saat node diganti atau dihapus
Masalah ini memengaruhi cluster yang melakukan health check jaringan secara berkala
setelah node diganti atau dihapus. Jika cluster Anda menjalani health check berkala, health check jaringan berkala akan mengakibatkan kegagalan setelah penggantian atau penghapusan node, karena ConfigMap inventaris jaringan tidak diperbarui setelah dibuat.
Solusi:
Solusi yang direkomendasikan adalah menghapus inventaris ConfigMap dan health check jaringan berkala. Operator cluster akan otomatis membuatnya kembali dengan informasi terbaru.
Gateway Jaringan untuk GDC tidak dapat menerapkan konfigurasi Anda jika nama perangkat berisi titik
Jika Anda memiliki perangkat jaringan yang menyertakan karakter titik
(.) pada namanya, seperti bond0.2,
Gateway Jaringan untuk GDC memperlakukan periode tersebut sebagai jalur dalam
direktori ketika menjalankan sysctl untuk melakukan perubahan. Saat
Gateway Jaringan untuk GDC memeriksa apakah deteksi alamat duplikat
(DAD) diaktifkan, pemeriksaan mungkin akan gagal, sehingga tidak akan melakukan rekonsiliasi.
Perilaku ini berbeda di setiap versi cluster:
1.14 dan 1.15: Error ini hanya ada jika Anda menggunakan alamat IP mengambang IPv6. Jika tidak menggunakan alamat IP mengambang IPv6, Anda tidak akan melihat masalah ini saat nama perangkat berisi titik.
1.16.0 - 1.16.2: Error ini selalu ada jika nama
perangkat berisi titik.
Solusi:
Upgrade cluster Anda ke versi 1.16.3 atau yang lebih baru.
Sebagai solusi hingga Anda dapat mengupgrade cluster, hapus titik (.) dari nama perangkat.
Upgrade dan update, Jaringan, Keamanan
1.16.0
Upgrade ke 1.16.0 gagal saat seccomp dinonaktifkan
Jika seccomp dinonaktifkan untuk cluster Anda
(spec.clusterSecurity.enableSeccomp ditetapkan ke false),
upgrade ke versi 1.16.0 akan gagal.
GKE pada Bare Metal versi 1.16 menggunakan Kubernetes versi 1.27.
Pada Kubernetes versi 1.27.0 dan yang lebih baru, fitur untuk menetapkan profil seccomp bersifat GA dan tidak lagi menggunakan gate fitur.
Perubahan Kubernetes ini menyebabkan upgrade ke versi 1.16.0 gagal saat
seccomp dinonaktifkan dalam konfigurasi cluster. Masalah ini
telah diperbaiki pada cluster versi 1.16.1 dan yang lebih tinggi. Jika Anda
memiliki kolom cluster.spec.clusterSecurity.enableSeccomp yang ditetapkan
ke false, Anda dapat mengupgrade ke versi 1.16.1 atau yang lebih tinggi.
Cluster dengan spec.clusterSecurity.enableSeccomp yang tidak disetel atau
ditetapkan ke true tidak akan terpengaruh.
metadata dalam container mungkin rusak setelah dimulai ulang saat /var/lib/containerd dipasang
Jika Anda telah memasang /var/lib/containerd secara opsional, metadata dalam container mungkin akan rusak setelah dimulai ulang. Metadata yang rusak dapat menyebabkan Pod gagal, termasuk Pod yang penting bagi sistem.
Untuk memeriksa apakah masalah ini memengaruhi Anda, lihat apakah pemasangan opsional ditentukan dalam /etc/fstab untuk /var/lib/containerd/ dan memiliki nofail di opsi pemasangan.
Solusi:
Hapus opsi pemasangan nofail di /etc/fstab,
atau upgrade cluster Anda ke versi 1.15.6 atau yang lebih baru.
Operasi
1,13, 1,14, 1,15, 1,16, 1,28
Membersihkan Pod yang sudah tidak berlaku di cluster
Anda mungkin melihat Pod yang dikelola oleh Deployment (ReplicaSet) dalam status Failed dan dengan status TaintToleration. Pod ini tidak menggunakan resource cluster, tetapi harus dihapus.
Anda dapat menggunakan perintah kubectl berikut untuk membuat daftar Pod yang dapat dibersihkan:
kubectl get pods –A | grep TaintToleration
Contoh output berikut menunjukkan Pod dengan status TaintToleration:
Untuk setiap Pod dengan gejala yang dijelaskan, periksa ReplicaSet tempat Pod tersebut berada. Jika ReplicaSet terpenuhi, Anda dapat menghapus Pod:
Dapatkan ReplicaSet yang mengelola Pod dan temukan nilai ownerRef.Kind:
kubectl get pod POD_NAME -n NAMESPACE -o yaml
Dapatkan ReplicaSet dan verifikasi bahwa status.replicas sama dengan spec.replicas:
kubectl get replicaset REPLICA_NAME -n NAMESPACE -o yaml
Jika namanya cocok, hapus Pod tersebut:
kubectl delete pod POD_NAME -n NAMESPACE.
Upgrade
1.16.0
etcd-events dapat berhenti saat meningkatkan ke versi 1.16.0
Saat Anda mengupgrade cluster yang ada ke versi 1.16.0, kegagalan Pod
yang terkait dengan peristiwa etcd dapat menghentikan operasi. Secara khusus, tugas upgrade node gagal untuk langkah TASK [etcd_events_install : Run etcdevents].
Jika terpengaruh oleh masalah ini, Anda akan melihat kegagalan Pod seperti berikut:
Pod kube-apiserver gagal dimulai dengan error berikut:
Error ini menunjukkan peristiwa penggusuran atau ketidakmampuan untuk menjadwalkan Pod
karena resource node. Karena Network Gateway untuk Pod GDC tidak memiliki
PriorityClass, pod memiliki prioritas default yang sama dengan workload lainnya.
Jika node memiliki resource yang terbatas, Pod gateway jaringan mungkin akan dikeluarkan. Perilaku ini sangat buruk untuk DaemonSet ang-node, karena Pod tersebut harus dijadwalkan pada node tertentu dan tidak dapat dimigrasikan.
Solusi:
Upgrade ke versi 1.15 atau yang lebih baru.
Sebagai perbaikan jangka pendek, Anda dapat menetapkan
PriorityClass
secara manual ke Gateway Jaringan untuk komponen GDC. Pengontrol GKE pada Bare Metal akan menimpa perubahan manual ini selama proses rekonsiliasi, seperti saat mengupgrade cluster.
Tetapkan PriorityClass system-cluster-critical ke Deployment pengontrol cluster ang-controller-manager dan autoscaler.
Tetapkan PriorityClass system-node-critical ke node
ang-daemon DaemonSet.
Penginstalan, Upgrade, dan update
1.15.0, 1.15.1, 1.15.2
Pembuatan dan upgrade cluster gagal karena panjang nama cluster
Pembuatan cluster versi 1.15.0, 1.15.1, atau 1.15.2 atau mengupgrade
cluster ke versi 1.15.0, 1.15.1, atau 1.15.2 akan gagal jika nama cluster
lebih dari 48 karakter (versi 1.15.0) atau 45 karakter (versi
1.15.1 atau ). Selama proses pembuatan dan upgrade cluster, GKE di Bare Metal membuat resource health check dengan nama yang menggabungkan nama dan versi cluster:
Untuk cluster versi 1.15.0, nama resource health check adalah
CLUSTER_NAME-add-ons-CLUSTER_VER.
Untuk cluster versi 1.15.1 atau 1.15.2, nama resource health check adalah
CLUSTER_NAME-kubernetes-CLUSTER_VER.
Untuk nama cluster yang panjang, nama resource health check melebihi batasan panjang karakter Kubernetes 63 untuk nama label, yang mencegah pembuatan resource health check.
Jika health check tidak berhasil, operasi cluster akan gagal.
Untuk melihat apakah Anda terpengaruh oleh masalah ini, gunakan kubectl describe
untuk memeriksa resource yang gagal:
Jika masalah ini memengaruhi Anda, respons akan berisi peringatan untuk
ReconcileError seperti berikut:
...
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning ReconcileError 77s (x15 over 2m39s) healthcheck-controller Reconcile error, retrying: 1 error occurred:
* failed to create job for health check
db-uat-mfd7-fic-hybrid-cloud-uk-wdc-cluster-02-kubernetes-1.15.1: Job.batch
"bm-system-db-uat-mfd7-fic-hybrid-cloud-u24d5f180362cffa4a743" is invalid: [metadata.labels: Invalid
value: "db-uat-mfd7-fic-hybrid-cloud-uk-wdc-cluster-02-kubernetes-1.15.1": must be no more than 63
characters, spec.template.labels: Invalid value:
"db-uat-mfd7-fic-hybrid-cloud-uk-wdc-cluster-02-kubernetes-1.15.1": must be no more than 63 characters]
Solusi
Untuk berhenti memblokir upgrade atau pembuatan cluster, Anda dapat mengabaikan health check. Gunakan perintah berikut untuk membuat patch pada resource kustom healthcheck dengan status penerusan: (status: {pass: true})
Cluster versi 1.14.0 dan 1.14.1 dengan fitur pratinjau tidak dapat diupgrade ke versi 1.15.x
Jika cluster versi 1.14.0 dan 1.14.1 mengaktifkan fitur pratinjau,
cluster akan diblokir agar tidak berhasil mengupgrade ke versi 1.15.x. Hal ini berlaku untuk melihat pratinjau fitur seperti kemampuan untuk membuat cluster tanpa kube-proxy, yang diaktifkan dengan anotasi berikut di file konfigurasi cluster:
Jika terpengaruh oleh masalah ini, Anda akan mendapatkan error seperti berikut selama melakukan upgrade cluster:
[2023-06-20 23:37:47+0000] error judging if the cluster is managing itself:
error to parse the target cluster: error parsing cluster config: 1 error
occurred:
Cluster.baremetal.cluster.gke.io "$cluster-name" is invalid:
Annotations[preview.baremetal.cluster.gke.io/$preview-feature-name]:
Forbidden: preview.baremetal.cluster.gke.io/$preview-feature-name feature
isn't supported in 1.15.1 Anthos Bare Metal version
Masalah ini telah diperbaiki pada cluster versi 1.14.2 dan yang lebih tinggi.
Solusi:
Jika tidak dapat mengupgrade cluster ke versi 1.14.2 atau yang lebih tinggi
sebelum mengupgrade ke versi 1.15.x, Anda dapat mengupgrade ke versi 1.15.x
secara langsung menggunakan cluster bootstrap:
bmctl upgrade cluster --use-bootstrap=true
Operasi
1.15
Cluster versi 1.15 tidak menerima alamat IP mengambang duplikat
Gateway Jaringan untuk GDC tidak mengizinkan Anda membuat resource kustom NetworkGatewayGroup baru yang berisi alamat IP di spec.floatingIPs yang sudah digunakan dalam resource kustom NetworkGatewayGroup yang ada. Aturan ini diterapkan oleh webhook di GKE pada cluster Bare Metal versi 1.15.0 dan yang lebih tinggi. Alamat IP mengambang duplikat yang sudah ada
tidak akan menyebabkan error. Webhook hanya mencegah pembuatan resource khusus NetworkGatewayGroups baru yang berisi alamat IP duplikat.
Pesan error webhook mengidentifikasi alamat IP yang bertentangan dan resource kustom yang ada yang sudah menggunakannya:
IP address exists in other gateway with name default
Dokumentasi awal untuk fitur jaringan lanjutan, seperti gateway NAT keluar, tidak melarang alamat IP duplikat.
Awalnya, hanya resource NetworkGatewayGroup bernama default yang dikenali oleh rekonsiler. Gateway Jaringan untuk GDC kini mengenali semua resource kustom NetworkGatewayGroup dalam namespace sistem. Resource kustom NetworkGatewayGroup
yang ada akan diberlakukan, sebagaimana adanya.
Solusi:
Error terjadi hanya untuk pembuatan resource kustom NetworkGatewayGroup baru.
Untuk mengatasi error tersebut:
Gunakan perintah berikut untuk menampilkan resource kustom NetworkGatewayGroups:
kubectl get NetworkGatewayGroups --kubeconfig ADMIN_KUBECONFIG \
-n kube-system -o yaml
Buka resource kustom NetworkGatewayGroup yang ada dan hapus semua alamat IP floating yang bertentangan (spec.floatingIPs):
Untuk menerapkan perubahan, tutup dan simpan fasilitas kustom yang telah diedit.
Runtime VM di GDC
1.13.7
VM mungkin tidak dimulai pada cluster 1.13.7 yang menggunakan registry pribadi
Saat Anda mengaktifkan VM Runtime di GDC pada cluster versi 1.13.7 baru atau yang telah diupgrade yang menggunakan registry pribadi, VM yang terhubung ke jaringan node atau menggunakan GPU mungkin tidak dimulai dengan benar. Masalah ini disebabkan oleh beberapa Pod sistem di namespace vm-system yang mengalami error penarikan image. Misalnya, jika VM Anda menggunakan jaringan node, beberapa Pod mungkin
melaporkan error pull image seperti berikut:
macvtap-4x9zp 0/1 Init:ImagePullBackOff 0 70m
Masalah ini telah diperbaiki pada GKE versi 1.14.0 dan yang lebih tinggi pada cluster Bare Metal.
Solusi
Jika tidak dapat segera mengupgrade cluster, Anda dapat menarik gambar secara manual. Perintah berikut mengambil image plugin macvtap CNI untuk VM Anda, lalu mengirimkannya ke registry pribadi:
Ganti REG_HOST dengan nama domain host yang Anda duplikasi secara lokal.
Penginstalan
1,11, 1,12
Selama pembuatan cluster di cluster jenis, pod gke-metric-agent gagal dimulai
Selama pembuatan cluster di cluster jenis, pod gke-metrics-agent gagal dimulai karena terjadi error pengambilan gambar sebagai berikut:
error="failed to pull and unpack image \"gcr.io/gke-on-prem-staging/gke-metrics-agent:1.8.3-anthos.2\": failed to resolve reference \"gcr.io/gke-on-prem-staging/gke-metrics-agent:1.8.3-anthos.2\": pulling from host gcr.io failed with status code [manifests 1.8.3-anthos.2]: 403 Forbidden"
Selain itu, dalam log container cluster bootstrap, Anda akan melihat entri berikut:
Sep 13 23:54:20 bmctl-control-plane containerd[198]: time="2022-09-13T23:54:20.378172743Z" level=info msg="PullImage \"gcr.io/gke-on-prem-staging/gke-metrics-agent:1.8.3-anthos.2\" " Sep 13 23:54:21 bmctl-control-plane containerd[198]: time="2022-09-13T23:54:21.057247258Z" level=error msg="PullImage \"gcr.io/gke-on-prem-staging/gke-metrics-agent:1.8.3-anthos.2\" failed" error="failed to pull and unpack image \"gcr.io/gke-on-prem-staging/gke-metrics-agent:1.8.3-anthos.2\": failed to resolve reference \"gcr.io/gke-on-prem-staging/gke-metrics-agent:1.8.3-anthos.2\": pulling from host gcr.io failed with status code [manifests 1.8.3-anthos.2]: 403 Forbidden"
Anda akan melihat error "gagal menarik" berikut dalam pod:
gcr.io/gke-on-prem-staging/gke-metrics-agent
Solusi
Meskipun terjadi error, proses pembuatan cluster tidak diblokir karena tujuan pod gke-metrics-agent dalam jenis cluster adalah untuk memfasilitasi tingkat keberhasilan pembuatan cluster serta untuk pelacakan dan pemantauan internal.
Oleh karena itu, Anda dapat mengabaikan error ini.
Solusi
Meskipun terjadi error, proses pembuatan cluster tidak diblokir karena tujuan pod gke-metrics-agent dalam jenis cluster adalah untuk memfasilitasi tingkat keberhasilan pembuatan cluster serta untuk pelacakan dan pemantauan internal.
Oleh karena itu, Anda dapat mengabaikan error ini.
Operasi, Jaringan
1,12, 1,13, 1,14, 1,15, 1,16, 1,28
Mengakses endpoint Layanan IPv6 akan membuat error LoadBalancer Node pada CentOS atau RHEL
Saat Anda mengakses Layanan dual-stack (Layanan yang memiliki endpoint IPv4 dan
IPv6) dan menggunakan endpoint IPv6, LoadBalancer Node yang
menyalurkan Layanan mungkin mengalami error. Masalah ini memengaruhi pelanggan yang menggunakan
layanan dual stack dengan CentOS atau RHEL dan versi kernel lebih lama dari
kernel-4.18.0-372.46.1.el8_6.
Jika Anda yakin masalah ini memengaruhi Anda, periksa versi kernel di
LoadBalancer Node menggunakan perintah uname -a.
Solusi:
Update LoadBalancer Node ke versi kernel kernel-4.18.0-372.46.1.el8_6 atau yang lebih baru. Versi kernel ini tersedia secara default di CentOS serta RHEL versi 8.6 dan yang lebih baru.
Networking
1.11, 1.12, 1.13, 1.14.0
Masalah konektivitas sesekali setelah Node dimulai ulang
Setelah memulai ulang Node, Anda mungkin mengalami masalah konektivitas
yang terputus-putus untuk Layanan NodePort atau LoadBalancer. Misalnya, Anda mungkin mengalami error handshake TLS atau reset koneksi sesekali. Masalah ini
telah diperbaiki untuk cluster versi 1.14.1 dan yang lebih tinggi.
Untuk memeriksa apakah masalah ini memengaruhi Anda atau tidak, lihat aturan penerusan iptables di Node tempat Pod backend untuk Service yang terpengaruh dijalankan:
sudo iptables -L FORWARD
Jika Anda melihat aturan KUBE-FORWARD sebelum aturan CILIUM_FORWARD di iptables, Anda mungkin terpengaruh oleh masalah ini. Contoh output berikut menunjukkan Node tempat masalah terjadi:
Chain FORWARD (policy ACCEPT)
target prot opt source destination
KUBE-FORWARD all -- anywhere anywhere /* kubernetes forwarding rules */
KUBE-SERVICES all -- anywhere anywhere ctstate NEW /* kubernetes service portals */
KUBE-EXTERNAL-SERVICES all -- anywhere anywhere ctstate NEW /* kubernetes externally-visible service portals */
CILIUM_FORWARD all -- anywhere anywhere /* cilium-feeder: CILIUM_FORWARD */
Solusi:
Mulai ulang Pod anetd pada Node yang tidak dikonfigurasi dengan benar. Setelah Anda memulai ulang Pod yang di-anetd, aturan penerusan di iptables akan dikonfigurasi dengan benar.
Contoh output berikut menunjukkan bahwa aturan CILIUM_FORWARD
sekarang dikonfigurasi dengan benar sebelum aturan
KUBE-FORWARD:
Chain FORWARD (policy ACCEPT)
target prot opt source destination
CILIUM_FORWARD all -- anywhere anywhere /* cilium-feeder: CILIUM_FORWARD */
KUBE-FORWARD all -- anywhere anywhere /* kubernetes forwarding rules */
KUBE-SERVICES all -- anywhere anywhere ctstate NEW /* kubernetes service portals */
KUBE-EXTERNAL-SERVICES all -- anywhere anywhere ctstate NEW /* kubernetes externally-visible service portals */
Upgrade dan update
1,9, 1,10
Fitur pratinjau tidak mempertahankan izin asli dan informasi
pemilik
Fitur pratinjau cluster 1.9.x yang menggunakan bmctl 1.9.x tidak mempertahankan
izin asli dan informasi pemilik. Untuk memverifikasi apakah Anda terpengaruh oleh fitur ini, ekstrak file yang dicadangkan menggunakan perintah berikut:
tar -xzvf BACKUP_FILE
Solusi
Verifikasi apakah metadata.json ada dan apakah bmctlVersion adalah 1.9.x. Jika metadata.json tidak ada, upgrade ke cluster 1.10.x dan gunakan bmctl 1.10.x untuk mencadangkan/memulihkan.
Upgrade dan pembuatan
1.14.2
clientconfig-operator terjebak dalam status tertunda dengan CreateContainerConfigError
Jika telah mengupgrade ke atau membuat cluster versi 1.14.2 dengan konfigurasi OIDC/LDAP, Anda mungkin melihat Pod clientconfig-operator macet
dalam status tertunda. Dengan masalah ini, ada dua Pod clientconfig-operator, dengan satu dalam status berjalan dan yang lainnya dalam status tertunda.
Masalah ini hanya berlaku untuk cluster versi 1.14.2. Versi cluster sebelumnya seperti 1.14.0 dan 1.14.1 tidak akan terpengaruh. Masalah ini telah diperbaiki dalam
versi 1.14.3 dan semua rilis berikutnya, termasuk 1.15.0 dan yang lebih baru.
Solusi:
Sebagai solusinya, Anda dapat mem-patch deployment clientconfig-operator untuk menambahkan konteks keamanan tambahan dan memastikan bahwa deployment tersebut siap.
Gunakan perintah berikut untuk mem-patch clientconfig-operator di cluster target:
CLUSTER_KUBECONFIG: jalur file kubeconfig
untuk cluster target.
Operasi
1,11, 1,12, 1,13, 1,14, 1,15
Rotasi certificate authority gagal untuk cluster tanpa load balancing yang dipaketkan
Untuk cluster tanpa load balancing yang dipaketkan (spec.loadBalancer.mode ditetapkan ke manual), perintah bmctl update credentials certificate-authorities rotate dapat menjadi tidak responsif dan gagal dengan error berikut: x509: certificate signed by unknown authority.
Jika Anda terpengaruh oleh masalah ini, perintah bmctl mungkin
menampilkan pesan berikut sebelum tidak responsif:
Signing CA completed in 3/0 control-plane nodes
Dalam hal ini, perintah pada akhirnya gagal. Log rotasi certificate-authority
untuk cluster dengan tiga bidang kontrol dapat menyertakan entri seperti
berikut:
[2023-06-14 22:33:17+0000] waiting for all nodes to trust CA bundle OK
[2023-06-14 22:41:27+0000] waiting for first round of pod restart to complete OK
Signing CA completed in 0/0 control-plane nodes
Signing CA completed in 1/0 control-plane nodes
Signing CA completed in 2/0 control-plane nodes
Signing CA completed in 3/0 control-plane nodes
...
Unable to connect to the server: x509: certificate signed by unknown
authority (possibly because of "crypto/rsa: verification error" while
trying to verify candidate authority certificate "kubernetes")
Solusi
Jika Anda memerlukan bantuan tambahan, hubungi
Dukungan Google.
Penginstalan, Jaringan
1.11, 1.12, 1.13, 1.14.0-1.14.1
ipam-controller-manager errorloop dalam cluster
dual-stack
Saat Anda men-deploy cluster dual stack (cluster dengan alamat IPv4 dan IPv6), Pod ipam-controller-manager mungkin mengalami errorloop. Perilaku ini menyebabkan Node berputar di antara status Ready dan NotReady, serta dapat menyebabkan kegagalan penginstalan cluster. Masalah ini dapat terjadi saat server API
kelebihan beban.
Untuk melihat apakah masalah ini memengaruhi Anda, periksa apakah
Pod ipam-controller-manager gagal dengan
error CrashLoopBackOff:
kubectl -n kube-system get pods | grep ipam-controller-manager
Contoh output berikut menunjukkan Pod dalam status
CrashLoopBackOff:
Dapatkan detail untuk Node yang memiliki status NotReady:
kubectl describe node <node-name> | grep PodCIDRs
Dalam cluster yang memiliki masalah ini, Node tidak memiliki PodCIDR yang ditetapkan padanya, seperti ditunjukkan dalam contoh output berikut:
PodCIDRs:
Dalam cluster yang responsif, semua Node harus memiliki PodCIDR dual-stack
yang ditetapkan untuknya, seperti yang ditunjukkan dalam contoh output berikut:
1.6, 1.7, 1.8, 1.9, 1.10, 1.11, 1.12, 1.13, dan 1.14
etcd melihat kelaparan
Cluster yang menjalankan etcd versi 3.4.13 atau sebelumnya mungkin mengalami kelaparan dan pengamatan resource non-operasional, yang dapat menyebabkan masalah berikut:
Penjadwalan pod terganggu
Node tidak dapat didaftarkan
kubelet tidak mengamati perubahan pod
Masalah ini dapat membuat cluster tidak berfungsi.
Masalah ini telah diperbaiki di GDCV untuk Bare Metal versi 1.12.9, 1.13.6, 1.14.3, dan rilis berikutnya. Rilis yang lebih baru ini menggunakan etcd versi 3.4.21. Semua versi GDCV sebelumnya untuk Bare Metal terpengaruh oleh
masalah ini.
Solusi
Jika tidak dapat langsung melakukan upgrade, Anda dapat memitigasi risiko kegagalan cluster dengan mengurangi jumlah node dalam cluster Anda. 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 category, pilih Anthos.
Di menu Metrik aktif, pilih etcd_network_client_grpc_sent_bytes_total.
Klik Terapkan.
Networking
1.11.6, 1.12.3
Status "Gagal" dalam mode vfio-pci operator SR-IOV
syncStatus objek SriovNetworkNodeState dapat melaporkan nilai "Gagal" untuk node yang dikonfigurasi. Untuk melihat status
node dan menentukan apakah masalahnya memengaruhi Anda, jalankan perintah
berikut:
kubectl -n gke-operators get \
sriovnetworknodestates.sriovnetwork.k8s.cni.cncf.io NODE_NAME \
-o jsonpath='{.status.syncStatus}'
Ganti NODE_NAME dengan nama node yang akan diperiksa.
Solusi:
Jika status objek SriovNetworkNodeState adalah "Gagal", upgrade cluster ke versi 1.11.7 atau yang lebih baru, atau versi 1.12.4 atau yang lebih baru.
Upgrade dan update
1.10, 1.11, 1.12, 1.13, 1.14.0, 1.14.1
Beberapa worker node tidak dalam status Siap setelah upgrade
Setelah upgrade selesai, beberapa worker node mungkin memiliki kondisi Siap yang ditetapkan ke false. Pada resource Node, Anda akan melihat error di samping kondisi Ready seperti contoh berikut:
container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:Network plugin returns error: cni plugin not initialized
Saat Anda login ke komputer yang terhenti, konfigurasi CNI di komputer tersebut kosong:
sudo ls /etc/cni/net.d/
Solusi
Mulai ulang pod anetd node dengan menghapusnya.
Upgrade dan update, Keamanan
1.10
Beberapa rotasi sertifikat dari pengelola sertifikat menyebabkan inkonsistensi
Setelah beberapa rotasi sertifikat manual atau otomatis, pod webhook, seperti anthos-cluster-operator tidak diperbarui dengan sertifikat baru yang diterbitkan oleh cert-manager. Setiap update pada resource kustom cluster gagal dan menghasilkan error yang serupa sebagai berikut:
Internal error occurred: failed calling
webhook "vcluster.kb.io": failed to call webhook: Post "https://webhook-service.kube-system.svc:443/validate-baremetal-cluster-gke-io-v1-cluster?timeout=10s": x509: certificate signed by unknown authority (possibly because of "x509:
invalid signature: parent certificate cannot sign this kind of certificate"
while trying to verify candidate authority certificate
"webhook-service.kube-system.svc")
Masalah ini dapat terjadi dalam keadaan berikut:
Jika Anda telah melakukan dua rotasi sertifikat yang diberikan oleh pengelola sertifikat manual pada cluster yang lebih lama dari 180 hari atau lebih dan tidak pernah memulai ulang anthos-cluster-operator.
Jika Anda telah melakukan cert-manager manual, lakukan rotasi sertifikat pada cluster yang lebih lama dari 90 hari atau lebih dan tidak pernah memulai ulang anthos-cluster-operator.
Solusi
Mulai ulang pod dengan menghentikan anthos-cluster-operator.
Upgrade dan update
1.14.0
Pod deployer pengontrol siklus proses yang sudah tidak berlaku lagi dibuat selama upgrade cluster pengguna
Dalam cluster admin versi 1.14.0, satu atau beberapa pod deployer pengontrol siklus proses
yang sudah tidak berlaku mungkin akan dibuat selama upgrade cluster pengguna.
Masalah ini berlaku untuk cluster pengguna yang awalnya dibuat pada versi di bawah 1.12. Pod yang dibuat secara tidak sengaja tidak akan menghambat operasi upgrade, tetapi dapat ditemukan dalam keadaan yang tidak terduga. Sebaiknya
hapus pod yang sudah tidak berlaku.
Masalah ini telah diperbaiki dalam rilis 1.14.1.
Solusi:
Untuk menghapus pod deployer pengontrol siklus proses yang sudah tidak berlaku:
Mencantumkan resource pemeriksaan preflight:
kubectl get preflightchecks --kubeconfig ADMIN_KUBECONFIG -A
Outputnya akan terlihat seperti ini:
NAMESPACE NAME PASS AGE
cluster-ci-87a021b9dcbb31c ci-87a021b9dcbb31c true 20d
cluster-ci-87a021b9dcbb31c ci-87a021b9dcbb31cd6jv6 false 20d
di mana ci-87a021b9dcbb31c adalah nama cluster.
Hapus resource yang nilainya di kolom PASS adalah true atau false.
Misalnya, untuk menghapus resource dalam contoh output sebelumnya, gunakan perintah berikut:
Status BGPSession terus berubah karena banyaknya
rute masuk
GKE pada jaringan lanjutan Bare Metal gagal mengelola sesi BGP dengan benar jika peer eksternal mengiklankan rute dalam jumlah yang tinggi (sekitar 100 atau lebih). Dengan sejumlah besar rute masuk, pengontrol BGP
lokal node membutuhkan waktu terlalu lama untuk merekonsiliasi sesi BGP dan gagal mengupdate
status. Kurangnya update status, atau health check, menyebabkan sesi dihapus karena tidak berlaku lagi.
Perilaku yang tidak diinginkan pada sesi BGP yang mungkin Anda lihat dan menunjukkan adanya masalah meliputi hal-hal berikut:
Penghapusan dan pembuatan ulang bgpsession terus-menerus.
bgpsession.status.state tidak pernah menjadi
Established
Rute yang gagal beriklan atau berulang kali diiklankan dan ditarik.
Masalah load balancing BGP mungkin akan muncul dengan masalah
konektivitas ke layanan LoadBalancer.
Masalah FlatIP BGP mungkin terlihat karena masalah
konektivitas ke Pod.
Untuk mengetahui apakah masalah BGP Anda disebabkan oleh peer jarak jauh yang mengiklankan terlalu banyak rute, gunakan perintah berikut untuk meninjau status dan output terkait:
Gunakan kubectl get bgpsessions di cluster yang terpengaruh.
Output menunjukkan bgpsessions dengan status "Tidak Ditetapkan"
dan waktu laporan terakhir terus-menerus dihitung hingga sekitar 10-12 detik
sebelum tampak direset ke nol.
Output kubectl get bgpsessions menunjukkan bahwa
sesi yang terpengaruh dibuat ulang berulang kali:
kubectl get bgpsessions \
-o jsonpath="{.items[*]['metadata.name', 'metadata.creationTimestamp']}"
Pesan log menunjukkan bahwa sesi BGP yang tidak berlaku sedang dihapus:
kubectl logs ang-controller-manager-POD_NUMBER
Ganti POD_NUMBER dengan pod pemimpin di cluster Anda.
Solusi:
Kurangi atau hilangkan jumlah rute yang diiklankan dari peer jarak jauh ke cluster dengan kebijakan ekspor.
Di GKE pada cluster Bare Metal versi 1.14.2 dan yang lebih baru, Anda juga dapat menonaktifkan fitur yang memproses rute yang diterima menggunakan AddOnConfiguration. Tambahkan argumen --disable-received-routes ke penampung bgpd daemonset ang-daemon.
Networking
1,14, 1,15, 1,16, 1,28
Waktu tunggu aplikasi yang disebabkan oleh kegagalan penyisipan tabel conntrack
Cluster yang berjalan di OS Ubuntu yang menggunakan kernel 5.15 atau yang lebih tinggi rentan terhadap kegagalan penyisipan tabel pelacakan koneksi netfilter (conntrack). Kegagalan penyisipan dapat terjadi meskipun tabel koneksi memiliki ruang untuk entri baru. Kegagalan disebabkan oleh perubahan pada
kernel 5.15 dan versi yang lebih baru yang membatasi penyisipan tabel berdasarkan panjang
rantai.
Untuk melihat apakah Anda terpengaruh oleh masalah ini, Anda dapat memeriksa statistik sistem pelacakan koneksi in-kernel dengan perintah berikut:
Jika nilai chaintoolong dalam respons bukan angka nol, berarti Anda akan terpengaruh oleh masalah ini.
Solusi
Mitigasi jangka pendek adalah meningkatkan ukuran tabel hash
netfiler (nf_conntrack_buckets) dan tabel pelacakan koneksi
netfilter (nf_conntrack_max). Gunakan
perintah berikut pada 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 dikalikan dengan jumlah inti pada node. Misalnya,
jika node Anda memiliki delapan core, tetapkan ukuran tabel ke 524288.
Tidak dapat memulihkan cadangan cluster dengan bmctl untuk beberapa versi
Sebaiknya cadangkan cluster sebelum mengupgrade sehingga
Anda dapat memulihkan versi sebelumnya jika upgrade tidak berhasil.
Masalah dengan perintah bmctl restore cluster menyebabkannya gagal memulihkan cadangan cluster dengan versi yang diidentifikasi. Masalah ini khusus untuk upgrade, yaitu saat Anda memulihkan cadangan versi sebelumnya.
Jika cluster Anda terpengaruh, log bmctl restore cluster
akan berisi error berikut:
Error: failed to extract image paths from profile: anthos version VERSION not supported
Solusi:
Hingga masalah ini diperbaiki, sebaiknya gunakan petunjuk di
Mencadangkan dan memulihkan cluster
untuk mencadangkan cluster Anda secara manual dan memulihkannya secara manual, jika diperlukan.
Networking
1.10, 1.11, 1.12, 1.13, 1.14.0-1.14.2
NetworkGatewayGroup mengalami error jika tidak ada alamat IP pada antarmuka
NetworkGatewayGroup gagal membuat daemon untuk node yang tidak memiliki antarmuka IPv4 dan IPv6. Hal ini menyebabkan fitur seperti BGP LB dan OutboundNAT mengalami kegagalan. Jika Anda memeriksa log Pod ang-node yang gagal dalam namespace kube-system, error yang serupa dengan contoh berikut akan ditampilkan saat alamat IPv6 tidak ada:
ANGd.Setup Failed to create ANG daemon {"nodeName": "bm-node-1", "error":
"creating NDP client failed: ndp: address \"linklocal\" not found on interface \"ens192\""}
Dalam contoh sebelumnya, tidak ada alamat IPv6 pada antarmuka ens192. Error ARP serupa ditampilkan jika node tidak memiliki alamat IPv4.
NetworkGatewayGroup mencoba membuat koneksi ARP dan
koneksi NDP ke alamat IP lokal link. Jika alamat IP tidak ada (IPv4 untuk ARP, IPv6 untuk NDP), koneksi akan gagal dan daemon tidak dilanjutkan.
Masalah ini telah diperbaiki dalam rilis 1.14.3.
Solusi:
Hubungkan ke node menggunakan SSH dan tambahkan alamat IPv4 atau IPv6 ke
link yang berisi IP node. Dalam contoh entri log sebelumnya, antarmuka ini adalah ens192:
ip address add dev INTERFACE scope link ADDRESS
Ganti kode berikut:
INTERFACE: Antarmuka untuk node
Anda, seperti ens192.
ADDRESS: Alamat IP dan subnet mask yang akan diterapkan ke antarmuka.
Reset/Penghapusan
1.10, 1.11, 1.12, 1.13.0-1.13.2
Loop error anthos-cluster-operator saat menghapus node bidang kontrol
Saat Anda mencoba menghapus node bidang kontrol dengan menghapus alamat IP dari Cluster.Spec, anthos-cluster-operator akan memasuki status loop error yang memblokir operasi lainnya.
Solusi:
Masalah ini telah diperbaiki di 1.13.3 serta 1.14.0 dan yang lebih baru. Semua versi lainnya terpengaruh. Mengupgrade ke salah satu versi yang diperbaiki
IP_ADDRESS: Alamat IP node dalam status loop error.
CLUSTER_NAMESPACE: Namespace cluster.
Penginstalan
1.13.1, 1.13.2, dan 1.13.3
kubeadm join gagal dalam cluster besar karena ketidakcocokan token
Saat menginstal GKE pada cluster Bare Metal dengan node dalam jumlah besar, Anda
mungkin melihat pesan error kubeadmin join yang mirip dengan
contoh berikut:
TASK [kubeadm : kubeadm join --config /dev/stdin --ignore-preflight-errors=all] ***
fatal: [10.200.0.138]: FAILED! => {"changed": true, "cmd": "kubeadm join
--config /dev/stdin --ignore-preflight-errors=all", "delta": "0:05:00.140669", "end": "2022-11-01 21:53:15.195648", "msg": "non-zero return code", "rc": 1,
"start": "2022-11-01 21:48:15.054979", "stderr": "W1101 21:48:15.082440 99570 initconfiguration.go:119]
Usage of CRI endpoints without URL scheme is deprecated and can cause kubelet errors in the future.
Automatically prepending scheme \"unix\" to the \"criSocket\" with value \"/run/containerd/containerd.sock\". Please update your configuration!\nerror
execution phase preflight: couldn't validate the identity of the API Server: could not find a JWS signature in the cluster-info ConfigMap for token ID \"yjcik0\"\n
To see the stack trace of this error execute with --v=5 or higher", "stderr_lines":
["W1101 21:48:15.082440 99570 initconfiguration.go:119] Usage of CRI endpoints without URL scheme is deprecated and can cause kubelet errors in the future.
Automatically prepending scheme \"unix\" to the \"criSocket\" with value \"/run/containerd/containerd.sock\".
Please update your configuration!", "error execution phase preflight: couldn't validate the identity of the API Server:
could not find a JWS signature in the cluster-info ConfigMap for token ID \"yjcik0\"",
"To see the stack trace of this error execute with --v=5 or higher"], "stdout": "[preflight]
Running pre-flight checks", "stdout_lines": ["[preflight] Running pre-flight checks"]}
Solusi:
Masalah ini telah diatasi di GDCV untuk Bare Metal versi 1.13.4 dan yang lebih baru.
Jika Anda perlu menggunakan versi yang terpengaruh, pertama-tama buat cluster dengan
kurang dari 20 node, lalu ubah ukuran cluster untuk menambahkan node lain
setelah penginstalan selesai.
Logging dan pemantauan
1,10, 1,11, 1,12, 1,13,0
Batas CPU rendah untuk metrics-server di cluster Edge
Di GKE pada cluster Bare Metal Edge, batas CPU yang rendah untuk metrics-server dapat menyebabkan metrics-server sering dimulai ulang. Penskalaan Otomatis Pod Horizontal (HPA) tidak berfungsi karena metrics-server tidak sehat.
Jika batas CPU metrics-server kurang dari 40m, cluster Anda dapat terpengaruh. Untuk memeriksa batas CPU metrics-server, tinjau salah satu file berikut:
Hapus baris --config-dir=/etc/config dan tingkatkan
batas CPU, seperti ditunjukkan pada contoh berikut:
[...]
- command:
- /pod_nanny
# - --config-dir=/etc/config # <--- Remove this line
- --container=metrics-server
- --cpu=50m # <--- Increase CPU, such as to 50m
- --extra-cpu=0.5m
- --memory=35Mi
- --extra-memory=4Mi
- --threshold=5
- --deployment=metrics-server
- --poll-period=30000
- --estimator=exponential
- --scale-down-delay=24h
- --minClusterSize=5
- --use-metrics=true
[...]
Simpan dan tutup metrics-server untuk menerapkan perubahan.
Networking
1,14, 1,15, 1,16
Koneksi NodePort langsung ke Pod hostNetwork tidak berfungsi
Koneksi ke Pod yang diaktifkan dengan hostNetwork menggunakan Layanan NodePort akan gagal jika Pod backend berada di node yang sama dengan NodePort yang ditargetkan. Masalah ini memengaruhi Layanan LoadBalancer saat digunakan dengan
Pod yang di-hostNetwork. Dengan beberapa backend, kemungkinan akan ada kegagalan koneksi sporadis.
Masalah ini disebabkan oleh bug dalam program eBPF.
Solusi:
Saat menggunakan Layanan Nodeport, jangan menargetkan node tempat Pod backend berjalan. Saat menggunakan Service LoadBalancer, pastikan
Pod yang di-hostNetwork-ed tidak berjalan pada node LoadBalancer.
Upgrade dan update
1.12.3, 1.13.0
Cluster admin 1.13.0 tidak dapat mengelola cluster pengguna 1.12.3
Cluster admin yang menjalankan versi 1.13.0 tidak dapat mengelola cluster pengguna yang
menjalankan versi 1.12.3. Operasi terhadap cluster pengguna versi 1.12.3 gagal.
Solusi:
Upgrade cluster admin Anda ke versi 1.13.1, atau upgrade cluster
pengguna ke versi yang sama dengan cluster admin.
Upgrade dan update
1.12
Upgrade ke 1.13.x diblokir untuk cluster admin dengan kumpulan node pekerja
Cluster admin versi 1.13.0 dan yang lebih tinggi tidak dapat berisi kumpulan node pekerja.
Upgrade ke versi 1.13.0 atau yang lebih tinggi untuk cluster admin dengan kumpulan node pekerja akan diblokir. Jika upgrade cluster admin terhenti, Anda dapat mengonfirmasi apakah kumpulan node pekerja adalah penyebabnya dengan memeriksa error berikut di file upgrade-cluster.log di dalam folder bmctl-workspace:
Operation failed, retrying with backoff. Cause: error creating "baremetal.cluster.gke.io/v1, Kind=NodePool" cluster-test-cluster-2023-06-06-140654/np1: admission webhook "vnodepool.kb.io" denied the request: Adding worker nodepool to Admin cluster is disallowed.
Solusi:
Sebelum mengupgrade, pindahkan semua kumpulan node pekerja ke cluster pengguna. Untuk mengetahui petunjuk cara menambahkan dan menghapus node pool, lihat Mengelola node pool dalam cluster.
Upgrade dan update
1,10, 1,11, 1,12, 1,13, 1,14, 1,15, 1,16, 1,28
Error saat mengupdate resource menggunakan kubectl apply
Jika Anda memperbarui resource yang ada seperti resource kustom ClientConfig atau
Stackdriver menggunakan kubectl apply,
pengontrol mungkin akan menampilkan error atau mengembalikan input dan perubahan yang direncanakan.
Misalnya, Anda dapat mencoba mengedit resource kustom Stackdriver sebagai berikut dengan terlebih dahulu mendapatkan resource, lalu menerapkan versi yang telah diupdate:
Mengaktifkan fitur atau memperbarui konfigurasi di file YAML.
Terapkan kembali file YAML yang telah diperbarui:
kubectl apply -f stackdriver.yaml
Langkah terakhir untuk kubectl apply adalah tempat Anda mungkin mengalami masalah.
Solusi:
Jangan gunakan kubectl apply untuk mengubah resource yang ada. Sebagai gantinya, gunakan kubectl edit atau kubectl patch
seperti yang ditunjukkan pada contoh berikut:
Potongan backlog yang rusak menyebabkan stackdriver-log-forwarder
crashloop
Errorloop stackdriver-log-forwarder akan terjadi jika mencoba memproses potongan backlog yang rusak. Contoh error berikut ditampilkan di log penampung:
[2022/09/16 02:05:01] [error] [storage] format check failed: tail.1/1-1659339894.252926599.flb
[2022/09/16 02:05:01] [error] [engine] could not segregate backlog chunks
Saat errorloop ini terjadi, Anda tidak dapat melihat log di Cloud Logging.
Solusi:
Untuk mengatasi error ini, selesaikan langkah-langkah berikut:
Mengidentifikasi bagian backlog yang rusak. Tinjau contoh pesan error berikut:
[2022/09/16 02:05:01] [error] [storage] format check failed: tail.1/1-1659339894.252926599.flb
[2022/09/16 02:05:01] [error] [engine] could not segregate backlog chunks
Dalam contoh ini, file tail.1/1-1659339894.252926599.flb yang disimpan di var/log/fluent-bit-buffers/tail.1/ salah. Setiap file *.flb dengan pemeriksaan format yang gagal harus dihapus.
Akhiri pod yang berjalan untuk stackdriver-log-forwarder:
Memulai ulang Dataplane V2 (anetd) pada cluster dapat menyebabkan VM yang ada tidak dapat terhubung ke jaringan non-pod
Pada cluster multi-nic, memulai ulang Dataplane V2 (anetd) dapat
menyebabkan virtual machine tidak dapat terhubung ke jaringan. Error yang mirip dengan berikut ini mungkin teramati dalam log pod anetd:
could not find an allocator to allocate the IP of the multi-nic endpoint
Solusi:
Anda dapat memulai ulang VM sebagai perbaikan cepat. Agar masalah ini tidak terulang, upgrade cluster Anda ke versi 1.14.1 atau yang lebih baru.
Operasi
1.13, 1.14.0, 1.14.1
gke-metrics-agent tidak memiliki batas memori di cluster profil Edge
Bergantung pada beban kerja cluster, gke-metrics-agent mungkin menggunakan memori lebih dari 4608 MiB. Masalah ini hanya memengaruhi GKE pada cluster profil Bare Metal Edge. Cluster profil default tidak
terpengaruh.
Solusi:
Upgrade cluster Anda ke versi 1.14.2 atau yang lebih baru.
Penginstalan
1,12, 1,13
Pembuatan cluster mungkin gagal karena kondisi race
Jika Anda membuat cluster menggunakan kubectl, karena kondisi race, pemeriksaan preflight mungkin tidak pernah selesai. Akibatnya, pembuatan cluster mungkin gagal dalam kasus tertentu.
Rekonsiler pemeriksaan preflight membuat SecretForwarder
untuk menyalin rahasia ssh-key default ke namespace target.
Biasanya, pemeriksaan preflight memanfaatkan referensi pemilik dan
merekonsiliasi setelah SecretForwarder selesai. Namun, dalam
kasus yang jarang terjadi, referensi pemilik SecretForwarder dapat
kehilangan referensi ke pemeriksaan preflight, sehingga menyebabkan pemeriksaan preflight macet. Akibatnya, pembuatan cluster gagal. Untuk melanjutkan
rekonsiliasi pemeriksaan preflight berbasis pengontrol, hapus
pod operator cluster atau hapus resource preflight-check. Jika Anda
menghapus resource preflight-check, resource akan membuat yang lain dan melanjutkan
rekonsiliasi. Atau, Anda dapat mengupgrade cluster yang ada
(yang dibuat dengan versi sebelumnya) ke versi tetap.
Networking
1,9, 1,10, 1,11, 1,12, 1,13, 1,14, 1,15
Alamat IP yang dicadangkan tidak dirilis saat menggunakan plugin keberadaan dengan fitur multi-NIC
Di fitur multi-Nic, jika Anda menggunakan plugin keberadaan CNI dan menggunakan operasi CNI DEL untuk menghapus antarmuka jaringan untuk Pod, beberapa alamat IP yang dicadangkan mungkin tidak dirilis dengan benar. Hal ini terjadi saat operasi CNI DEL terganggu.
Anda dapat memverifikasi reservasi alamat IP Pod yang tidak digunakan dengan menjalankan perintah berikut:
kubectl get ippools -A --kubeconfig KUBECONFIG_PATH
Solusi:
Hapus secara manual alamat IP (ippool) yang tidak digunakan.
Penginstalan
1.10, 1.11.0, 1.11.1, 1.11.2
Node Problem Detector gagal di cluster pengguna 1.10.4
Node Problem Detector mungkin gagal dalam cluster pengguna versi 1.10.x,
jika cluster admin versi 1.11.0, 1.11.1, atau 1.11.2
mengelola cluster pengguna 1.10.x. Jika Node Problem Detector gagal, log akan diperbarui dengan pesan error berikut:
Error - NPD not supported for anthos baremetal version 1.10.4:
anthos version 1.10.4 not supported.
Solusi
Upgrade cluster admin ke versi 1.11.3 untuk menyelesaikan masalah ini.
Operasi
1,14
Node cluster IPv4 mode pulau 1,14 memiliki mask CIDR pod
berukuran 24
Pada rilis 1.14, setelan maxPodsPerNode tidak diperhitungkan untuk cluster mode pulau sehingga node akan diberi mask CIDR pod dengan ukuran 24 (256 alamat IP).nHal ini dapat menyebabkan cluster kehabisan alamat IP pod lebih awal dari yang diharapkan. Misalnya, jika cluster Anda memiliki mask CIDR pod 22, setiap node akan diberi mask CIDR pod 24, dan cluster hanya dapat mendukung hingga 4 node. Cluster Anda juga
mungkin akan mengalami ketidakstabilan jaringan dalam periode churn pod tinggi jika maxPodsPerNode ditetapkan ke 129 atau lebih tinggi dan tidak ada overhead
yang cukup di CIDR pod untuk setiap node.
Jika cluster Anda terpengaruh, pod anetd akan melaporkan error berikut saat Anda menambahkan node baru ke cluster dan tidak ada podCIDR yang tersedia:
error="required IPv4 PodCIDR not available"
Solusi
Gunakan langkah-langkah berikut untuk menyelesaikan masalah:
Upgrade ke versi 1.14.1 atau yang lebih baru.
Hapus worker node dan tambahkan kembali.
Hapus node bidang kontrol dan tambahkan kembali, sebaiknya satu per satu
untuk menghindari periode nonaktif cluster.
Upgrade dan update
1.14.0, 1.14.1
Kegagalan rollback upgrade cluster
Rollback upgrade mungkin gagal untuk cluster versi 1.14.0 atau 1.14.1.
Jika Anda mengupgrade cluster dari 1.14.0 ke 1.14.1, lalu mencoba melakukan rollback ke 1.14.0 menggunakan perintah bmctl restore cluster, error seperti contoh berikut mungkin akan ditampilkan:
I0119 22:11:49.705596 107905 client.go:48] Operation failed, retrying with backoff.
Cause: error updating "baremetal.cluster.gke.io/v1, Kind=HealthCheck" cluster-user-ci-f3a04dc1b0d2ac8/user-ci-f3a04dc1b0d2ac8-network: admission webhook "vhealthcheck.kb.io"
denied the request: HealthCheck.baremetal.cluster.gke.io "user-ci-f3a04dc1b0d2ac8-network" is invalid:
Spec: Invalid value: v1.HealthCheckSpec{ClusterName:(*string)(0xc0003096e0), AnthosBareMetalVersion:(*string)(0xc000309690),
Type:(*v1.CheckType)(0xc000309710), NodePoolNames:[]string(nil), NodeAddresses:[]string(nil), ConfigYAML:(*string)(nil),
CheckImageVersion:(*string)(nil), IntervalInSeconds:(*int64)(0xc0015c29f8)}: Field is immutable
Solusi:
Hapus semua resource healthchecks.baremetal.cluster.gke.io
di bagian namespace cluster, lalu jalankan kembali perintah bmctl restore
cluster:
Tampilkan daftar semua healthchecks.baremetal.cluster.gke.io
resource:
kubectl get healthchecks.baremetal.cluster.gke.io \
--namespace=CLUSTER_NAMESPACE \
--kubeconfig=ADMIN_KUBECONFIG
Ganti kode berikut:
CLUSTER_NAMESPACE: namespace untuk cluster.
ADMIN_KUBECONFIG: jalur ke
file kubeconfig cluster admin.
Hapus semua healthchecks.baremetal.cluster.gke.io
resource yang tercantum pada langkah sebelumnya:
Ganti HEALTHCHECK_RESOURCE_NAME dengan nama resource health check.
Jalankan kembali perintah bmctl restore cluster.
Networking
1.12.0
Alamat IP eksternal layanan tidak berfungsi dalam mode datar
Dalam cluster yang memiliki flatIPv4 yang ditetapkan ke true, Layanan jenis LoadBalancer tidak dapat diakses oleh alamat IP eksternalnya.
Masalah ini telah diperbaiki di versi 1.12.1.
Solusi:
Di ConfigMap cilium-config, tetapkan enable-415 ke "true", lalu mulai ulang Pod anetd.
Upgrade dan update
1.13.0, 1,14
Upgrade langsung dari 1.13.0 ke 1.14.x tidak pernah selesai
Saat Anda mencoba melakukan upgrade langsung dari 1.13.0 ke
1.14.x menggunakan bmctl 1.14.0 dan
flag --use-bootstrap=false, upgrade tidak akan pernah selesai.
Error dengan operator preflight-check menyebabkan
cluster tidak pernah menjadwalkan pemeriksaan yang diperlukan, yang berarti pemeriksaan
preflight tidak pernah selesai.
Solusi:
Tingkatkan ke 1.13.1 terlebih dahulu sebelum Anda meningkatkan ke 1.14.x. Upgrade
langsung dari 1.13.0 ke 1.13.1 akan berfungsi. Atau, upgrade dari 1.13.0 ke
1.14.x tanpa flag --use-bootstrap=false.
Upgrade dan update, Keamanan
1.13 dan 1.14
Cluster yang diupgrade ke 1.14.0 kehilangan taint master
Node bidang kontrol memerlukan salah satu dari dua taint tertentu untuk mencegah pod beban kerja dijadwalkan padanya. Saat Anda mengupgrade cluster GKE
versi 1.13 ke versi 1.14.0, node bidang kontrol kehilangan
taint yang diperlukan berikut:
node-role.kubernetes.io/master:NoSchedule
node-role.kubernetes.io/master:PreferNoSchedule
Masalah ini tidak menyebabkan kegagalan upgrade, tetapi pod yang tidak seharusnya berjalan pada node bidang kontrol dapat mulai melakukannya. Pod beban kerja ini dapat membebani node bidang kontrol dan menyebabkan ketidakstabilan cluster.
Menentukan apakah Anda terdampak
Temukan node bidang kontrol, gunakan perintah berikut:
kubectl get node -l 'node-role.kubernetes.io/control-plane' \
-o name --kubeconfig KUBECONFIG_PATH
Untuk memeriksa daftar taint pada node, gunakan perintah berikut:
Jika tidak satu pun taint yang diperlukan tercantum, berarti Anda terpengaruh.
Solusi
Gunakan langkah-langkah berikut untuk setiap node bidang kontrol dari cluster versi 1.14.0 yang terpengaruh untuk memulihkan fungsi yang tepat. Langkah-langkah ini ditujukan untuk
taint node-role.kubernetes.io/master:NoSchedule dan pod
yang terkait. Jika Anda ingin agar node bidang kontrol menggunakan taint PreferNoSchedule, sesuaikan langkah-langkahnya.
Temukan pod tanpa toleransi node-role.kubernetes.io/master:NoSchedule:
kubectl get pods -A --field-selector spec.nodeName="NODE_NAME" \
-o=custom-columns='Name:metadata.name,Toleration:spec.tolerations[*].key' \
--kubeconfig KUBECONFIG_PATH | \
grep -v "node-role.kubernetes.io/master" | uniq
Hapus pod yang tidak memiliki toleransi
node-role.kubernetes.io/master:NoSchedule:
kubectl delete pod POD_NAME –-kubeconfig KUBECONFIG_PATH
Operasi, Runtime VM di GDC
1,11, 1,12, 1,13, 1,14, 1,15, 1,16, 1,28
Pembuatan VM sesekali gagal disertai error upload
Pembuatan Mesin Virtual (VM) baru dengan perintah kubectl virt create vm
jarang gagal selama upload gambar. Masalah ini berlaku untuk VM Linux dan Windows. Error tersebut terlihat seperti contoh berikut:
PVC default/heritage-linux-vm-boot-dv not found DataVolume default/heritage-linux-vm-boot-dv created
Waiting for PVC heritage-linux-vm-boot-dv upload pod to be ready... Pod now ready
Uploading data to https://10.200.0.51
2.38 MiB / 570.75 MiB [>----------------------------------------------------------------------------------] 0.42% 0s
fail to upload image: unexpected return value 500, ...
Solusi
Coba lagi perintah kubectl virt create vm untuk membuat VM Anda.
Upgrade dan update, Logging dan pemantauan
1,11
Komponen koleksi terkelola dalam cluster 1.11 tidak dipertahankan dalam
upgrade ke 1.12
Komponen koleksi terkelola adalah bagian dari Google Cloud Managed Service for Prometheus.
Jika Anda men-deploy komponen
koleksi terkelola
secara manual di namespace gmp-system cluster
versi 1.11, resource terkait tidak akan
dipertahankan saat Anda mengupgrade ke versi 1.12.
Mulai cluster versi 1.12.0, komponen Google Cloud Managed Service for Prometheus dalam namespace gmp-system dan definisi resource kustom terkait dikelola oleh stackdriver-operator dengan kolom enableGMPForApplications. Kolom enableGMPForApplications ditetapkan secara default ke true, jadi jika Anda men-deploy komponen Managed Service for Prometheus secara manual dalam namespace sebelum mengupgrade ke versi 1.12, resource akan dihapus oleh stackdriver-operator.
Solusi
Untuk mempertahankan resource koleksi yang dikelola secara manual:
Mencadangkan semua resource kustom PodMonitoring yang ada.
Jika Anda terpengaruh oleh masalah ini, bmctl akan menulis
error berikut dalam file upgrade-cluster.log di dalam
folder bmctl-workspace:
Operation failed, retrying with backoff. Cause: error creating "baremetal.cluster.gke.io/v1, Kind=Cluster": admission webhook
"vcluster.kb.io" denied the request: Spec.NodeConfig.ContainerRuntime: Forbidden: Starting with Anthos Bare Metal version 1.13 Docker container
runtime will not be supported. Before 1.13 please set the containerRuntime to containerd in your cluster resources.
Although highly discouraged, you can create a cluster with Docker node pools until 1.13 by passing the flag "--allow-docker-container-runtime" to bmctl
create cluster or add the annotation "baremetal.cluster.gke.io/allow-docker- container-runtime: true" to the cluster configuration file.
Hal ini kemungkinan besar terjadi pada cluster Docker versi 1.12 yang
di-upgrade dari versi 1.11, karena upgrade tersebut tidak memerlukan anotasi
untuk mempertahankan runtime container Docker. Dalam hal ini, cluster tidak memiliki
anotasi saat mengupgrade ke 1.13. Perhatikan bahwa mulai dari versi 1.13, containerd adalah satu-satunya runtime container yang diizinkan.
Solusi:
Jika Anda terpengaruh oleh masalah ini, update resource cluster dengan
anotasi yang hilang. Anda dapat menambahkan anotasi saat upgrade berjalan atau setelah pembatalan dan sebelum mencoba kembali upgrade.
Penginstalan
1,11
bmctl keluar sebelum pembuatan cluster selesai
Pembuatan cluster mungkin gagal untuk GDCV untuk Bare Metal versi 1.11.0
(masalah ini telah diperbaiki pada rilis GDCV untuk Bare Metal 1.11.1). Dalam beberapa kasus, perintah bmctl create cluster keluar lebih awal dan menulis error seperti berikut ke log:
Error creating cluster: error waiting for applied resources: provider cluster-api watching namespace USER_CLUSTER_NAME not found in the target cluster
Solusi
Operasi yang gagal menghasilkan artefak, tetapi cluster tidak beroperasi. Jika Anda mengalami masalah ini, gunakan langkah-langkah berikut untuk membersihkan
artefak dan membuat cluster:
Lihat langkah-langkah solusi
Untuk menghapus artefak cluster dan mereset mesin node, jalankan perintah berikut:
bmctl reset -c USER_CLUSTER_NAME
Untuk memulai operasi pembuatan cluster, jalankan perintah berikut:
Flag --keep-bootstrap-cluster penting jika perintah ini gagal.
Jika perintah pembuatan cluster berhasil, Anda dapat melewati langkah-langkah yang tersisa. Atau, lanjutkan.
Jalankan perintah berikut untuk mendapatkan versi cluster bootstrap:
Error ini tidak berbahaya dan Anda dapat mengabaikannya dengan aman.
Penginstalan
1,10, 1,11, 1,12
Pembuatan cluster gagal saat menggunakan multi-NIC, containerd,
dan proxy HTTPS
Pembuatan cluster akan gagal jika Anda memiliki kombinasi kondisi berikut:
Cluster dikonfigurasi untuk menggunakan containerd sebagai
runtime container (nodeConfig.containerRuntime ditetapkan ke
containerd dalam file konfigurasi cluster, default
untuk GDCV untuk Bare Metal versi 1.13 dan yang lebih baru).
Cluster dikonfigurasi untuk menyediakan beberapa antarmuka jaringan,
multi-NIC, untuk pod (clusterNetwork.multipleNetworkInterfaces
ditetapkan ke true dalam file konfigurasi cluster).
Cluster dikonfigurasi untuk menggunakan proxy (spec.proxy.url
ditentukan dalam file konfigurasi cluster). Meskipun pembuatan cluster gagal, setelan ini akan disebarkan saat Anda mencoba membuat cluster. Anda mungkin melihat setelan proxy ini sebagai variabel lingkungan HTTPS_PROXY atau dalam konfigurasi containerd
(/etc/systemd/system/containerd.service.d/09-proxy.conf).
Solusi
Tambahkan CIDR layanan (clusterNetwork.services.cidrBlocks) ke variabel lingkungan NO_PROXY di semua mesin node.
Penginstalan
1,10, 1,11, 1,12
Kegagalan pada sistem dengan setelan umask yang ketat
Rilis GDCV untuk Bare Metal 1.10.0 memperkenalkan fitur bidang kontrol tanpa root yang menjalankan semua komponen bidang kontrol sebagai pengguna non-root. Menjalankan semua komponen sebagai pengguna non-root dapat menyebabkan kegagalan penginstalan
atau upgrade pada sistem dengan setelan
umask0077 yang lebih ketat.
Solusi
Reset node bidang kontrol dan ubah setelan umask ke 0022 di semua mesin bidang kontrol. Setelah komputer
diupdate, coba instal lagi.
Atau, Anda dapat mengubah izin direktori dan file
/etc/kubernetes pada mesin bidang kontrol agar
penginstalan atau upgrade dapat dilanjutkan.
Buat /etc/kubernetes dan semua subdirektorinya dapat dibaca: chmod o+rx.
Buat semua file milik pengguna root dalam direktori (rekursif) /etc/kubernetes dapat dibaca secara global (chmod o+r). Kecualikan file kunci pribadi (.key) dari perubahan ini karena telah dibuat dengan kepemilikan dan izin yang benar.
Buat /usr/local/etc/haproxy/haproxy.cfg dapat dibaca secara global.
Buat /usr/local/etc/bgpadvertiser/bgpadvertiser-cfg.yaml
dapat dibaca oleh semua orang.
Penginstalan
1,10, 1,11, 1,12, 1,13
Inkompatibilitas grup kontrol v2
Grup kontrol v2 (cgroup v2) tidak didukung di GKE pada cluster Bare Metal versi 1.13 dan
yang lebih lama dari GDCV untuk Bare Metal. Namun, versi 1.14 mendukung cgroup
v2 sebagai fitur
Pratinjau
. Keberadaan /sys/fs/cgroup/cgroup.controllers menunjukkan bahwa sistem Anda menggunakan cgroup v2.
Solusi
Jika sistem Anda menggunakan cgroup v2, upgrade cluster ke versi 1.14.
Penginstalan
1,10, 1,11, 1,12, 1,13, 1,14, 1,15, 1,16, 1,28
Pemeriksaan preflight dan kredensial akun layanan
Untuk penginstalan yang dipicu oleh cluster hybrid atau admin (dengan kata lain, cluster yang tidak dibuat dengan bmctl, seperti cluster pengguna), pemeriksaan preflight tidak memverifikasi kredensial akun layanan Google Cloud atau izin terkait.
Penginstalan
1,10, 1,11, 1,12, 1,13, 1,14, 1,15, 1,16, 1,28
Menginstal di vSphere
Saat menginstal GKE pada cluster Bare Metal pada VM vSphere, Anda harus menonaktifkan flag tx-udp_tnl-segmentation dan tx-udp_tnl-csum-segmentation. Flag ini berkaitan dengan pengurangan segmentasi hardware yang dilakukan oleh driver vSphere VMXNET3 dan tidak berfungsi dengan tunnel GENEVE GKE pada cluster Bare Metal.
Solusi
Jalankan perintah berikut pada setiap node untuk memeriksa nilai saat ini untuk
tanda ini:
ethtool -k NET_INTFC | grep segm
Ganti NET_INTFC dengan antarmuka jaringan yang terkait dengan alamat IP node.
Respons harus memiliki entri seperti berikut:
...
tx-udp_tnl-segmentation: on
tx-udp_tnl-csum-segmentation: on
...
Terkadang di RHEL 8.4, ethtool menunjukkan tanda ini nonaktif, sedangkan tidak aktif. Untuk menonaktifkan tanda ini secara eksplisit, aktifkan dan nonaktifkan tanda
dengan perintah berikut:
ethtool -K ens192 tx-udp_tnl-segmentation on ethtool -K ens192 \
tx-udp_tnl-csum-segmentation on
ethtool -K ens192 tx-udp_tnl-segmentation off ethtool -K ens192 \
tx-udp_tnl-csum-segmentation off
Perubahan tanda ini tidak akan dipertahankan saat mulai ulang. Konfigurasi skrip startup untuk menetapkan flag ini secara eksplisit saat sistem melakukan booting.
Upgrade dan update
1.10
bmctl tidak dapat membuat, mengupdate, atau mereset cluster pengguna versi lebih rendah
CLI bmctl tidak dapat membuat, mengupdate, atau mereset cluster pengguna dengan versi minor yang lebih rendah, terlepas dari versi cluster admin. Misalnya, Anda tidak dapat menggunakan bmctl dengan versi
1.N.X untuk mereset cluster pengguna versi
1.N-1.Y, meskipun cluster admin juga menggunakan versi
1.N.X.
Jika terpengaruh oleh masalah ini, Anda akan melihat log seperti berikut saat menggunakan bmctl:
[2022-06-02 05:36:03-0500] error judging if the cluster is managing itself: error to parse the target cluster: error parsing cluster config: 1 error occurred:
* cluster version 1.8.1 isn't supported in bmctl version 1.9.5, only cluster version 1.9.5 is supported
Solusi:
Gunakan kubectl untuk membuat, mengedit, atau menghapus resource kustom cluster pengguna di dalam cluster admin.
Kemampuan untuk mengupgrade cluster pengguna tidak terpengaruh.
Upgrade dan update
1.12
Upgrade cluster ke versi 1.12.1 mungkin akan terhenti
Mengupgrade cluster ke versi 1.12.1 terkadang terhenti karena server API tidak tersedia. Masalah ini memengaruhi semua jenis cluster dan semua
sistem operasi yang didukung. Jika masalah ini terjadi, perintah bmctl
upgrade cluster dapat gagal di beberapa titik, termasuk selama
fase kedua pemeriksaan preflight.
Solusi
Anda dapat memeriksa log upgrade untuk mengetahui apakah Anda terpengaruh oleh masalah ini. Log upgrade terletak di
/baremetal/bmctl-workspace/CLUSTER_NAME/log/upgrade-cluster-TIMESTAMP secara default.
upgrade-cluster.log mungkin berisi error seperti berikut:
Failed to upgrade cluster: preflight checks failed: preflight check failed
Log mesin mungkin berisi error seperti berikut (kegagalan berulang
menunjukkan bahwa Anda terpengaruh oleh masalah ini):
HAProxy dan Keepalive harus berjalan di setiap node bidang kontrol sebelum Anda mencoba kembali untuk mengupgrade cluster ke versi 1.12.1. Gunakan
antarmuka command line crictl
pada setiap node untuk memeriksa apakah container haproxy dan
keepalived berjalan:
Jika HAProxy atau Keepalive tidak berjalan di node, mulai ulang
kubelet di node tersebut:
systemctl restart kubelet
Upgrade dan update, Runtime VM di GDC
1,11, 1,12
Upgrade cluster ke versi 1.12.0 atau yang lebih tinggi akan gagal jika
Runtime VM di GDC diaktifkan
Pada GKE versi 1.12.0 di cluster Bare Metal, semua resource yang terkait dengan
Runtime VM di GDC dimigrasikan ke namespace vm-system
untuk lebih mendukung Runtime VM di rilis GA GDC. Jika
Anda mengaktifkan VM Runtime di GDC dalam cluster versi 1.11.x atau
yang lebih rendah, upgrade ke versi 1.12.0 atau yang lebih tinggi akan gagal, kecuali jika Anda
menonaktifkan Runtime VM di GDC terlebih dahulu. Jika Anda terpengaruh oleh masalah ini, operasi upgrade akan melaporkan error berikut:
Failed to upgrade cluster: cluster isn't upgradable with vmruntime enabled from
version 1.11.x to version 1.12.0: please disable VMruntime before upgrade to
1.12.0 and higher version
Upgrade terhenti di error during manifests operations
Dalam beberapa situasi, upgrade cluster gagal diselesaikan dan CLI bmctl menjadi tidak responsif. Masalah ini dapat disebabkan oleh
resource yang tidak diperbarui dengan benar. Untuk mengetahui apakah Anda terpengaruh oleh masalah ini dan untuk memperbaikinya, periksa log anthos-cluster-operator dan cari error yang mirip dengan entri berikut:
controllers/Cluster "msg"="error during manifests operations" "error"="1 error occurred: ... {RESOURCE_NAME} is invalid: metadata.resourceVersion: Invalid value: 0x0: must be specified for an update
Entri ini adalah gejala dari resource yang salah diperbarui, dengan
{RESOURCE_NAME} sebagai nama resource masalah.
Solusi
Jika Anda menemukan error ini di log Anda, selesaikan langkah-langkah berikut:
Gunakan kubectl edit untuk menghapus
anotasi kubectl.kubernetes.io/last-applied-configuration
dari resource yang terdapat dalam pesan log.
Simpan dan terapkan perubahan pada resource tersebut.
Coba upgrade cluster lagi.
Upgrade dan update
1,10, 1,11, 1,12
Upgrade diblokir untuk cluster dengan fitur yang menggunakan Network Gateway untuk GDC
Upgrade cluster dari 1.10.x ke 1.11.x gagal untuk cluster yang menggunakan gateway NAT keluar atau load balancing paket dengan BGP. Fitur ini menggunakan {i>Network Gateway<i} untuk GDC. Upgrade cluster terhambat di pesan command line Waiting for upgrade to complete... dan error log anthos-cluster-operator seperti berikut:
apply run failed ... MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field
is immutable...
Solusi
Untuk berhenti memblokir upgrade, jalankan perintah berikut pada cluster yang sedang Anda upgrade:
Node dilepas kordon jika Anda tidak menggunakan prosedur mode pemeliharaan
Jika Anda menjalankan cluster versi 1.12.0
(anthosBareMetalVersion: 1.12.0) atau yang lebih rendah dan menggunakan
kubectl cordon secara manual pada sebuah node, GKE di Bare Metal mungkin akan melepaskan batasan
node sebelum Anda siap dalam upaya merekonsiliasi status yang diharapkan.
Solusi
Untuk cluster versi 1.12.0 dan yang lebih rendah, gunakan
mode pemeliharaan untuk
menghubungkan dan menghabiskan node dengan aman.
Pada versi 1.12.1 (anthosBareMetalVersion: 1.12.1) atau
yang lebih baru, GKE di Bare Metal tidak akan membuka kunci node secara tiba-tiba saat
Anda menggunakan kubectl cordon.
Operasi
1,11
Cluster admin versi 11 yang menggunakan mirror registry tidak dapat mengelola cluster
versi 1.10
Jika Anda menggunakan versi 1.11 dan menggunakan registry registry, cluster admin tidak dapat mengelola cluster pengguna yang menggunakan versi minor yang lebih rendah. Masalah ini
memengaruhi operasi reset, update, dan upgrade di cluster pengguna.
Untuk menentukan apakah masalah ini memengaruhi Anda atau tidak, periksa log Anda untuk menemukan operasi cluster, seperti membuat, mengupgrade, atau mereset. Log ini berada di folder bmctl-workspace/CLUSTER_NAME/ secara default. Jika Anda terpengaruh oleh masalah ini, log Anda akan berisi pesan error berikut:
flag provided but not defined: -registry-mirror-host-to-endpoints
Operasi
1,10, 1,11
Rahasia kubeconfig ditimpa
Perintah bmctl check cluster, saat dijalankan di cluster
pengguna, menimpa Secret cluster pengguna kubeconfig dengan
cluster admin kubeconfig. Mengganti file menyebabkan operasi cluster standar, seperti mengupdate dan mengupgrade, gagal untuk cluster pengguna yang terpengaruh. Masalah ini berlaku untuk GKE pada cluster Bare Metal versi 1.11.1
dan yang lebih lama.
Untuk menentukan apakah masalah ini memengaruhi cluster pengguna, jalankan perintah berikut:
ADMIN_KUBECONFIG: jalur ke
file kubeconfig cluster admin.
USER_CLUSTER_NAMESPACE: namespace untuk cluster. Secara default, namespace cluster untuk
GKE pada cluster Bare Metal adalah nama cluster yang diawali dengan
cluster-. Misalnya, jika Anda memberi nama cluster
test, namespace defaultnya adalah cluster-test.
USER_CLUSTER_NAME: nama cluster pengguna yang akan diperiksa.
Jika nama cluster dalam output (lihat
contexts.context.cluster pada contoh output berikut) adalah
nama cluster admin, cluster pengguna yang ditentukan akan terpengaruh.
Langkah-langkah berikut akan memulihkan fungsi ke cluster pengguna yang terpengaruh
(USER_CLUSTER_NAME):
Temukan file kubeconfig cluster pengguna. GKE di Bare Metal
menghasilkan file kubeconfig di workstation admin saat Anda membuat
cluster. Secara default, file berada di
direktori
bmctl-workspace/USER_CLUSTER_NAME.
Verifikasi bahwa cluster pengguna kubeconfig sudah benar: kubeconfig:
kubectl get nodes \
--kubeconfig PATH_TO_GENERATED_FILE
Ganti PATH_TO_GENERATED_FILE dengan jalur ke file kubeconfig cluster pengguna. Responsnya menampilkan detail
tentang node untuk cluster pengguna. Pastikan nama mesin sudah benar untuk cluster Anda.
Jalankan perintah berikut untuk menghapus file kubeconfig yang rusak di
cluster admin:
Mengambil snapshot sebagai pengguna login non-root
Jika Anda menggunakan containerd sebagai runtime container, menjalankan snapshot sebagai pengguna non-root mengharuskan /usr/local/bin berada dalam PATH pengguna.
Jika tidak, skrip akan gagal dengan error crictl: command not found.
Jika Anda tidak login sebagai pengguna root, sudo akan digunakan
untuk menjalankan perintah snapshot. PATH sudo dapat berbeda dengan
profil root dan mungkin tidak berisi /usr/local/bin.
Solusi
Update secure_path di /etc/sudoers untuk menyertakan /usr/local/bin. Atau, buat link simbolis
untuk crictl di direktori /bin lain.
Logging dan pemantauan
1.10
stackdriver-log-forwarder memiliki [parser:cri] invalid
time format log peringatan
Jika
Parser antarmuka runtime
container (CRI)
menggunakan ekspresi reguler yang salah untuk mengurai waktu, log untuk
Pod stackdriver-log-forwarder akan berisi error dan peringatan
seperti berikut:
[2022/03/04 17:47:54] [error] [parser] time string length is too long [2022/03/04 20:16:43] [ warn] [parser:cri] invalid time format %Y-%m-%dT%H:%M:%S.%L%z for '2022-03-04T20:16:43.680484387Z'
Solusi:
Lihat langkah-langkah solusi
Upgrade cluster Anda ke versi 1.11.0 atau yang lebih baru.
Jika Anda tidak dapat segera mengupgrade cluster, gunakan
langkah-langkah berikut untuk mengupdate ekspresi reguler penguraian CRI:
Agar perubahan berikut tidak dikembalikan, turunkan skala stackdriver-operator:
Resource yang diedit akan terlihat seperti berikut:
[PARSER]
# https://rubular.com/r/Vn30bO78GlkvyB
Name cri
Format regex
# The timestamp is described in
https://www.rfc-editor.org/rfc/rfc3339#section-5.6
Regex ^(?<time>[0-9]{4}-[0-9]{2}-[0-9]{2}[Tt ][0-9]
{2}:[0-9]{2}:[0-9]{2}(?:\.[0-9]+)?(?:[Zz]|[+-][0-9]
{2}:[0-9]{2})) (?<stream>stdout|stderr)
(?<logtag>[^ ]*) (?<log>.*)$
Time_Key time
Time_Format %Y-%m-%dT%H:%M:%S.%L%z
Time_Keep off
Untuk GKE pada cluster Bare Metal versi 1.10 hingga 1.15, beberapa pelanggan menemukan
tagihan yang tinggi secara tidak terduga untuk Metrics volume di
halaman Penagihan. Masalah ini hanya memengaruhi Anda jika semua
keadaan berikut berlaku:
Pod Aplikasi memiliki anotasi prometheus.io/scrap=true
Untuk mengonfirmasi apakah Anda terpengaruh oleh masalah ini,
cantumkan
metrik yang ditentukan pengguna. Jika Anda melihat penagihan untuk metrik yang tidak diinginkan, berarti masalah ini berlaku untuk Anda.
Solusi
Jika Anda terdampak oleh masalah ini, sebaiknya upgrade cluster Anda ke versi 1.12 dan beralihlah ke solusi pemantauan aplikasi baru managed-service-for-prometheus
yang mengatasi masalah ini:
Pisahkan tanda untuk mengontrol pengumpulan log aplikasi versus
metrik aplikasi
Google Cloud Managed Service for Prometheus Paket
Jika Anda tidak dapat mengupgrade ke versi 1.12, gunakan langkah-langkah berikut:
Temukan Pod dan Service sumber yang memiliki penagihan yang tidak diinginkan:
kubectl --kubeconfig KUBECONFIG \
get pods -A -o yaml | grep 'prometheus.io/scrape: "true"'
kubectl --kubeconfig KUBECONFIG get \
services -A -o yaml | grep 'prometheus.io/scrape: "true"'
Hapus anotasi prometheus.io/scrap=true dari Pod atau Service.
Logging dan pemantauan
1,11, 1,12, 1,13, 1,14, 1,15, 1,16, 1,28
Pengeditan pada metrics-server-config tidak dipertahankan
Dalam kasus yang ekstrem, kepadatan pod yang tinggi dapat membuat overhead logging dan pemantauan berlebihan, yang dapat menyebabkan Server Metrics berhenti dan dimulai ulang. Anda dapat mengedit ConfigMap metrics-server-config untuk mengalokasikan lebih banyak resource agar Metrics Server tetap berjalan. Namun, karena rekonsiliasi, pengeditan yang dilakukan pada metrics-server-config dapat dikembalikan ke nilai default selama update cluster atau operasi upgrade.
Metrics Server tidak langsung terpengaruh, tetapi saat dimulai ulang, Server akan mengambil ConfigMap yang dikembalikan dan rentan terhadap overhead yang berlebihan, lagi.
Solusi
Untuk versi 1.11.x, Anda dapat membuat skrip edit ConfigMap dan menjalankannya bersama dengan update atau upgrade ke cluster. Untuk versi 1.12 dan yang lebih baru, hubungi dukungan.
Logging dan pemantauan
1,11, 1,12
Metrik yang tidak digunakan lagi memengaruhi dasbor Cloud Monitoring
Beberapa metrik GKE pada Bare Metal tidak digunakan lagi dan, dimulai dengan rilis GDCV untuk Bare Metal 1.11, data tidak lagi dikumpulkan untuk metrik yang tidak digunakan lagi ini. Jika Anda menggunakan metrik ini dalam salah satu kebijakan pemberitahuan, tidak akan ada data untuk memicu kondisi pemberitahuan.
Tabel berikut mencantumkan setiap metrik yang tidak digunakan lagi dan metrik yang menggantikannya.
Pada GKE pada cluster Bare Metal versi yang lebih rendah dari 1.11, file definisi kebijakan untuk pemberitahuan Anthos on baremetal node cpu usage exceeds
80 percent (critical) yang direkomendasikan menggunakan metrik yang tidak digunakan lagi. File definisi JSON node-cpu-usage-high.json diupdate untuk rilis 1.11.0 dan yang lebih baru.
Solusi
Gunakan langkah-langkah berikut untuk bermigrasi ke metrik pengganti:
Di konsol Google Cloud, pilih Monitoring atau klik tombol berikut: Buka Monitoring
Di panel navigasi, pilih
Dashboards, lalu hapus dasbor Anthos cluster node status.
Klik tab Sample library dan instal ulang dasbor Anthos
cluster node status.
stackdriver-log-forwarder memiliki CrashloopBackOff
error
Dalam beberapa situasi, agen logging fluent-bit dapat
kesulitan memproses potongan yang rusak. Jika agen logging tidak dapat mengabaikan
bagian yang rusak, Anda mungkin mengamati bahwa
stackdriver-log-forwarder terus mengalami error dengan
error CrashloopBackOff. Jika Anda mengalami masalah ini, log Anda memiliki entri seperti berikut
[2022/03/09 02:18:44] [engine] caught signal (SIGSEGV) #0 0x5590aa24bdd5
in validate_insert_id() at plugins/out_stackdriver/stackdriver.c:1232
#1 0x5590aa24c502 in stackdriver_format() at plugins/out_stackdriver/stackdriver.c:1523
#2 0x5590aa24e509 in cb_stackdriver_flush() at plugins/out_stackdriver/stackdriver.c:2105
#3 0x5590aa19c0de in output_pre_cb_flush() at include/fluent-bit/flb_output.h:490
#4 0x5590aa6889a6 in co_init() at lib/monkey/deps/flb_libco/amd64.c:117 #5 0xffffffffffffffff in ???() at ???:0
Solusi:
Bersihkan bagian buffer untuk Stackdriver Log Forwarder.
Catatan: Dalam perintah berikut, ganti
KUBECONFIG dengan jalur ke file
kubeconfig cluster admin.
Error metrik tidak dikenal di log gke-metrics-agent
gke-metrics-agent adalah daemonset yang mengumpulkan metrik pada setiap node dan meneruskannya ke Cloud Monitoring. Alat ini dapat menghasilkan log seperti berikut:
Log error ini dapat diabaikan dengan aman karena metrik yang dirujuknya tidak didukung dan tidak penting untuk tujuan pemantauan.
Logging dan pemantauan
1,10, 1,11
Gangguan ekspor metrik sesekali
GKE pada cluster Bare Metal mungkin mengalami gangguan saat mengekspor metrik secara normal dan berkelanjutan, atau kehilangan metrik pada beberapa node. Jika masalah ini memengaruhi cluster Anda, Anda mungkin akan melihat kesenjangan dalam data untuk metrik berikut (setidaknya):
Perintah ini akan menemukan cpu: 50m jika hasil edit Anda telah diterapkan.
Networking
1.10
Beberapa gateway default merusak konektivitas ke endpoint eksternal
Memiliki beberapa gateway default di sebuah node dapat menyebabkan kerusakan
konektivitas dari dalam Pod ke endpoint eksternal, seperti
google.com.
Untuk menentukan apakah Anda terpengaruh oleh masalah ini, jalankan perintah
berikut pada node:
ip route show
Beberapa instance default dalam respons menunjukkan bahwa Anda terpengaruh.
Networking
1.12
Pengeditan resource kustom jaringan pada cluster pengguna akan ditimpa
GKE versi 1.12.x di cluster Bare Metal tidak mencegah Anda mengedit
resource kustom
jaringan secara manual di cluster pengguna. GKE on Bare Metal merekonsiliasi resource kustom
di cluster pengguna dengan resource kustom di cluster admin Anda
selama upgrade cluster. Rekonsiliasi ini akan menimpa semua pengeditan yang dilakukan secara langsung pada resource kustom jaringan di cluster pengguna. Resource kustom jaringan sebaiknya diubah hanya di cluster admin, tetapi cluster versi 1.12.x tidak menerapkan persyaratan ini.
Anda dapat mengedit resource kustom ini di cluster admin dan langkah rekonsiliasi akan menerapkan perubahan pada cluster pengguna Anda.
Solusi
Jika Anda telah mengubah salah satu resource kustom yang disebutkan sebelumnya di cluster pengguna, ubah resource kustom yang terkait di cluster admin agar sesuai sebelum melakukan upgrade. Langkah ini memastikan bahwa
perubahan konfigurasi Anda dipertahankan. GKE pada cluster Bare Metal versi
1.13.0 dan yang lebih tinggi mencegah Anda mengubah resource kustom
jaringan pada cluster pengguna secara langsung.
Networking
1,10, 1,11, 1,12, 1,13, 1,14, 1,15, 1,16, 1,28
Kegagalan konektivitas pod dan pemfilteran jalur terbalik
GKE di Bare Metal mengonfigurasi pemfilteran jalur terbalik pada node untuk menonaktifkan validasi sumber (net.ipv4.conf.all.rp_filter=0).
Jika setelan rp_filter diubah menjadi 1 atau
2, pod akan gagal karena waktu tunggu komunikasi
di luar node habis.
Pemfilteran jalur terbalik ditetapkan dengan file rp_filter dalam
folder konfigurasi IPv4 (net/ipv4/conf/all). Nilai ini juga
dapat diganti oleh sysctl, yang menyimpan setelan pemfilteran
jalur balik dalam file konfigurasi keamanan jaringan, seperti
/etc/sysctl.d/60-gce-network-security.conf.
Solusi
Konektivitas pod dapat dipulihkan dengan melakukan salah satu solusi berikut:
Tetapkan nilai untuk net.ipv4.conf.all.rp_filter kembali ke 0 secara manual, lalu jalankan sudo sysctl -p untuk menerapkan perubahan.
Atau
Mulai ulang Pod anetd untuk menetapkan
net.ipv4.conf.all.rp_filter kembali ke 0. Untuk memulai ulang Pod anetd, gunakan perintah berikut untuk menemukan dan menghapus Pod anetd, dan Pod anetd baru akan dimulai sebagai penggantinya:
Setelah melakukan salah satu solusi, verifikasi bahwa nilai net.ipv4.conf.all.rp_filter ditetapkan ke 0 dengan menjalankan sysctl net.ipv4.conf.all.rp_filter pada setiap node.
Networking
1,10, 1,11, 1,12, 1,13, 1,14, 1,15, 1,16, 1,28
Alamat IP cluster (jenis) bootstrap dan alamat IP node cluster
tumpang tindih
192.168.122.0/24 dan 10.96.0.0/27 adalah pod dan CIDR layanan default yang digunakan oleh cluster (jenis) bootstrap.
Pemeriksaan preflight akan gagal jika tumpang-tindih dengan alamat IP mesin
node cluster.
Solusi
Untuk menghindari konflik, Anda dapat meneruskan flag
--bootstrap-cluster-pod-cidr dan
--bootstrap-cluster-service-cidr ke bmctl
untuk menentukan nilai yang berbeda.
Sistem operasi
1,10, 1,11, 1,12, 1,13, 1,14, 1,15, 1,16, 1,28
Pembuatan atau upgrade cluster gagal di CentOS
Pada Desember 2020, komunitas CentOS dan Red Hat mengumumkan penghentian CentOS. Pada 31 Januari 2022, CentOS 8 mencapai akhir siklus prosesnya (EOL). Akibat EOL, repositori yum berhenti berfungsi untuk CentOS, yang menyebabkan pembuatan cluster dan operasi upgrade cluster gagal. Hal ini berlaku untuk semua versi CentOS yang didukung dan
memengaruhi semua versi GKE di cluster Bare Metal.
Solusi
Lihat langkah-langkah solusi
Sebagai solusinya, jalankan perintah berikut agar CentOS Anda menggunakan feed arsip:
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-Linux-*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' \
/etc/yum.repos.d/CentOS-Linux-*
Container tidak dapat menulis ke VOLUME yang ditentukan di Dockerfile dengan container dan SELinux
Jika Anda menggunakan containerd sebagai runtime container dan sistem operasi Anda telah mengaktifkan SELinux, VOLUME yang ditetapkan dalam Dockerfile aplikasi mungkin tidak dapat ditulis. Misalnya, container yang dibangun dengan Dockerfile berikut tidak dapat menulis ke folder /tmp.
FROM ubuntu:20.04 RUN chmod -R 777 /tmp VOLUME /tmp
Untuk memverifikasi apakah Anda terpengaruh oleh masalah ini, jalankan perintah berikut
pada node yang menghosting container yang bermasalah:
ausearch -m avc
Jika terpengaruh oleh masalah ini, Anda akan melihat error denied seperti berikut:
Untuk mengatasi masalah ini, lakukan salah satu perubahan berikut:
Nonaktifkan SELinux.
Jangan gunakan fitur VOLUME di dalam Dockerfile.
Upgrade dan update
1,10, 1,11, 1,12
Node Problem Detector tidak diaktifkan secara default setelah upgrade cluster
Saat Anda mengupgrade GKE pada cluster Bare Metal, Node Problem Detector tidak diaktifkan secara default. Masalah ini berlaku untuk upgrade dalam rilis 1.10 ke
1.12.1 dan telah diperbaiki dalam rilis 1.12.2.
Solusi:
Untuk mengaktifkan Detektor Masalah Node:
Verifikasi apakah layanan node-problem-detector systemd
berjalan pada node.
Gunakan perintah SSH dan hubungkan ke node.
Periksa apakah layanan node-problem-detector systemd
berjalan pada node:
systemctl is-active node-problem-detector
Jika hasil perintah menampilkan inactive, berarti pendeteksi masalah node tidak berjalan pada node.
Untuk mengaktifkan Node Problem Detector, gunakan
perintah kubectl edit dan edit
node-problem-detector-config ConfigMap. Untuk mengetahui informasi selengkapnya, lihat Pendeteksi Masalah Node.
Operasi
1,9, 1,10
Pencadangan cluster gagal saat menggunakan login non-root
Perintah bmctl backup cluster akan gagal jika
nodeAccess.loginUser ditetapkan ke nama pengguna non-root.]
Solusi:
Masalah ini berlaku untuk versi 1.9.x, 1.10.0, dan 1.10.1
serta telah diperbaiki dalam versi 1.10.2 dan yang lebih baru.
Networking
1,10, 1,11, 1,12
Layanan Load Balancer tidak berfungsi dengan container di jaringan host bidang kontrol
Terdapat bug di anetd saat paket dihapus untuk
LoadBalancer Services jika pod backend berjalan di node bidang
kontrol dan menggunakan kolom hostNetwork: true di
spesifikasi container.
Bug tidak ada di versi 1.13 atau yang lebih baru.
Solusi:
Solusi berikut dapat membantu jika Anda menggunakan Layanan LoadBalancer
yang didukung oleh Pod hostNetwork:
Jalankan keduanya di node pekerja (bukan node bidang kontrol).
Pod anthos-version-$version$ usang dan gagal mengambil gambar
Upgrade cluster dari 1.12.x ke 1.13.x mungkin melihat adanya pod anthos-version-$version$ yang gagal dengan error ImagePullBackOff.
Hal ini terjadi karena kondisi race anthos-cluster-operator yang diupgrade dan tidak akan memengaruhi kemampuan cluster reguler.
Bug tidak ada setelah versi 1.13 atau yang lebih baru.
Solusi:
Hapus Tugas dynamic-version-installer dari
kubectl delete job anthos-version-$version$ -n kube-system
Upgrade dan update
1.13
Cluster 1.12 yang diupgrade dari 1.11 tidak dapat diupgrade ke 1.13.0
Cluster versi 1.12 yang diupgrade dari versi 1.11 tidak dapat
diupgrade ke versi 1.13.0. Masalah upgrade ini tidak berlaku untuk cluster yang dibuat pada versi 1.12.
Untuk mengetahui apakah Anda terpengaruh, periksa log tugas upgrade yang
berisi string upgrade-first-no* di cluster admin.
Jika Anda melihat pesan error berikut, berarti Anda terkena dampaknya.
Penggunaan CPU yang tinggi untuk stackdriver-operator
Ada masalah dalam stackdriver-operator yang menyebabkannya
menggunakan waktu CPU yang lebih tinggi dari biasanya. Penggunaan CPU normal kurang dari 50
miliCPU (50m) untuk stackdriver-operator dalam status
tidak ada aktivitas. Penyebabnya adalah ketidakcocokan resource Sertifikat yang
diterapkan stackdriver-operator dengan ekspektasi dari
cert-manager. Ketidakcocokan ini menyebabkan kondisi race antara cert-manager dan stackdriver-operator dalam memperbarui resource tersebut.
Masalah ini dapat mengakibatkan penurunan performa pada cluster dengan ketersediaan CPU yang terbatas.
Solusi:
Gunakan
solusi berikut hingga Anda dapat melakukan upgrade ke versi yang memperbaiki bug ini:
Untuk menurunkan skala stackdriver-operator menjadi 0 replika untuk sementara, terapkan resource kustom AddonConfiguration:
Dalam rilis minor GDCV untuk Bare Metal 1.16, kolom
enableStackdriverForApplications dalam
spesifikasi resource kustom stackdriver tidak digunakan lagi. Kolom ini diganti dengan dua kolom, enableCloudLoggingForApplications dan enableGMPForApplications, di resource kustom stackdriver.
Sebaiknya gunakan Google Cloud Managed Service for Prometheus untuk memantau workload Anda. Gunakan kolom enableGMPForApplications untuk
mengaktifkan fitur ini.
Jika mengandalkan pengumpulan metrik yang dipicu oleh anotasi prometheus.io/scrape pada workload, Anda dapat menggunakan flag gate fitur annotationBasedApplicationMetrics untuk mempertahankan perilaku lama. Namun, ada masalah yang membuat annotationBasedApplicationMetrics tidak berfungsi dengan baik, sehingga mencegah pengumpulan metrik dari aplikasi Anda ke Cloud Monitoring.
Solusi:
Untuk mengatasi masalah ini, upgrade cluster ke versi 1.16.2 atau yang lebih baru.
Pengumpulan metrik workload berbasis anotasi yang diaktifkan oleh
gate fitur annotationBasedApplicationMetrics mengumpulkan
metrik untuk objek yang memiliki anotasi
prometheus.io/scrape. Banyak sistem software dengan origin open source dapat menggunakan
anotasi ini. Jika Anda terus menggunakan metode pengumpulan metrik ini, pahami dependensi ini agar Anda tidak terkejut dengan biaya metrik di Cloud Monitoring.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2024-04-17 UTC."],[],[]]