Masalah umum Google Distributed Cloud dengan air gap 1.9.x

Kategori Versi yang diidentifikasi Masalah dan solusi
Penginstalan 1.9.0
1.9.1
1.9.2

Terkadang iLO tidak dapat mengambil kunci dari HSM

Gejala:

  • `server.status.conditions` memiliki entri dengan jenis `KeyManagerConfigured` dan status `True`, tetapi tidak ada yang memiliki jenis `DiskEncryptionEnabled`.

  • Ada pod yang gagal bernama `server-encrypt-and-create-logical-drive-$SERVER-xxxxx` dengan error `"ERROR: (3065) Error changing the Controller Encryption Mode UNABLE TO RETRIEVE KEY\tController: HPE Smart Array P408i-a SR Gen10, SLOT 0`.

  • Gagal melakukan SSH di pod karena kunci tidak valid.

Solusi:

Untuk mengatasi masalah ini, lakukan langkah-langkah berikut:

  1. Buka iLO UI > Information > Diagnostics > Reset untuk mereset iLO.

  2. Jika selama reset, iLO menampilkan bahwa server sedang dalam uji mandiri saat dinyalakan (POST), mulai ulang alur penyediaan:

    1. Jika penginstalan admin-cluster berhasil:

      export KUBECONFIG=<root-admin-kubeconfig path>
             
    2. Perbarui kunci SSH:

      1. Ambil kunci SSH publik saat ini (perhatikan bahwa kunci ini mungkin telah diubah dan dengan demikian berbeda dari /root/.ssh/id_rsa.pub

        kubectl -n gpc-system get secret/ssh-key -ojsonpath={.data.'id_rsa\.pub'} | base64 -d
               
      2. Masukkan kunci publik di configmap ironic-vars:

        kubectl -n gpc-system edit cm/ironic-vars
               

        Tambahkan IRONIC_RAMDISK_SSH_KEY: \

      3. Mulai ulang ironic:

        kubectl -n gpc-system rollout restart deployment/root-admin-metal3-ironic
    3. Sediakan ulang komputer untuk menginstal ulang IPA:

      1. Cadangkan bmc-credential-$SERVER karena menghapus bmh juga akan menghapus rahasia

        kubectl -n gpc-system get secret bmc-credentials-$SERVER -oyaml > $SERVER
               
      2. Hapus dari file atribut yang tidak berlaku seperti: last-applied, creationtimestamp, finalizer, ownerreference, resourceversion, uid.

      3. Hapus BareMetalHost:

        kubectl -n gpc-system delete bmh/$SERVER
               
      4. Ambil Secret bmc-credentials-$SERVER atau cadangan sebelumnya dari cellcfg dan terapkan.

    4. Minta server untuk melakukan sesuatu yang berbeda.

      1. Untuk menghapus status BMH yang di-cache:

        kubectl -n gpc-system annotate server/$SERVER baremetalhost.metal3.io/status-
  3. Tunggu hingga server disediakan.

  4. Tonton cara pembuatan objek BMH.

  5. Anda mungkin perlu menghapus tugas enkripsi untuk memicu ulang.

Operasi 1.9.0
1.9.1
1.9.2

Menggunakan class penyimpanan blok standar dapat mencegah virtual machine (VM) dimulai atau dimulai ulang

Gejala:

Status VM tetap ada dengan STATUS dari Provisioning atau Starting saat storageClassName adalah standard-block.

Solusi:

Untuk mengatasi masalah ini, lakukan langkah-langkah berikut:

  1. Verifikasi bahwa STATUS VM menampilkan Provisioning atau Starting:

    kubectl --kubeconfig SYSTEM_KUBECONFIG get gvm -n PROJECT

    SYSTEM_KUBECONFIG adalah jalur file kubeconfig cluster sistem.

    PROJECT adalah project GDC tempat VM berada.

    Opsional: Dapatkan detail status tambahan:

    kubectl get gvm VM_NAME -n PROJECT -o \
               jsonpath='{"State:"}{.status.state}{"\n"}{"Reason:"}{.status.reason}{"\n"}{"Message:"}{.status.message}{"\n"}'

    VM_NAME adalah nama VM yang tidak responsif.

  2. Hapus VM:

    kubectl --kubeconfig SYSTEM_KUBECONFIG delete gvm VM_NAME -n NAMESPACE_NAME

    NAMESPACE_NAME adalah nama namespace Anda.

  3. Verifikasi bahwa penghapusan berhasil:

    kubectl --kubeconfig SYSTEM_KUBECONFIG get gvm VM_NAME -n PROJECT

    Hasil yang mirip dengan berikut ini mengonfirmasi keberhasilan:

    Error from server (NotFound): virtualmachines.vm.cluster.gke.io "VM_NAME" not found
  4. Hapus semua disk VM tersebut:

    kubectl --kubeconfig SYSTEM_KUBECONFIG delete gdisk DISK_NAME_1 DISK_NAME_2 DISK_NAME_N -n NAMESPACE_NAME
  5. Ganti nama setiap disk Anda dengan DISK_NAME_1 dan DISK_NAME_2 hingga DISK_NAME_N dan pastikan semua disk tercantum.

  6. Verifikasi bahwa penghapusan berhasil:

    kubectl --kubeconfig SYSTEM_KUBECONFIG get gdisk DISK_NAME_1 DISK_NAME_2 DISK_NAME_N -n $PROJECT
  7. Hasil yang mirip dengan berikut ini mengonfirmasi keberhasilan:

          Error from server (NotFound): virtualmachinedisks.vm.cluster.gke.io "DISK_NAME_1" not found
          Error from server (NotFound): virtualmachinedisks.vm.cluster.gke.io "DISK_NAME_2" not found
          Error from server (NotFound): virtualmachinedisks.vm.cluster.gke.io "DISK_NAME_N" not found
          
  8. Buat ulang VM dan disk.

  9. Mulai ulang VM.

Operasi 1.9.2

Selama upgrade dari 1.9.1 ke 1.9.2, operasi ke Artifact Registry dapat gagal dengan error Tidak Sah

Gejala:

gdcloud system container-registry load-oci gagal dengan error. Jika Anda menjalankan kembali perintah, perintah akan berjalan untuk jangka waktu yang berbeda dan gagal pada titik yang berbeda dalam proses seperti push atau pemberian tag ulang, tetapi dengan error yang serupa.

Solusi:

Untuk mengatasi masalah ini, lakukan langkah-langkah berikut:

  1. Ekspor KUBECONFIG ke kubeconfig admin root:

    export KUBECONFIG=~/release/root-admin/root-admin-kubeconfig
  2. Keluarkan perintah ini untuk menskalakan kembali deployment/root-admin-tftp-manager-controller menjadi 0 replika:

    kubectl scale --replicas=0 deployment/root-admin-tftp-manager-controller -n gpc-system
  3. Lakukan operasi yang gagal.
  4. Tingkatkan skala deployment/root-admin-tftp-manager-controller menjadi 1 replika:

    kubectl scale --replicas=0 deployment/root-admin-tftp-manager-controller -n gpc-system
Operasi 1.9.1
1.9.2
1.9.3

Tidak dapat menetapkan label pemilih AddOn untuk cluster admin root

Gejala:

gdcloud system container-registry load-oci gagal dengan error. Jika Anda menjalankan kembali perintah, perintah akan berjalan untuk jangka waktu yang berbeda dan gagal pada titik yang berbeda dalam proses seperti push atau pemberian tag ulang, tetapi dengan error yang serupa.

Solusi:

Abaikan pesan ini dengan aman. Panel ini akan menghilang setelah beberapa saat.

Operasi 1.9.2

Tidak dapat mengambil log untuk pod karena image tidak ada

Solusi:

Untuk mengatasi masalah ini, mulai ulang pod yang mengalami masalah.

Operasi 1.9.0
1.9.1
1.9.2

Server macet dalam status available dan tugas konfigurasi enkripsinya terus gagal karena error kunci SSH

Gejala:

Status kondisi Server Siap adalah "False" dan Pesan berisi "job server-encrypt-and-create-logical-drive-... failed with reason ... and message ...". Log tugas yang gagal berisi "Failed to connect to the host via ssh ... Permission denied (publickey)."

Solusi:

Untuk mengatasi masalah ini, lakukan langkah-langkah berikut:

  1. Ambil kunci SSH publik saat ini dari cluster admin root:

    kubectl -n gpc-system get secret/ssh-key -ojsonpath={.data.'id_rsa\.pub'} | base64 -d
  2. Tempatkan kunci ke dalam configmap ironic-vars:

    kubectl -n gpc-system edit cm/ironic-vars
  3. Tambahkan atau ganti IRONIC_RAMDISK_SSH_KEY yang ada:

    <SSH public key>
  4. Mulai ulang deployment Ironic:

    kubectl -n gpc-system rollout restart deployment/root-admin-metal3-ironic
  5. Untuk setiap server yang terpengaruh:

    kubectl -n gpc-system annotate bmh/$SERVER inspect.metal3.io=""
Operasi 1.9.2

Penyediaan cluster pengguna melalui GUI mengalami masalah

Solusi:

Untuk menghindari masalah kekurangan alamat IP, tetapkan ukuran CIDR Pod ke /21 atau lebih tinggi saat membuat cluster pengguna dengan ketersediaan tinggi.

Penginstalan 1.9.2

Saat bootstrap, Google Distributed Cloud dengan air gap 1.14.2 gagal menampilkan metrik dari Cortex

Solusi:

Untuk mengatasi masalah ini, mulai ulang pod.

Lihat runbook MON-R0001 untuk mengetahui detailnya.

Autentikasi platform 1.9.13

Org. yang baru dibuat tidak dapat menjangkau IP data server

Gejala:

Semua tugas cplb-init dan storage-ipsec-config-bm-XXXXX menampilkan pesan berikut: Failed to connect to the host via ssh: ssh: connect to host 10.1.18.X port 22: Connection timed out.

Solusi:

1. Periksa apakah bgp vrf tidak berfungsi di aggswitch.

2. Periksa apakah ada perubahan yang belum di-commit untuk konfigurasi penyiapan baru di firewall.

3. Hapus semua securitypolicyrules yang memiliki organisasi yang dihapus dalam namanya dan mulai ulang root-admin-controller.

Upgrade 1.9.1
1.9.2
1.9.11

Selama upgrade OS Node, server mengalami masalah saat membatalkan penyediaan karena URL boot.ipxe tidak valid

Gejala:

Server telah .status.bareMetalHostStatus.provisionState macet di deprovisioning selama lebih dari 20 menit.

Alamat IP pengelolaan server yang diupgrade disertakan dalam output salah satu perintah berikut:

kubectl -n gpc-system get cm/gpc-dhcp-conf -oyaml | grep dhcp-option=tag:mgmt,option:tftp-server
kubectl -n gpc-system get cm/gpc-dhcp-conf -oyaml | grep dhcp-option=tag:mgmt,tag:ipxe,option:bootfile-name

Solusi:

Untuk mengatasi masalah ini, jalankan:

kubectl -n gpc-system rollout restart deploy/root-admin-controller
Upgrade 1.9.1
1.9.2
1.9.10
1.9.11
1.9.12
1.9.13
1.9.14
1.9.15
1.9.16
1.9.17
1.9.18

Selama upgrade OS Node, node gagal dalam tugas machine-init

Gejala:

Satu tugas upgrade di NodeUpgrade belum selesai selama lebih dari 2 jam.

NodeUpgradeTask yang sesuai mengalami error pada kondisi NodeResumeCompleted dan belum selesai selama lebih dari 1 jam.

bm-system-x.x.x.x-machine-init pekerjaan belum selesai dalam waktu yang lama. x.x.x.x adalah alamat node.

Solusi:

Untuk menemukan alamat node yang tidak sehat, lihat x.x.x.x dari tugas bm-system-x.x.x.x-machine-init yang terhenti.

Untuk menemukan node panel kontrol yang berfungsi baik untuk node yang tidak berfungsi baik, lakukan langkah-langkah berikut:

  1. Temukan nodepool node yang tidak responsif.
  2. Periksa node pool bidang kontrol di cluster yang sama dengan node yang tidak sehat tersebut dan pilih alamat dari .spec.address node pool bidang kontrol tersebut.

    1. Di bootstrapper atau OC IT, jalankan:

      HEALTHY_CP_NODE_IP=Y.Y.Y.Y # Needs to be entered.
      alias ka="kubectl --kubeconfig=/root/release/root-admin/root-admin-kubeconfig"
      HARBOR=$(ka get harborcluster harbor -n harbor-system -o=jsonpath="{.spec.externalURL}")
      REGISTRY=${HARBOR#https://}
      # Download `etcdctl`.
      docker run --rm -v $(pwd):/workspace --workdir /workspace ${REGISTRY}/library/anthos-baremetal-release/etcd:v3.4.21-0-gke.1 /bin/sh -c "cp /usr/local/bin/etcdctl /workspace/etcdctl"
      
      scp etcdctl "root@$HEALTHY_CP_NODE_IP:/root/etcdctl"
      # SSH into the healthy control plane node.
      ssh $HEALTHY_CP_NODE_IP
    2. Di dalam node bidang kontrol yang berfungsi dengan baik, jalankan:

      UNHEALTHY_NODE_IP=X.X.X.X # Needs to be entered.
      
      UNHEALTHY_MEMBER=$(ETCDCTL_API=3 ./etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt     --cert=/etc/kubernetes/pki/etcd/server.crt     --key=/etc/kubernetes/pki/etcd/server.key --endpoints=https://localhost:2379  member list | grep $UNHEALTHY_NODE_IP | cut -d',' -f1)
      
      ETCDCTL_API=3 ./etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key --endpoints=https://localhost:2379 member remove $UNHEALTHY_MEMBER
Upgrade 1.9.1
1.9.2

Upgrade dari 1.9.0 ke 1.9.1 diblokir karena add-on ods-fleetgagal diinstal

Gejala:

Pod ODS Fleet Operator mengalami loop error.

Untuk memeriksa status pod, jalankan:

ko get pods -n ods-fleet-operator

Error pemilihan pemimpin yang mirip dengan berikut muncul di log ODS Fleet Operator:

E0413 18:06:48.614127       1 leaderelection.go:330] error retrieving resource lock ods-fleet-system/af0cf209.dbadmin.gdc.goog: Get "https://172.20.0.1:443/apis/coordination.k8s.io/v1/namespaces/ods-fleet-system/leases/af0cf209.dbadmin.gdc.goog": context deadline exceeded
I0413 18:06:48.614214       1 leaderelection.go:283] failed to renew lease ods-fleet-system/af0cf209.dbadmin.gdc.goog: timed out waiting for the condition
E0413 18:06:48.614460       1 main.go:473] "setup: problem running manager" err="leader election lost" log_name="l1_controller"

Untuk memeriksa log ODS Fleet Operator, jalankan:

ko logs deployment/fleet-controller-manager -n ods-fleet-system

Pesan berikut akan ditampilkan:

Message: Error occurred during addon installation: failed to upgrade chart: an error occurred while rolling back the release. original upgrade error: post-upgrade hooks failed: timed out waiting for the condition: timed out waiting for the condition.

Solusi:

Untuk mengedit deployment, jalankan:

ko edit deployment -n ods-fleet-system fleet-controller-manager
ku edit deployment oracle-controller-manager -n ods-oracle-system
ku edit deployment pg-controller-manager -n ods-postgres-system

Pastikan untuk mengedit kolom resources penampung manager sebagai berikut:

Sebelum:

resources:
      limits:
         cpu: 100m
         memory: 512Mi
      requests:
         cpu: 100m
         memory: 512Mi

Sesudah:

resources:
      limits:
         cpu: 1000m
         memory: 1024Mi
      requests:
         cpu: 1000m
         memory: 1024Mi
Upgrade 1.9.2
1.9.3

Add-on vm-runtime mengalami masalah selama upgrade gpu-org-system-cluster dari 1.9.1 ke 1.9.2 karena pod kubevm-gpu-driver-daemonset dalam status CrashLoopBackOff

Gejala:

Pesan error berikut akan muncul:

nvidia-driver-init run the action: init, with options: skip_driver                                                                                                                                                                                              
nvidia-driver-init Find the nvidia card, label this node                                                                                                                                                                                                        
nvidia-driver-init node/MACHINE_NAME not labeled                                                                                                                                                                                                                  
nvidia-driver-init enable nvidia container runtime for ubuntu/debian system                                                                                                                                                                                     
nvidia-driver-init install nvidia container runtime package                                                                                                                                                                                                     
nvidia-driver-init (Reading database ... 92144 files and directories currently installed.)                                                                                                                                                                      
nvidia-driver-init Preparing to unpack .../libnvidia-container1_1.12.0-1_amd64.deb ...                                                                                                                                                                          
nvidia-driver-init Unpacking libnvidia-container1:amd64 (1.12.0-1) over (1.12.0-1) ...                                                                                                                                                                          
nvidia-driver-init Setting up libnvidia-container1:amd64 (1.12.0-1) ...                                                                                                                                                                                         
nvidia-driver-init Processing triggers for libc-bin (2.31-0ubuntu9.9) ...                                                                                                                                                                                       
nvidia-driver-init (Reading database ... 92144 files and directories currently installed.)                                                                                                                                                                      
nvidia-driver-init Preparing to unpack .../libnvidia-container-tools_1.12.0-1_amd64.deb ...                                                                                                                                                                     
nvidia-driver-init Unpacking libnvidia-container-tools (1.12.0-1) over (1.12.0-1) ...                                                                                                                                                                           
nvidia-driver-init Setting up libnvidia-container-tools (1.12.0-1) ...                                                                                                                                                                                          
nvidia-driver-init dpkg: regarding .../nvidia-container-toolkit-base_1.12.0-1_amd64.deb containing nvidia-container-toolkit-base:                                                                                                                               
nvidia-driver-init  nvidia-container-toolkit-base breaks nvidia-container-toolkit (<= 1.10.0-1)                                                                                                                                                                 
nvidia-driver-init   nvidia-container-toolkit (version 1.8.1-1) is present and installed.                                                                                                                                                                       
nvidia-driver-init dpkg: error processing archive var/cache/apt/archives/nvidia-container-toolkit-base_1.12.0-1_amd64.deb (--install):                                                                                                                          
nvidia-driver-init  installing nvidia-container-toolkit-base would break nvidia-container-toolkit, and                                                                                                                                                          
nvidia-driver-init  deconfiguration is not permitted (--auto-deconfigure might help)                                                                                                                                                                            
nvidia-driver-init Errors were encountered while processing:                                                                                                                                                                                                    
nvidia-driver-init  var/cache/apt/archives/nvidia-container-toolkit-base_1.12.0-1_amd64.deb

Solusi:

Untuk memperbaiki masalah ini, lakukan langkah-langkah berikut:

  1. Login ke semua node GPU yang disediakan:

    # ka get servers -A | grep o1-highgpu1-48-gdc-metal
  2. Hapus paket lama:

    root@MACHINE_NAME:~# dpkg -r nvidia-container-runtime nvidia-container-toolkit
    (Reading database ... 92154 files and directories currently installed.)
    Removing nvidia-container-runtime (3.8.1-1) ...
    Removing nvidia-container-toolkit (1.8.1-1) ...
  3. Hapus pod kubevm-gpu-driver-daemonset yang macet. Tindakan ini akan memulai ulang penginstalan:

    # kug get pods -A | grep gpu | grep Init
  4. (Opsional) Jika penginstalan add-on kehabisan waktu, mulai ulang penginstalan add-on:

    ku delete job vm-runtime-readiness -n gpu-org-system-cluster
Upgrade 1.9.10
1.9.11

Pod gpcbackup-agent-0 gagal dengan pesan error failed to stage volume: iSCSI login failed.

Gejala:

gpcbackup-agent-0 menampilkan failed to stage volume: iSCSI login failed dan gagal melakukan penahapan volume.

Periksa apakah pod gagal melampirkan volume. Contoh berikut menggunakan kubeconfig cluster sistem:

  • Deskripsikan pod:

    kos describe pod -n gpc-backup-system gpcbackup-agent-0

    Jika pod gagal, output yang mirip dengan contoh berikut akan ditampilkan:

    Warning  FailedMount  24m (x1064 over 7d17h)    kubelet  Unable to attach or mount volumes: unmounted volumes=[gpcbackup-agent-vol], unattached volumes=[kube-api-access-cr45d gpcbackup-agent-vol]: timed out waiting for the condition
    Warning  FailedMount  9m18s (x4109 over 7d17h)  kubelet  MountVolume.MountDevice failed for volume "pvc-5df41864-63c5-4589-9569-036fa011f64c" : rpc error: code = Internal desc = failed to stage volume: iSCSI login failed
    Warning  FailedMount  4m32s (x3840 over 7d17h)  kubelet  Unable to attach or mount volumes: unmounted volumes=[gpcbackup-agent-vol], unattached volumes=[gpcbackup-agent-vol kube-api-access-cr45d]: timed out waiting for the condition
  • Periksa node tempat pod gagal:

    kos get pod -n gpc-backup-system gpcbackup-agent-0 -o wide

    Anda akan mendapatkan output yang mirip dengan contoh berikut:

    NAME                READY   STATUS              RESTARTS   AGE     IP       NODE          NOMINATED NODE   READINESS GATES
    gpcbackup-agent-0   0/1     ContainerCreating   0          7d17h   [none]   vm-e2b9792a   [none]           [none]
  • Dapatkan pod netapp-trident di node yang sama dengan pod gpcbackup-agent-0 yang gagal:

    kos get pod -o wide -n netapp-trident

    Anda akan mendapatkan output yang mirip dengan contoh berikut:

    netapp-trident-node-linux-6kgv4              2/2     Running   0               12h     10.249.20.12   vm-e2b9792a   [none]           [none]
  • Periksa log pod netapp-trident di node yang sama dengan pod gpcbackup-agent-0 yang gagal:

    kos logs -n netapp-trident netapp-trident-node-linux-6kgv4 trident-main

    Anda akan mendapatkan output yang mirip dengan contoh berikut:

    time="2024-01-25T17:35:29Z" level=error msg="Failed to discover targets" error="process killed after timeout" output= portal="172.20.131.41:3260" requestID=e377490f-5407-44ea-9691-1ee8990f8c3e requestSource=CSI
    time="2024-01-25T17:35:29Z" level=error msg="unable to ensure iSCSI target exists: failed to discover targets: process killed after timeout" err="failed to discover targets: process killed after timeout" iface=default requestID=e377490f-5407-44ea-9691-1ee8990f8c3e requestSource=CSI targetIqn="iqn.1992-08.com.netapp:sn.944e1654ac1c11ee86b0d039ea524d51:vs.26" tp="172.20.131.41:3260"
    time="2024-01-25T17:35:29Z" level=error msg="GRPC error: rpc error: code = Internal desc = failed to stage volume: iSCSI login failed" requestID=e377490f-5407-44ea-9691-1ee8990f8c3e requestSource=CSI

Solusi:

Untuk mengatasi masalah ini, lakukan langkah-langkah berikut:

  1. Dapatkan nama InventoryMachine:

    export ROOT_ADMIN_KUBECONFIG=[path to the root admin kubeconfig]
    
    export INV_MACH=vm-e2b9792a
  2. Konfirmasi bahwa tugas sebelumnya ada:

    export ORG_ADMIN_KUBECONFIG=[path to the org admin kubeconfig]
    kubectl --kubeconfig ${ORG_ADMIN_KUBECONFIG} get job -n gpc-system storage-ipsec-config-"${INV_MACH}"

    Anda akan mendapatkan output yang mirip dengan berikut ini:

    NAME                               COMPLETIONS   DURATION   AGE
    storage-ipsec-config-vm-e2b9792a   1/1           17s        19d
  3. Hapus tugas:

    kubectl --kubeconfig ${ROOT_ADMIN_KUBECONFIG} delete storageencryptionconnections -n ${INV_MACH} ${INV_MACH}

    Anda akan mendapatkan output yang mirip dengan berikut ini:

    warning: deleting cluster-scoped resources, not scoped to the provided namespace
    storageencryptionconnection.ontap.netapp.storage.private.gdc.goog "vm-e2b9792a" deleted
  4. Pastikan StorageEncryptionConnection ada:

    kubectl --kubeconfig ${ROOT_ADMIN_KUBECONFIG} get storageencryptionconnections -n ${INV_MACH} ${INV_MACH}

    Anda akan mendapatkan output yang mirip dengan berikut ini:

    NAME          INVENTORYMACHINE   STORAGEVIRTUALMACHINE   STORAGECIDR        PRESHAREDKEY                 READY   AGE
    vm-e2b9792a   vm-e2b9792a        org-1-user              172.20.131.32/27   vm-e2b9792a-pre-shared-key   True    19d
  5. Hapus StorageEncryptionConnection.

    kubectl --kubeconfig ${ROOT_ADMIN_KUBECONFIG} delete storageencryptionconnections -n ${INV_MACH} ${INV_MACH}

    Anda akan mendapatkan output yang mirip dengan berikut ini:

    warning: deleting cluster-scoped resources, not scoped to the provided namespace
    storageencryptionconnection.ontap.netapp.storage.private.gdc.goog "vm-e2b9792a" deleted
  6. Mulai ulang pod root-admin-controller:

    kubectl --kubeconfig ${ROOT_ADMIN_KUBECONFIG} rollout restart deploy -n gpc-system root-admin-controller && kubectl --kubeconfig ${ROOT_ADMIN_KUBECONFIG} rollout status deploy -n gpc-system root-admin-controller
  7. Konfirmasi bahwa tugas baru telah dibuat ulang dan berhasil dijalankan:

    kubectl --kubeconfig ${ORG_ADMIN_KUBECONFIG} get job -n gpc-system storage-ipsec-config-${INV_MACH}

    Anda akan mendapatkan output yang mirip dengan berikut ini:

    NAME                               COMPLETIONS   DURATION   AGE
    storage-ipsec-config-vm-e2b9792a   1/1           19s        95s
Upgrade 1.9.10
1.9.11

Node zp-aa-bm08 dari cluster admin root menampilkan error penyediaan dan tidak dapat diselesaikan karena registri tidak berfungsi dengan baik.

Gejala:

Pod registry Harbor menampilkan pesan error yang mirip dengan berikut ini:

Warning  FailedMount  6m52s (x718 over 2d14h)  kubelet  Unable to attach or mount volumes: unmounted volumes=[storage], unattached volumes=[registry-config authentication-htpasswd internal-certificates sto │
│ age[]: timed out waiting for the condition

Solusi:

Untuk mengatasi masalah ini, ikuti langkah-langkah berikut:

  1. Periksa Persistent Volume Claim (PVC) registry Harbor dan catat nama volume PVC:

    kubectl get pvc harbor-registry -n harbor-system
  2. Untuk memeriksa apakah lampiran volume berada di node yang sama dari pod registry Harbor, buat daftar volumeattachment dan temukan yang terkait dengan nama volume:

    kubectl get volumeattachment | grep [volume-name]
  3. Jika lampiran volume berada di node yang berbeda dari pod Harbor registry, hapus volumeattachment:

    kubectl delete volumeattachment [volumeattachment-name]
  4. Mulai ulang pod registry Harbor.

Sekarang, registry Harbor di cluster admin root harus dalam kondisi baik dan upgrade node berhasil diselesaikan.

Penginstalan 1.9.2
1.9.3
1.9.4
1.9.5

Cluster pengguna tidak siap tepat waktu

Gejala:

Pesan error berikut akan muncul:

pod "coredns-75bd7c95f7-fd4cr" in namespace "kube-system" is not ready yet.

Log pod berisi hal berikut:

[INFO] plugin/ready: Still waiting on: "kubernetes,kubernetes"

Versi CoreDNS adalah 1.8.6.

Solusi:

Untuk mengatasi masalah ini, mulai ulang deployment coredns.

Setelah KUBECONFIG disetel untuk cluster yang benar, jalankan:

kubectl rollout restart deployment coredns -n kube-system

Nama cluster pengguna adalah bagian dari pesan error.

Untuk menemukan file kubeconfig di /root/release/user/, temukan kubeconfig: org-1-system-user-kubeconfig user-vm-1-user-kubeconfig user-vm-2-user-kubeconfig

Jika file kubeconfig tidak ada, buat file tersebut sebagai berikut:

export KUBECONFIG=/root/release/org-admin/org-1-admin-kubeconfig

kubectl get secrets -n user-vm-1-cluster user-vm-1-kubeconfig -o jsonpath='{.data.value}' | base64 -d > /tmp/user-vm-1-user-kubeconfig
Upgrade 1.9.2
1.9.3

Status OrganizationUpgrade tidak dapat diperbarui

Gejala:

Pesan error berikut akan muncul:

Warning  ReconcileBackoff  43m (x9 over 61m)  OrganizationUpgrade  [UPG1402: unable to set AddOn selector labels for root-admin cluster: Operation cannot be fulfilled on clusters.baremetal.cluster.gke.io "root-admin": the object has been modified; please apply your changes to the latest version and try again, UPG9900: unable to update status: OrganizationUpgrade.upgrade.private.gdc.goog "root" is invalid: [status.errorStatus.errors[0]. errorResource.name: Required value, status.errorStatus.errors[0].errorResource.namespace: Required value]]

Masalah ini biasanya bersifat sementara dan akan hilang.

Penginstalan 1.9.3

Penginstalan add-on gagal

Penginstalan add-on gagal dengan error berikut:

Error occurred during addon installation: failed to install chart: release netapp-trident failed, and has been uninstalled due to atomic being set: failed post-install: timed out waiting for the condition.

Solusi:

Penginstalan add-on mungkin gagal karena node berada dalam status NotReady. Periksa apakah node dalam status NotReady menggunakan:

kubectl get nodes

Dapatkan detail untuk node yang berada dalam status NotReady:

$ kubectl describe node  | grep PodCIDRs

Untuk cluster yang mengalami masalah ini, node tidak memiliki PodCIDR yang ditetapkan, misalnya:

PodCIDRs:                     
For a healthy cluster, all the nodes should have PodCIDRs assigned to it(CIDR shown here is for example purposes only and might vary on the actual cluster based in the Configured ClusterCIDR): eg.
PodCIDRs:                     192.168.6.0/24

Untuk memperbaiki masalah ini, mulai ulang deployment ipam-controller di cluster yang terpengaruh:

kubectl --kubeconfig KUBECONFIG_PATH -n kube-system rollout restart ds/ipam-controller-manager
Upgrade 1.9.3

Upgrade cluster pengguna gagal memanggil webhook

Upgrade gagal dengan error berikut:

Rollback "netapp-trident" failed: cannot patch "netapp-trident-csi-cert" with kind Certificate: Internal error occurred: failed calling webhook "webhook.cert-manager.io": failed to call webhook: Post "https://cert-manager-webhook.cert-manager.svc:443/mutate?timeout=10s": dial tcp 172.20.5.144:443: i/o timeout && cannot patch "netapp-trident-server-cert" with kind Certificate: Internal error occurred: failed calling webhook "webhook.cert-manager.io": failed to call webhook: Post "https://cert-manager-webhook.cert-manager.svc:443/mutate?timeout=10s": context deadline exceeded && cannot patch "netapp-trident-client-cert" with kind Certificate: Internal error occurred: failed calling webhook "webhook.cert-manager.io": failed to call webhook: Post "https://cert-manager-webhook.cert-manager.svc:443/mutate?timeout=10s": context deadline exceeded && cannot patch "netapp-trident-csi-selfsigned-issuer" with kind Issuer: Internal error occurred: failed calling webhook "webhook.cert-manager.io": failed to call webhook: Post "https://cert-manager-webhook.cert-manager.svc:443/mutate?timeout=10s": context deadline exceeded && cannot patch "netapp-trident-csi-issuer" with kind Issuer: Internal error occurred: failed calling webhook "webhook.cert-manager.io": failed to call webhook: Post "https://cert-manager-webhook.cert-manager.svc:443/mutate?timeout=10s": context deadline exceeded.

Solusi:

Perbarui kolom AddOnSet abm-overrides's <code.spec.addonsettemplateref< code="" dir="ltr" translate="no"> secara manual ke nama AddOnSetTemplate versi yang diinginkan di namespace yang sama dengan cluster yang diupgrade.</code.spec.addonsettemplateref<>

Penginstalan 1.9.3

Pengontrol admin armada terjebak dalam loop error dengan error Fleet admin controller manager stopped: failed to wait for auditloggingtarget caches to sync: timed out waiting for cache to be synced di log

Gejala:

  1. Pengontrol admin armada gagal siap sehingga pengujian TestCreateFleetAdminCluster atau TestSimOverlayCreateFleetAdminCluster gagal.

  2. Pengontrol admin armada terjebak dalam loop error.

  3. Error berikut ada di log pengontrol admin armada: Fleet admin controller manager stopped: failed to wait for auditloggingtarget caches to sync: timed out waiting for cache to be synced.

Solusi:

  1. Deploy CRD Logmon ke cluster admin org.

  2. Mulai ulang pengontrol admin armada.

Penginstalan 1.9.3

Cluster sistem tidak siap tepat waktu

Gejala:

Pesan error berikut akan muncul:

k8s_mt_system_cluster_healthcheck_test.go:147: system cluster did not become ready in time: cluster "org-1-system-cluster/org-1-system" did not become healthy in time: [waitingForClusterHealth] WaitForSuccess gave up [...] unable to retrieve logs for pod "anthos-prometheus-k8s-0" [...] pod "anthos-prometheus-k8s-0" in namespace "obs-system" is not ready yet. [...] Message:containers with unready status: [config-reload prometheus-server] [...]

Solusi:

Untuk mengatasi masalah ini, mulai ulang deployment dan daemonset di cluster:

kubectl rollout restart deploy/netapp-trident-csi -n netapp-trident
kubectl rollout restart daemonset/netapp-trident-csi -n netapp-trident

Catatan: Jalankan perintah berikut sebelum memulai ulang deployment dan daemonset untuk mengarah ke cluster yang benar:

export KUBECONFIG=/root/release/system/org-1-system-kubeconfig
Upgrade 1.9.4
1.9.5
1.9.6
1.9.7
1.9.8

Cluster pengguna dengan tiga node pekerja n2-standard-4 memiliki resource CPU yang tidak memadai untuk upgrade

Gejala:

Pod tidak dapat dijadwalkan karena CPU tidak mencukupi.

Solusi:

  1. Untuk cluster pengguna yang sudah ada dan dibuat dengan node pekerja n2-standard-4, tambahkan NodePool n2-standard-8 baru dengan tiga node ke cluster ini sebelum mengupgrade.

  2. Untuk cluster pengguna baru, buat dengan satu NodePool n2-standard-8 dengan minimal tiga node. Lihat Membuat cluster pengguna untuk beban kerja penampung untuk mengetahui detailnya.

Operasi 1.9.0
1.9.2
1.9.3
1.9.4

UI memungkinkan Anda memilih konfigurasi jenis GPU ke VM yang tidak kompatibel

Gejala:

Instance VM PHASE menampilkan Scheduling dan READY tetap False, tidak pernah mencapai status True. Hal ini memengaruhi dua jenis mesin, seperti yang tercantum untuk solusi. Jenis mesin lainnya tidak terpengaruh dan tidak memerlukan solusi.

Solusi:

  • Saat membuat cluster pengguna yang menggunakan GPU A100 40G, selalu pilih jenis mesin a2-highgpu-1g-gdc dari UI.
  • Saat membuat cluster pengguna yang menggunakan GPU A100 80G, selalu pilih jenis mesin a2-ultragpu-1g-gdc dari UI.
Operasi 1.9.0
1.9.2
1.9.3
1.9.4

Ukuran memori VM yang lebih besar dari 32 GB rentan terhadap perhitungan overhead QEMU yang salah, memerlukan penggantian ukuran memori

Gejala:

Untuk node pool dengan instance VM yang memiliki ukuran memori lebih besar dari 32 GB, instance VM dapat tampak berjalan, lalu berhenti, dan berjalan lagi; mungkin mengulangi urutan ini. Pada akhirnya, error OOMKilled kehabisan memori akan terjadi dan instance akan gagal.
Berikut adalah tiga jenis VM yang terpengaruh:

  • n2-highmem-8-gdc: Memori 64 GB
  • a2-highgpu-1g-gdc: Memori 85 GB
  • a2-ultragpu-1g-gdc: Memori 170 GB

Solusi:

  1. Verifikasi jenis mesin Anda:
    kubectl --kubeconfig= get gvm vm-8c440bc4 -n gdch-vm-infra
  2. Cari jenis VM di
    spec.compute.virtualMachineTypeName
    dalam output Anda.
  3. Jika jenis VM adalah salah satu dari tiga jenis yang tercantum edit configmap untuk menyertakan penggantian memori:
    kubectl --kubeconfig=SYSTEM_CLUSTER_KUBECONFIG \
          edit configmap NAME -n NAMESPACE
  4. Tambahkan bagian memory.guest dan resources.overcommitGuestOverhead seperti yang Anda lihat dalam contoh berikut:
          apiVersion: v1
          kind: ConfigMap
          metadata:
             name: vm-8c440bc4
             namespace: gdch-vm-infra
          data:
             virtSpec: |
               template:
             spec:
               domain:
                  ...
                  ...
                  memory:
                    guest: "MEMORY_SIZE"
                  resources:
                    overcommitGuestOverhead: true
                   ...
                   ...
          
  5. Di memory, ubah guest agar memiliki nilai berikut:
    • Untuk n2-highmem-8-gdc, buat MEMORY_SIZE 63.6G.
    • Untuk a2-highgpu-1g-gdc, buat MEMORY_SIZE 84G.
    • Untuk a2-ultragpu-1g-gdc, buat MEMORY_SIZE 168G.
  6. Ulangi langkah ini untuk semua VM yang terpengaruh.
Upgrade 1.9.4

Klien SSH tidak dapat mengalokasikan terminal pseudo

Gejala:

Tugas bm-system-* mengalami error pada langkah Gathering Facts. Saat mencoba melakukan SSH ke server secara manual, PTY allocation request failed on channel 0 ditampilkan.

Solusi:

Mulai ulang server menggunakan salah satu cara berikut:

  1. curl -X POST -H "content-type: application/json" -k -u $ILO_USER:$ILO_PWD https://$ILO_IP/redfish/v1/Systems/1/Actions/ComputerSystem.Reset

  2. UI iLO

  3. kubectl --kubeconfig=$ROOT_ADMIN_KUBECONFIG annotate -n gpc-system bmh/$SERVER "reboot.metal3.io"=""

Upgrade 1.9.4
1.9.10

Upgrade node gagal mencadangkan konfigurasi ipsec

Gejala:

Upgrade gagal karena tugas backup-ipsec-* gagal.

Solusi:

Ikuti langkah-langkah berikut:

  1. Temukan kunci pra-bagi di namespace gpc-system di cluster admin org. Kuncinya diberi nama <node-name>-pre-shared-key.

    Untuk mendapatkan hash kunci dari yaml pre-shared-key node yang berfungsi, gunakan kubectl get --kubeconfig /root/release/org-admin/org-1-admin-kubeconfig -n gpc-system secret <not-failed-node-name>-pre-shared-key -o=jsonpath='{.data.pre-shared-key}' | awk '{ print $1 }'.

    Perhatikan bahwa Anda harus mendapatkan hash kunci dari node selain node tempat upgrade IPsec gagal.

  2. Terapkan hash untuk pre-shared key ini ke rahasia pre-shared-key node yang gagal di gpc-system di cluster admin org.

  3. Hapus objek storageencryptionconnection yang memiliki nama yang sama dengan node yang gagal di cluster admin root.

  4. Hapus tugas storage-ipsec-config-<node-name> terkait di cluster admin org.

  5. Hapus tugas upgrade backup-ipsec-for-upgrade-<node-name> terkait.

Upgrade 1.9.4

Runner Clamav menolak untuk menghentikan penanganan sinyal SIGTERM

Gejala:

Mengupgrade cluster org membutuhkan waktu yang lama.

Solusi:

Tunggu hingga clamav mati dengan sendirinya.

Upgrade 1.9.5

harbor-cert-secret memiliki CA yang berbeda dengan CA "sisi klien"

Gejala:

Sertifikat yang berbeda ditampilkan:

echo $(kubectl get secret harbor-cert-secret -n istio-system -o jsonpath='{.data.ca\.crt}') | openssl base64 -A -d 
-----BEGIN CERTIFICATE-----
MIIBqjCCAS+gAwIBAgIQSve6hYhac9nZr/u/l/hPzjAKBggqhkjOPQQDAzAWMRQw
EgYDVQQDEwtoYXJib3ItY2VydDAeFw0yMzA3MTcwMzQ3MjhaFw0yODA3MTUwMzQ3
MjhaMBYxFDASBgNVBAMTC2hhcmJvci1jZXJ0MHYwEAYHKoZIzj0CAQYFK4EEACID
YgAEsGCynvjnSNNIdz3PxpEqvogHAITWyB3jJbA6jxQhics5MYuq2biaqLg38Ly1
3mF6CRh9Tzroxg2Wtu339McKTAC/7v61ZsbGXbj3eQiTECJut/a55BekG7FcwVG/
btbAo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E
FgQUUh1ZUS9CUIHgQmJZTj8m3MIINS8wCgYIKoZIzj0EAwMDaQAwZgIxALDea5fh
IeafRNzR3pjYRgW++TCYZU3XVSJ04K8eIBy1wz1XRDR5SWFgJ/ejWZGUagIxAIQP
9A42lzd7gyqaAAlRB+TQ0sMJMOOyNl0gFg5ZVyhGdJfsZpv1XrcLcqX3tejydw==
-----END CERTIFICATE-----
echo $(kubectl get secret ca-cert-10.2.2.101.10443  -n anthos-creds -o jsonpath='{.data.ca\.crt}') | openssl base64 -A -d
-----BEGIN CERTIFICATE-----
MIIBazCCARKgAwIBAgIQKkDVSpMZf9CQEHxx7UFPmDAKBggqhkjOPQQDAjAWMRQw
EgYDVQQDEwtoYXJib3ItY2VydDAeFw0yMzA3MTYwOTQzMTlaFw0yNDA3MTUwOTQz
MTlaMBYxFDASBgNVBAMTC2hhcmJvci1jZXJ0MFkwEwYHKoZIzj0CAQYIKoZIzj0D
AQcDQgAEI4hXIh65Zc8sWaPQL9gqz3lrq22A1XJsRrMwl/pk3vZiNLGS3+Tt9tXc
WDP74IbinOxZ1Auw08e3s4sxCahfyqNCMEAwDgYDVR0PAQH/BAQDAgKkMA8GA1Ud
EwEB/wQFMAMBAf8wHQYDVR0OBBYEFN8ob6e8WeFELnVKPSdtMfyvRP95MAoGCCqG
SM49BAMCA0cAMEQCIF8P5THYBHcOdcn1u7zi+Y4jwDTdLAeaDZbVxUDEK2EaAiBW
zilvR3YvW7h5OdSUsgFkSQ42FcSIoNHWYNSZx16CeQ==
-----END CERTIFICATE-----

Solusi:

Catatan: Rotasi sertifikat harbor-harbor-https sebelum langkah-langkah berikut.

Ikuti langkah-langkah berikut:

Ada salinan data sertifikat yang disimpan dalam secret di dalam cluster. Setelah merotasi sertifikat harbor-harbor-https, Anda juga harus memperbarui salinan rahasia.

  1. Ambil URL Artifact Registry.
    export registry_url=$(kubectl get harborcluster/harbor -n harbor-system -o json | jq -r '.spec.externalURL')
  2. Perbarui salinan secret sertifikat Artifact Registry di setiap namespace.

    Mendapatkan semua namespace yang menyimpan salinan rahasia sertifikat Artifact Registry.

    export ca_cert_secret_name=ca-cert-$(printf \"${registry_url}\" | jq -r 'ltrimstr("https://") | sub(":";".")')
    export ca_cert_secret_namespaces=$(kubectl get secrets -A -o json | jq -j ".items[] | select(.metadata.name == \"${ca_cert_secret_name}\") | .metadata.namespace,\" \"")

    Perbarui salinan secret sertifikat Artifact Registry di setiap namespace.

    export cert_data=$(kubectl -n istio-system get secret/harbor-harbor-https -o json | jq -r '.data."ca.crt"')
    for namespace in ${ca_cert_secret_namespaces}; do kubectl patch secret/${ca_cert_secret_name} -n $namespace -p "{\"data\":{\"ca.crt\":\"${cert_data}\"}}"; done
  3. Untuk cluster root-admin, Anda juga perlu mengupdate perbaikan bernama salinan secret sertifikat yang disebut ca-cert-in-cluster-registry di namespace anthos-creds.
    export cert_data=$(kubectl -n istio-system get secret/harbor-harbor-https -o json | jq -r '.data."ca.crt"')
    kubectl -n anthos-creds patch secret/ca-cert-in-cluster-registry -p "{\"data\":{\"ca.crt\":\"${cert_data}\"}}"
  4. Perbarui registry-cert yang disimpan di namespace kube-system.
    export cert_data=$(kubectl -n istio-system get secret/harbor-harbor-https -o json | jq -r '.data."ca.crt"')
    kubectl -n kube-system patch secret/registry-cert -p "{\"data\":{\"registry-cert\":\"${cert_data}\"}}"
  5. Jika Anda mengganti sertifikat untuk cluster org-admin, Anda juga perlu memperbarui salinan rahasia sertifikat yang ada di cluster root-admin.
    Mendapatkan semua namespace yang menyimpan salinan rahasia sertifikat Artifact Registry.
    export ca_cert_secret_name=ca-cert-$(printf \"${registry_url}\" | jq -r 'ltrimstr("https://") | sub(":";".")')
    export ca_cert_secret_namespaces=$(kubectl get secrets -A -o json | jq -j ".items[] | select(.metadata.name == \"${ca_cert_secret_name}\") | .metadata.namespace,\" \"")

    Perbarui salinan secret sertifikat Artifact Registry di setiap namespace.

    export cert_data=$(kubectl -n istio-system get secret/harbor-harbor-https -o json | jq -r '.data."ca.crt"')
    for namespace in ${ca_cert_secret_namespaces}; do kubectl patch secret/${ca_cert_secret_name} -n $namespace -p "{\"data\":{\"ca.crt\":\"${cert_data}\"}}"; done
  6. .
Upgrade 1.10.0
1.10.1

Mengupgrade organisasi ke 1.10.x dari 1.9.1 atau yang lebih lama dapat menyebabkan pod kube-apiserver tidak muncul selama upgrade

Gejala:

Setelah memulai OrganizationUpgrade, pod kube-apiserver tidak berjalan di satu atau beberapa node.

  1. Identifikasi node tempat upgrade diblokir:
    kubectl get po -n kube-system -l component=kube-apiserver
          

    Outputnya akan terlihat seperti ini:

    NAME                        READY   STATUS    RESTARTS   AGE
    kube-apiserver-ah-aa-bm01   1/1     Running   0          12h
    kube-apiserver-ah-ab-bm01   1/1     Running   0          11h
    kube-apiserver-ah-ac-bm01   1/1     Error     0          12h
  2. Buat koneksi SSH ke node yang baru saja diupdate:
    root@ah-ac-bm01:~# crictl ps -a | grep kube-api
         

    Anda akan melihat status penampung sebagai Exited:

    f1771b8aad929       bd6ed897ecfe2       17 seconds ago       Exited              kube-apiserver                2                   8ceebaf342eb8       kube-apiserver-ah-ac-bm01
    bd14d51b01c09       d0bac8239ee3a       5 minutes ago        Exited
          
  3. Periksa log pod Exited:
    crictl logs f1771b8aad929

    Outputnya akan terlihat seperti ini:

    Error: invalid argument "JobTrackingWithFinalizers=false" for "--feature-gates" flag: cannot set feature gate JobTrackingWithFinalizers to false, feature is locked to true

    Tanda dikonfigurasi dalam file /etc/kubernetes/manifests/kube-apiserver.yaml:

    root@ah-ac-bm01:~# grep JobTrackingWithFinalizers /etc/kubernetes/manifests/kube-apiserver.yaml
        - --feature-gates=JobTrackingWithFinalizers=false

Solusi:

Hapus tanda dari file /etc/kubernetes/manifests/kube-apiserver.yaml.

  1. Mencadangkan file:
    root@ah-ac-bm01:~# cp /etc/kubernetes/manifests/kube-apiserver.yaml ~/kube-apiserver.yaml.bak
           
  2. Hapus baris:
    root@ah-ac-bm01:~# sed -i '/--feature-gates=JobTrackingWithFinalizers=false/d' /etc/kubernetes/manifests/kube-apiserver.yaml
           
  3. Konfirmasi bahwa baris telah dihapus:
    root@ah-ac-bm01:~# diff /etc/kubernetes/manifests/kube-apiserver.yaml ~/kube-apiserver.yaml.bak
    35a36
    >     - --feature-gates=JobTrackingWithFinalizers=false
           
  4. Tampilkan daftar container kube-apiserver:
    root@ah-ac-bm01:~# crictl ps --name kube-apiserver
           
    kubelet akan otomatis mengambil perubahan dan memulai pod kube-apiserver:
    CONTAINER           IMAGE               CREATED             STATE               NAME                ATTEMPT             POD ID              POD
    e1344008dfed9       bd6ed897ecfe2       12 hours ago        Running    
  5. Ulangi langkah-langkah ini untuk semua node yang terpengaruh.
Upgrade 1.9.2
1.9.3
1.9.3
1.9.4
1.9.5
1.9.6

Loop error deployment kube-state-metrics

Gejala:

Loop error deployment kube-state-metrics di organisasi setelah rotasi sertifikat. Masalah ini dapat menyebabkan hilangnya data pemantauan.

Upgrade 1.9.6

Worker node tidak seimbang setelah upgrade

Gejala:

Setelah upgrade, node pekerja menjadi tidak seimbang.

Solusi:

Seimbangkan node pekerja secara manual:

  • Untuk workload pod, hapus pod dalam deployment.
  • Untuk beban kerja VM, hapus virt-launcher tanpa mengubah objek GVM bidang kontrol.
Upgrade 1.9.6

Plugin perangkat GPU tidak dimulai

Saat mengupgrade dari 1.9.5 ke 1.9.6, ada kemungkinan plugin perangkat GPU tidak dapat dimulai.

Gejala:

Anda mungkin melihat error berikut yang memblokir kesiapan runtime VM dan proses upgrade:

Failed to initialize NVML: could not load NVML library
      

Solusi:

  1. Periksa apakah nvidia-container-runtime dikonfigurasi dengan benar di node:
    1. Buat koneksi SSH ke node yang Anda duga mengalami masalah.
    2. Dapatkan daftar pod:
      crictl pods
    3. Periksa pod:
      crictl inspectp $pod_hash | grep runtimeOption -A1
      Jika output terlihat seperti ini, node telah dikonfigurasi dengan benar. Jika output tidak terlihat seperti ini, berarti nvidia-container-runtime tidak dikonfigurasi di node:
      binary_name": "/usr/bin/nvidia-container-runtime"
  2. Jika nvidia-container-runtime tidak dikonfigurasi dengan benar, mulai ulang containerd untuk menyelesaikan masalah:
    systemctl restart containerd
Upgrade 1.9.7

NodeUpgrade untuk upgrade firmware server macet dalam status in process

Saat mengupgrade ke 1.9.7, firmware node pool cluster admin root tetap dalam status in process.

Gejala:

  • Untuk sisi NodeUpgrade, lihat solusi Waktu tunggu server artefak:
    • NodeUpgrade macet dalam status in process dan Kondisi untuk NodeROMFirmwareUpgradeCompleted dalam status Nodeupgradetask selalu tidak selesai.
    • URL di spec.firmware.firmwarePackages.url dalam objek NodeUpgrade mungkin mengalami masalah saat terhubung, misalnya:
      curl -k https://10.248.2.71:30938/artifacts/serve/Z2RjaC1ocGUtZmlybXdhcmUvaWxvOmlsbzU= -o /tmp/file.cow2
  • Untuk sisi Harbor, lihat solusi alternatif Server artefak tidak sah:
    • Di log server artefak, error terkait akses tidak sah ke repositori mungkin ditampilkan: gdch-hpe-firmware/ilo, misalnya:
      root@bootstrapper:~# kubectl --kubeconfig ${KUBECONFIG} logs -n gpc-system -l name=artifact-registry-services-artifact-server -f
      
      artifact-server I1108 05:20:28.084320       1 artifact_server.go:171] Pulling artifact at path /artifacts/serve/Z2RjaC1ocGUtZmlybXdhcmUvaWxvOmlsbzU=
      artifact-server E1108 05:20:28.159685       1 artifact_server.go:194] Error fetching image 10.249.23.11:10443/gdch-hpe-firmware/ilo:ilo5: GET https://10.249.23.11:10443/v2/gdch-hpe-firmware/ilo/manifests/ilo5: UNAUTHORIZED: unauthorized to access repository: gdch-hpe-firmware/ilo, action: pull: unauthorized to access repository: gdch-hpe-firmware/ilo, action: pull
    • Di project Harbor, gdch-hpe-firmware harus memiliki Spec.harborProjectConfig.accessLevel sebagai private:
      kubectl get --kubeconfig ${KUBECONFIG} HarborProject -n gpc-system gdch-hpe-firmware -o yaml

Solusi:

Jaringan yang lebih rendah 1.9.0 - 1.9.6

Sesi BGP cluster sistem tidak dapat dibuat karena ClusterIP tumpang-tindih

Gejala:

Sesi BGP tidak berfungsi di jaringan internal organisasi. Hanya satu endpoint peering BGP internal organisasi yang ditambahkan ke Objek TORSwitchInternal.

Solusi:

Ubah secara eksplisit subnet yang digunakan di {organization-name}-system-bgp-flat-ip-ipv4-apc AddressPoolClaim agar tidak tumpang-tindih dengan resource AddressPoolClaim serupa milik organisasi lain.

  1. Menyelidiki gejala:
    1. Untuk setiap cluster sistem organisasi, jalankan:
      kubectl get bgpsessions -A --kubeconfig ORG_SYSTEM_KUBECONFIG
    2. Periksa kolom State setiap objek BGPSession untuk mengetahui State dari NotEstablished. Catat LocalIP setiap NotEstablished BGPSession terkait untuk digunakan nanti.
  2. Tentukan apakah "System cluster BGP Sessions cannot be established due to overlapping ClusterIPs" adalah penyebab utama:
    1. Untuk setiap organisasi aktif, jalankan:
      kubectl get clusterbgppeers -A --kubeconfig ORG_ADMIN_KUBECONFIG_FILE -o custom-columns=NAMESPACE:.metadata.namespace,NAME:.metadata.name,CLUSTERIP:.spec.clusterIP | grep flat-ip
    2. Cari kolom ClusterIP output (kolom ke-3) untuk menemukan LocalIPs yang tercantum di langkah 1.b. Catat LocalIP yang cocok dengan entri di kolom ke-3 output untuk digunakan nanti. Jika ada beberapa cluster admin organisasi yang berbeda, dengan output dari 2.a berisi LocalIP yang tercantum di langkah 1.b, lanjutkan ke langkah 3.
  3. Menyelesaikan IP yang tumpang-tindih yang digunakan untuk cluster sistem organisasi.
    1. Jalankan:
      kubectl get subnetclaims -A --kubeconfig ROOT_ADMIN_KUBECONFIG -o custom-columns=NAMESPACE:.metadata.namespace,NAME:.metadata.name,CIDRBLOCK:.status.ipv4SubnetStatus.cidrBlock | grep worker-node
    2. Catat jumlah objek SubnetClaim yang ditampilkan dari kueri di 3.a. Nilai ini harus sama dengan jumlah organisasi aktif.
    3. Untuk setiap baris, catat Namespace (kolom 1), dan blok CIDR (kolom 3). Blok CIDR setiap baris harus sama dengan blok CIDR setiap baris lainnya.
    4. Untuk setiap organisasi, lakukan langkah-langkah berikut:
      1. Buka objek {organization-name}-system-bgp-flat-ip-ipv4-apc AddressPoolClaim di cluster admin organisasi milik organisasi tersebut.
      2. Hitung Start IP klaim kumpulan alamat node pekerja organisasi tersebut. Untuk melakukannya, ambil blok CIDR dari 3.c dan kolom Size di AddressPoolClaim dari 3.d.i. Mulai dari IP kedua terakhir di blok CIDR, hitung mundur Size IP. Ini adalah Start IP baru untuk organisasi pertama (digunakan pada langkah 3.d.iii). Untuk setiap organisasi tambahan, hitung mundur Size IP detik, dimulai dari Start IP baru organisasi sebelumnya. Contoh:
        CIDR block: 10.0.0.0/24
        
        org-1, org-2, & org-3 AddressPoolClaim Size: 2
        
        - New org-1 startIPAddress: 10.0.0.252
        - New org-2 startIPAddress: 10.0.0.250
        - New org-3 startIPAddress: 10.0.0.248
      3. Di AddressPoolClaim dari langkah 3.c.i, tambahkan kolom berikut di kolom Spec:
        staticIPRanges:
        - startIPAddress: {Start IP from step 3.d.ii}
          size: {Size from step 3.d.ii}
        Gunakan perintah berikut:
        `kubectl edit addresspoolclaim ADDRESS_POOL_CLAIM_NAME -n ORGANIZATION_NAME-system-cluster --kubeconfig ORGANIZATION_ADMIN_KUBECONFIG
        Hasilnya harus terlihat seperti berikut jika Anda menggunakan org-1 dari 3.d.ii misalnya:
        apiVersion: system.private.gdc.goog/v1alpha1
        kind: AddressPoolClaim
        metadata:
          name: org-1-system-bgp-flat-ip-ipv4-apc
          namespace: org-1-system-cluster
          ...
        spec:
          category: InternalOverlayNetwork
          ...
          parentReference:
            name: worker-node-network-subnet
            type: SubnetClaim
          size: 2
          staticIPRanges:
          - startIPAddress: 10.0.0.252
            size: 2
        status:
          allocatedIPRanges: ...
          ...
  4. Lakukan pembersihan untuk menghindari Sesi BGP yang tidak perlu pada hardware TORSwitch.
    1. Untuk mencantumkan semua resource TORSwitchInternal yang perlu diperbarui, jalankan:
      kubectl get torswitchinternals --kubeconfig ROOT_ADMIN_KUBECONFIG -A
    2. Untuk setiap TORSwitchInternals yang tercantum dalam output perintah sebelumnya, jalankan perintah berikut:
      kubectl edit torswitchinternal TOR_SWITCH_INTERNAL_NAME --kubeconfig ROOT_ADMIN_KUBECONFIG -n gpc-system
    3. Untuk semua objek TORSwitchInternal, hapus semua entri dari daftar .spec.ebgpNeighbors yang memiliki NeighborIP yang sama dengan LocalIP dari langkah 2.b. Misalnya, LocalIP dari 2.2.2.2 dicatat dari langkah 2.b. Berikut adalah contoh TORSwitchInternal sebelum dan sesudah langkah pembersihan.
      Sebelum pembersihan:
      apiVersion: network.private.gdc.goog/v1alpha1
      kind: TORSwitchInternal
      metadata:
        ...
      spec:
        ...
        ebgpNeighbors:
        - md5SecretReference: {}
          neighborIP: 1.1.1.1
          peerASN: 11111
          updateSource:
            loopbackID: ...
          vrf: ...
        - md5SecretReference: {}
          neighborIP: 2.2.2.2
          peerASN: 11111
          updateSource:
            loopbackID: ...
          vrf: ...
        l2Networks:
        ...
      Setelah pembersihan. Perhatikan entri ebgpNeighbor yang dihapus:
      apiVersion: network.private.gdc.goog/v1alpha1
      kind: TORSwitchInternal
      metadata:
        ...
      spec:
        ...
        ebgpNeighbors:
        - md5SecretReference: {}
          neighborIP: 1.1.1.1
          peerASN: 11111
          updateSource:
            loopbackID: ...
          vrf: ...
        l2Networks:
        ...
  5. Validasi dengan melakukan Langkah 1 dan mengonfirmasi bahwa semua objek BGPSession States telah kembali ke Established. Mungkin diperlukan waktu sekitar 10 menit agar semua modifikasi diterapkan ke konfigurasi TORSwitch GDC fisik.
Upgrade 1.9.7 - 1.9.21

Upgrade node dan sistem operasi tidak berjalan

Selama upgrade, ada kemungkinan upgrade node dan sistem operasi tidak berjalan.

Gejala:

Anda mungkin melihat node yang memiliki status Ready, SchedulingDisabled selama beberapa jam.

kubectl --kubeconfig $ROOT_ADMIN_KUBECONFIG get no
NAME      STATUS                    ROLES           AGE   VERSION
aa-bm01   Ready, SchedulingDisabled  control-plane   52d   v1.27.4-gke.500
ab-bm01   Ready                      control-plane   52d   v1.27.4-gke.500
ac-bm01   Ready                      control-plane   52d   v1.27.4-gke.500
      

Solusi:

  1. Ikuti runbook PLATAUTH-SSH 0001 untuk mendapatkan kunci SSH untuk node yang dimaksud. Setelah terhubung ke node dengan SSH, jalankan perintah berikut:
    multipath -ll | grep fail
  2. Lanjutkan ke langkah berikutnya hanya jika output terlihat mirip dengan berikut ini:
    size=1.0G features='3 queue_if_no_path pg_init_retries 50' hwhandler='1 alua' wp=rw
    |-+- policy='service-time 0' prio=0 status=enabled
    | |- 7:0:0:7 sdad 65:208 failed faulty running
    | `- 8:0:0:7 sdae 65:224 failed faulty running
    `-+- policy='service-time 0' prio=0 status=enabled
      |- 6:0:0:7 sdac 65:192 failed faulty running
      `- 5:0:0:7 sdab 65:176 failed faulty running
  3. Jalankan perintah berikut untuk memperbaiki masalah:
    systemctl stop multipathd
    iscsiadm -m session -R
    systemctl start multipathd
Upgrade 1.9.8-1.9.21

Pengurasan node diblokir karena pod macet dalam status penghentian

Gejala:

Jika upgrade cluster ABM terhenti selama lebih dari 2 jam, pengurasan node mungkin diblokir.

Solusi:

Operasi berikut menggunakan cluster admin root sebagai contoh ${TARGET_KUBECONFIG} mengacu pada `kubeconfig` untuk cluster ABM target yang pengosongan nodenya diblokir, ${KUBECONFIG} mengacu pada kubeconfig untuk cluster yang mengelola cluster ABM target. Untuk cluster admin root, keduanya merujuk ke kubeconfig admin root.

Selesaikan langkah-langkah berikut untuk melihat apakah upgrade cluster ABM macet:

  1. Periksa node yang macet saat pengurasan:
    kubectl --kubeconfig=${KUBECONFIG} get cluster -n root root-admin -ojsonpath={.status.controlPlaneNodePoolStatus.nodesDraining}; echo

    Hasilnya seperti:

    {"10.200.0.2": 2}

    Artinya, untuk node "10.200.0.2", dua pod sedang dikuras.

  2. Periksa apakah pod masih dikuras dari node (disebut sebagai ${NODE_BEING_DRAINED}):
    kubectl --kubeconfig=${KUBECONFIG} get baremetalmachine -n root ${NODE_BEING_DRAINED:?} -ojsonpath='{range .status.bareMetalMachineDrainingStatus.podsYetToDrain[?(@.kind=="Pod")]}{@.namespace}{", "}{@.name}{"\n"}{end}'
  3. Jumlah pod output harus sama dengan jumlah pod yang dikuras yang dilaporkan pada langkah sebelumnya.

    Untuk setiap pod yetToDrain seperti yang tercantum di langkah 1, periksa status pod:
    kubectl --kubeconfig=${TARGET_KUBECONFIG} get pods -n ${POD_NAMESPACE} ${POD_NAME} -o wide

    Jika pod dalam status Running, atau jika pod audit-logs-loki-0 atau loki-0 dalam namespace obs-system dan pod tidak memiliki peristiwa yang mengeluhkan unable to unmount volume, hapus pod secara eksplisit dengan grace-period.

    kubectl --kubeconfig=${TARGET_KUBECONFIG} delete pods --grace-period=30 -n ${POD_NAMESPACE} ${POD_NAME}

  4. Untuk semua kasus lain saat pod macet saat dikuras, eskalasikan ke layanan on-call.
  5. Pantau hingga pengurasan node selesai.
  6. Ulangi langkah pertama jika node lain mengalami masalah pengurasan.
Upgrade 1.9.6
1.9.7
1.9.8

Distribusi artefak gagal setelah melampirkan tanda tangan

Rilis 1.9 dengan artefak bertanda tangan tidak dapat didistribusikan karena flag Override di DistributionPolicy disetel ke false, yang mencegahnya didistribusikan jika ada artefak dengan nama yang sama di tujuan pendaftaran.

Gejala:

Anda mungkin mengalami masalah berikut:

  • Artefak dengan tanda tangan dikirim. Log mungkin terlihat seperti ini:
    pushing the manifest of artifact library/private-cloud-staging/goharbor/harbor-core:sha256-755d062eb3b310fa7f1dd0505a8047f1fc91864b04fdfc5c6bd173da8ce8b87a.sig
  • Gagal mengirimkan artefak. Log mungkin terlihat seperti ini:
    failed to push manifest of artifact library/private-cloud-staging/goharbor/harbor-core:sha256-755d062eb3b310fa7f1dd0505a8047f1fc91864b04fdfc5c6bd173da8ce8b87a.sig
  • Artefak 404 tidak ditemukan. Log mungkin terlihat seperti ini:
    http status code: 404, body: {"errors":[{"code":"NOT_FOUND","message":"artifact library/private-cloud-staging/goharbor/harbor-core@sha256:755d062eb3b310fa7f1dd0505a8047f1fc91864b04fdfc5c6bd173da8ce8b87a not found"}]}
  • Distribusi artefak gagal.

Solusi:

Untuk mengatasi masalah ini, lakukan langkah-langkah berikut:

  1. Perbarui resource kustom (CR) DistributionPolicy untuk menetapkan Spec.Override ke true.
  2. Picu ulang replikasi dengan mengikuti buku pedoman SAR-1005.
  3. Setelah menjalankan replikasi baru berhasil, perbarui ManualDistribution CR execution-ids di Annotation dengan ID eksekusi yang berhasil.
Modul keamanan hardware (HSM) 1.9.9

Server melaporkan bahwa tenant HSM tidak responsif

HSM mungkin melaporkan ServicesNotStarted secara berkala yang dapat menyebabkan server bare metal tidak menjadi sehat dan melaporkan pesan berikut:

"message": "failed to get master key name"

Gejala:

Anda mungkin mengalami masalah berikut:

  • Jalankan perintah kubectl get server:
    kubectl get server zp-aa-bm08 -n gpc-system -o jsonpath='{.status.conditions}' | jq .

    Outputnya mungkin terlihat seperti ini:

    "message": "failed to get master key name: HSMTenant gpc-system/root does not have condition \"Ready\"=true"
  • Jalankan perintah kubectl get HSM:
    kubectl get hsm -A

    Layanan mungkin macet di ServicesNotStarted.

Solusi:

Untuk mengatasi masalah ini, lakukan langkah-langkah berikut untuk memulai ulang HSM yang mengalami masalah:

  1. Instal alat kstl dari HSM pertama dengan menjalankan perintah berikut:
    export HSM_NAME=`kubectl get hsm \
      -n gpc-system -o jsonpath={.items[0].metadata.name} | tr -d '"'`
    
    export HSM_MGMT_IP=$(kubectl get hsm $HSM_NAME \
        --namespace gpc-system \
        --output jsonpath="{.spec.managementNetwork.ip}")
    
    
    
    curl --insecure \
      https://$HSM_MGMT_IP/downloads/ksctl_images.zip \
      --output ksctl_images.zip
    
    
    
    mkdir -p ~/bin
    
    unzip ksctl_images.zip -d ~/bin
    
    cp ~/bin/ksctl-linux-amd64 ~/bin/ksctl
    
    export PATH=$PATH:~/bin
    
    mkdir -p $HOME/.ksctl
    
    export ADMIN_SECRET_NAME=`kubectl get secrets -n hsm-system -o json | jq .items[].metadata.name | tr -d '"' | grep "admin" | grep -v "luna-admin" | grep -v "ksadmin"`
    export ADMIN_PW=$(kubectl get secrets $ADMIN_SECRET_NAME -n hsm-system -o jsonpath="{.data.password}" | base64 -d)
    
    
    export ADMIN_SSH_SECRET_NAME=`kubectl get secrets -n hsm-system -o json | jq .items[].metadata.name | tr -d '"' | grep "ssh"`
    kubectl get secret $ADMIN_SSH_SECRET_NAME \
        --namespace=hsm-system \
        --output jsonpath='{.data.ssh-privatekey}' \
        | base64 --decode > $HOME/.ksctl/ssh-privatekey
    chmod 0600 $HOME/.ksctl/ssh-privatekey
    
    
    cat << EOF > $HOME/.ksctl/config.yaml
    KSCTL_URL: https://$HSM_MGMT_IP:443
    KSCTL_USERNAME: admin
    KSCTL_PASSWORD: '$ADMIN_PW'
    KSCTL_NOSSLVERIFY: true
    EOF
  2. Pastikan bahwa HSM mengalami masalah saat memulai ulang. Untuk setiap HSM yang macet di ServicesNotStarted, dapatkan $HSM_MGMT_IP dan verifikasi bahwa layanan tidak berfungsi:
    ksctl services status  --url=https://$HSM_MGMT_IP
  3. Menjeda semua HSM, cluster HSM, dan tenant HSM:
    kubectl annotate hsm --all \
      --namespace=gpc-system \
      hsm.security.private.gdc.goog/paused=true
    
    kubectl annotate hsmcluster --all \
      --namespace=gpc-system \
      hsm.security.private.gdc.goog/paused=true
    
    kubectl annotate hsmtenant --all \
      --namespace=gpc-system \
      hsm.security.private.gdc.goog/paused=true
  4. Buat koneksi SSH ke HSM saat layanan tidak berfungsi:
    ssh -i $HOME/.ksctl/ssh-privatekey ksadmin@$HSM_MGMT_IP
  5. Pastikan Anda berada di HSM yang benar. Periksa apakah Anda membuat koneksi SSH dengan $HSM_MGMT_IP yang benar.
  6. Mulai ulang HSM pertama dari dalam HSM:
    ksadmin@ciphertrust:~ sudo reboot
  7. Tunggu hingga HSM pertama menjadi responsif dari luar HSM:
    watch -c ksctl services status --url=https://$HSM_MGMT_IP

    Langkah ini mungkin memerlukan waktu sekitar lima menit agar HSM dimulai ulang.

  8. Ulangi langkah-langkah ini untuk HSM lain yang layanannya tidak berfungsi.
  9. Lanjutkan HSM, cluster HSM, dan tenant HSM:
    kubectl annotate hsm --all \
      --namespace=gpc-system \
      hsm.security.private.gdc.goog/paused-
    
    kubectl annotate hsmcluster --all \
      --namespace=gpc-system \
      hsm.security.private.gdc.goog/paused-
    
    kubectl annotate hsmtenant --all \
      --namespace=gpc-system \
      hsm.security.private.gdc.goog/paused-
  10. Pastikan semuanya cocok. Mungkin perlu waktu lima hingga sepuluh menit agar HSM dapat disesuaikan.
Pemantauan 1.9.0
1.9.1
1.9.2
1.9.3
1.9.4
1.9.5
1.9.6
1.9.7
1.9.8
1.9.9

Pemberitahuan alertmanager-servicenow-webhook di cluster sistem organisasi tidak sampai ke ServiceNow

Gejala:

Notifikasi alertmanager-servicenow-webhook tidak mencapai ServiceNow di cluster sistem organisasi untuk versi GDC sebelum 1.11.3. Log berisi pesan error read: connection reset by peer. Masalah ini disebabkan oleh kurangnya label untuk mengaktifkan traffic keluar. Jika webhook perlu berkomunikasi antar-organisasi, webhook harus menggunakan NAT keluar.

Solusi:

Anda harus mengaktifkan traffic keluar untuk alertmanager-servicenow-webhook di cluster sistem organisasi. Untuk mengatasi masalah ini, lakukan langkah-langkah berikut:

  1. Tetapkan prasyarat yang diperlukan:
    • Instal antarmuka command line (CLI) gdcloud.
    • Dapatkan jalur ke file kubeconfig dari cluster admin root dan admin org. Simpan jalur di variabel lingkungan ROOT_KUBECONFIG dan ORG_SYSTEM_KUBECONFIG.
    • Minta Admin Keamanan Anda untuk memberi Anda peran Observability Admin (observability-admin) di namespace obs-system untuk cluster admin root dan admin org.
  2. Konfirmasi bahwa masalah ada di lingkungan Anda:
    1. Dapatkan deployment alertmanager-servicenow-webhook:
      kubectl --kubeconfig "${ORG_SYSTEM_KUBECONFIG:?}" get deployment alertmanager-servicenow-webhook -n obs-system
    2. Melihat log untuk deployment alertmanager-servicenow-webhook:
      kubectl --kubeconfig "${ORG_SYSTEM_KUBECONFIG:?}" logs deployment/alertmanager-servicenow-webhook -n obs-system

      Jika log berisi pesan error read: connection reset by peer, masalah tersebut ada dan Anda harus melanjutkan langkah-langkah solusi ini.

  3. Tambahkan label traffic keluar:
    1. Dapatkan file YAML deployment alertmanager-servicenow-webhook saat ini:
      kubectl --kubeconfig "${ORG_SYSTEM_KUBECONFIG:?}" get deployment alertmanager-servicenow-webhook -o yaml \
        -n obs-system > $HOME/alertmanager-servicenow-webhook-existing-deployment.yaml && \
      kubectl --kubeconfig "${ORG_SYSTEM_KUBECONFIG:?}" get deployment alertmanager-servicenow-webhook -o yaml \
        -n obs-system > $HOME/alertmanager-servicenow-webhook-new-deployment.yaml
    2. Tambahkan label keluar ke file YAML deployment alertmanager-servicenow-webhook:
      yq e -i '.spec.template.metadata.labels += {"egress.networking.gke.io/enabled": "true"}' $HOME/alertmanager-servicenow-webhook-new-deployment.yaml
    3. Ganti file YAML deployment alertmanager-servicenow-webhook dengan pembaruan:
      kubectl --kubeconfig "${ORG_SYSTEM_KUBECONFIG:?}" replace -f \
      $HOME/alertmanager-servicenow-webhook-new-deployment.yaml -n obs-system

      Deployment harus dimulai ulang secara otomatis.

  4. Verifikasi bahwa masalah telah diperbaiki dengan menjalankan kembali langkah-langkah Pastikan masalah ada di lingkungan Anda. Pesan error log tidak boleh ditampilkan. Jika tidak, eskalasikan ke tim engineering.

Strategi rollback:

Jika langkah-langkah solusi gagal atau Anda melihat penurunan metrik, kembalikan file YAML deployment alertmanager-servicenow-webhook ke keadaan semula:

kubectl --kubeconfig "${ORG_SYSTEM_KUBECONFIG:?}" replace -f \
$HOME/alertmanager-servicenow-webhook-existing-deployment.yaml -n obs-system
Upgrade 1.9.10

NodeUpgradeTask untuk node macet di langkah NodeMaintainCompleted dalam jangka waktu yang lebih lama (lebih dari 30 menit).

Gejala:

Upgrade terhenti di langkah NodeMaintain.

gpc-system                org-1-admin-control-plane-node-poolphdzg          1                          in-progress                   3h58m
Status:                                                                                                                                                                              Tasks:
Name:          zp-aa-bm06                                                                                                                                                            Task Status:  finished
Name: zp-aa-bm04
Task Status:  finished
Name: zp-aa-bm05
Task Status: in-progress
Upgrade Status: in-progress
Events: none

nodeupgradetask untuk node pool yang sedang berlangsung menampilkan:

Status:                                                                                                                                                                              Conditions:                                                                                                                                                                            Last Transition Time:  2023-11-09T18:26:31Z 
     Message:
     Observed Generation:1
     Reason:   Succeeded
     Status: True 
     Type: PreUpgradeValidationCompleted
  Last Transition Time:  2023-11-09T18:26:31Z 
     Message:  
     Observed Generation:1  
     Reason: InProgress
     Status:  False
     Type: NodeMaintainCompleted
  Last Transition Time:  2023-11-09T18:26:31Z
    Message:                                                                                                                                                                         Observed Generation:1
    Reason:  Reconciling
    Status:   Unknown
    Type: Succeeded
│   Data IP:10.249.20.4 bm-5f3d1782
│   Start Time: 2023-11-09T18:26:31Z  Events: none  

Solusi:

Ikuti langkah-langkah berikut:

  1. Dapatkan nama deployment cap-controller-manager.
    kubectl --kubeconfig ${KUBECONFIG} get deployment -n kube-system | grep cap-controller-manager
    cap-controller-manager-1.28.0-gke.435    1/1     1            1           30h
  2. Tentukan nama cap-controller-manager (misalnya: cap-controller-manager-1.28.0-gke.435):
    export CAP_DEPLOYMENT_NAME=

  3. Mulai ulang cap-controller-manager.
    kubectl --kubeconfig ${KUBECONFIG} rollout restart deployment ${CAP_DEPLOYMENT_NAME} -n kube-system
    deployment.apps/cap-controller-manager-1.28.0-gke.435 restarted
Upgrade 1.9.10

Upgrade terhenti di langkah pemeriksaan pasca-upgrade AdminClusterHealth.

Gejala:

Upgrade macet di langkah pemeriksaan pasca-upgrade AdminClusterHealth.

Events:
Type     Reason            Age                   From                 Message 
----     ------            ----                  ----                 -------
Warning  ReconcileBackoff  70s (x33 over 4h16m)  OrganizationUpgrade  admin cluster is not ready for org root

Objek organisasi menampilkan:

NAMESPACE         NAME          READY
gpc-system       org-1           True
gpc-system        root           False

Solusi:

Ikuti langkah-langkah berikut:

Gunakan perintah berikut untuk melewati pra-penerbangan:

kubectl delete organizationupgrade name -n gpc-system && kubectl annotate -n gpc-system organization name upgrade.private.gdc.goog/skip-preflight-check=ok

Upgrade 1.9.9

NodeUpgradeTask mungkin memiliki kondisi failed to monitor failover registry recreation: failed to monitor job: job not complete

Gejala:

NodeUpgradeTask mungkin memiliki kondisi failed to monitor failover registry recreation: failed to monitor job: job not complete yang menghalangi penyelesaian tugas.

Solusi:

Untuk mengatasi masalah ini, mulai ulang tugas:

  1. Hapus tugas bernama create-failover-registry-*** yang memiliki penyelesaian "0/1".
  2. Hapus anotasi failover-registry-creation-job-name dari objek Server yang sedang diupgrade.

Pengontrol akan otomatis membuat tugas lagi.

Upgrade 1.9.20

Node gagal pada tugas backup-ipsec-for-upgrade-bm.

Gejala:

Node gagal pada tugas backup-ipsec-for-upgrade-bm.

I0512 01:05:55.949814       7 main.go:24] BuildDate: 2023-04-01T15:48:57Z
I0512 01:05:55.949920       7 main.go:25] Version: 1.9.2-gdch.135.dirty
"

Solusi:

Hapus tugas `backup-ipsec-for-upgrade-bm` dan tunggu hingga tugas tersebut dibuat ulang.

Google Distributed Cloud 1.9.9

Pembuatan organisasi mungkin terhenti karena node pool bidang kontrol tidak siap tepat waktu.

Gejala:

Node pool bidang kontrol tidak siap karena cluster etcd gagal dimulai. Anda mungkin mengalami masalah berikut:

--- FAIL: TestPlan (27563.26s)
    --- FAIL: TestPlan/TestMTSystemClusterHealth (3445.24s)
        k8s_mt_system_cluster_healthcheck_test.go:149: FATAL FLAKE: TestMTSystemClusterHealth: system cluster did not become ready in time: NodePool org-1-system-cluster/control-plane-node-pool didn't get ready: NodePool "control-plane-node-pool" is not ready
            Error Routing:
            {
              "Name": "NODEPOOL_NOT_READY_ERR",
              "Description": "NodePool is not ready",
              "OwnerTeam": "Cluster Management",
              "OwnerLDAP": "",
              "TrackingBug""
            }
FAIL

Solusi:

Untuk mengatasi masalah ini, lakukan langkah-langkah berikut:

  1. Periksa apakah pembuatan cluster terhenti pada tugas inisialisasi mesin.
    Tugas kubeadm join gagal karena:
    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
    Tugas kubeadm reset gagal karena:
    panic: runtime error: invalid memory address or nil pointer dereference
  2. Gunakan SSH untuk terhubung ke node panel kontrol yang berfungsi.
  3. Jalankan perintah etcdctl untuk membersihkan data yang sudah tidak digunakan.
  4. Periksa langganan etcd:
    # etcdctl --key=/etc/kubernetes/pki/etcd/peer.key --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/peer.crt member list
    5feb7ac839625038, started, vm-72fed95a, https://10.252.164.11:2380, https://10.252.164.11:2379, false
    99f09f145a74cb15, started, vm-8a5bc966, https://10.252.164.12:2380, https://10.252.164.12:2379, false
    bd1949bcb70e2cb5, unstarted, , https://10.252.164.10:2380, , false
  5. Hapus keanggotaan yang sudah tidak berlaku:
    # etcdctl --key=/etc/kubernetes/pki/etcd/peer.key --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/peer.crt member remove bd1949bcb70e2cb5
    Member bd1949bcb70e2cb5 removed from cluster  9d70e2a69debf2f
Pencadangan dan pemulihan VM 1.9.0
1.9.1
1.9.2
1.9.3
1.9.4
1.9.5
1.9.6
1.9.7
1.9.8
1.9.9
1.9.10
1.9.11

Setelan webhook VM mencegah pengguna memulai prosedur pencadangan dan pemulihan VM

Gejala:

Proses pencadangan dan pemulihan VM tidak dapat dimulai oleh pengguna karena setelan kontrol akses berbasis peran (RBAC) dan skema yang tidak tepat di pengelola VM.
Nama rencana pencadangan VM tidak boleh lebih dari 63 karakter. Misalnya, Anda mungkin melihat pesan error ini:

Internal error occurred: failed calling webhook
"vvirtualmachinebackupplantemplates.virtualmachine.gdc.goog":
failed to call webhook: Post "https://vmm-vm-controller-webhooks.vm-system.svc:443/validate-virtualmachine-gdc-goog-v1-virtualmachinebackupplantemplate?timeout=10s":
context deadline exceeded

Solusi:

Nama rencana pencadangan VM adalah gabungan dari nama VirtualMachineBackupPlanTemplate, jenis resource (yaitu vm atau vm-disk), dan nama resource tersebut. String gabungan ini harus tetap kurang dari 63 karakter.
Untuk melakukannya, buat nama resource ini tetap pendek saat membuatnya. Untuk mengetahui detail tentang pembuatan resource ini, lihat Membuat dan memulai instance VM dan Membuat rencana pencadangan untuk VM.

Upgrade 1.9.9

Upgrade OS node gagal karena error template

Gejala:

Upgrade gagal menjalankan tugas pencadangan ipsec karena error template berikut:

 
      "msg": "An unhandled exception occurred while templating '{'changed': True, 'stdout': 'connections {\\n  # A connection id defined for this specific connection\\n  pol_client {\\n    children {\\n      pol_cli

Solusi:

Ikuti langkah-langkah berikut:

  1. Login ke node tempat tugas upgrade gagal.

  2. Simpan swanctl.conf sebagai cadangan.

  3. Hapus baris dengan tanda kurung kurawal dalam file /etc/swanctl/swanctl.conf.

  4. Hapus tugas backup-ipsec-for-upgrade yang gagal dan tunggu hingga tugas tersebut dibuat ulang, lalu tugas berikutnya berhasil diselesaikan.

  5. Tambahkan kembali baris yang dihapus pada langkah 3 ke /etc/swanctl/swanctl.conf.

Platform node 1.9.6
1.9.7
1.9.8
1.9.9

Node bare metal admin root menolak traffic jaringan masuk setelah update firmware

Saat upgrade firmware dimulai di cluster admin root, setelah salah satu node menyelesaikan upgrade node, node tersebut tampak macet.

Gejala:

  • nodeupgradetask macet di tahap NodeResumeCompleted.
  • Tugas machine-init gagal dan log menunjukkan bahwa kubeadm join gagal.
  • Anda tidak dapat membuat koneksi SSH ke node menggunakan alamat IP bidang data.

Masalah ini disebabkan oleh node yang diupgrade tidak lagi menerima traffic jaringan masuk.

Solusi:

  1. Periksa log job/nodeupgradetask yang gagal untuk mencatat alamat IP dan mencari tahu node mana yang bermasalah.
  2. Mulai ulang pod anetd-client dari node yang terpengaruh.
  3. Verifikasi koneksi SSH di IP dataplane ke node yang terpengaruh.

Langkah opsional untuk penyelidikan lebih lanjut:

  1. Shell ke dalam container agen cilium dari salah satu pod anetd yang berfungsi.
  2. Jalankan cilium-bugtool dan tunggu sekitar 10 detik. Alat ini menyimpan log di direktori /var/log/network/policy_action.log.
  3. Cari deny untuk melihat apakah traffic ditolak:
    grep -r "deny" /var/log/network/ to
    Perhatikan server mana yang ditolak, kemungkinan node bare metal admin root.
Upgrade 1.9.13
1.9.14
1.9.15
1.9.16
1.9.17
1.9.18
1.9.19

Upgrade gagal di add-on atat-webhooks

Gejala:

  • Upgrade gagal pada add-on atat-webhooks.
  • Label add-on ATAT yang sudah tidak berlaku dapat menyebabkan upgrade Organisasi gagal. Contoh:
     Invalid value: "TO1234": The current date 2024-05-06 is not within the valid range of this TaskOrder: 2023-12-16 - 2024-04-16.
  • Solusi:

    Pengguna harus memperbarui label add-on ATAT portofolio mereka. Ikuti runbook ATAT-R0003 untuk menyelesaikan masalah ini.

Upgrade 1.9.13
1.9.14
1.9.15
1.9.16
1.9.17
1.9.18
1.9.19

Upgrade OS node pada bare metal organisasi tenant gagal

Gejala:

  • Upgrade OS node di bare metal tenant org gagal saat mengupgrade dari 1.9.12 ke 1.9.13. Pesan berikut akan muncul:
     
           Reason:                Succeeded                                                                                                                          
           Status:                True                                                                                                                                
           Type:                  NodeMaintainCompleted                                                                                                              
           Last Transition Time:  2024-05-06T18:25:20Z                                                                                                               
           Message:               the ssh cert rotation job is still in progress                                                                                     
           Observed Generation:   1                                                                                                                                   
           Reason:                ReconcileBackoff                                                                                                                   
           Status:                Unknown                                                                                                                           
           Type:                  Succeeded                                                                                                                         
           Last Transition Time:  2024-05-06T18:27:42Z 
  • SSH generation fails. The following message appears:
      
           "tasks": [                                                                                                                                
                     {                                                                                                                                              
                         "hosts": {                                                                                                                               
                             "10.248.4.72": {                                                                                                                       
                                 "action": "gather_facts",                                                                                                          
                                 "changed": false,                                                                                                                  
                                 "msg": "Failed to connect to the host via ssh: Certificate invalid: name is not a listed principal\r\nHost key verification failed 
     .",                                                                                                                                                            
                                 "unreachable": true                                                                                                                
                             }                                                                                                                                      
                         },                                                                                                                                         
                         "task": {                                                                                                                                  
                             "duration": {                                                                                                                          
                                 "end": "2024-05-06T19:47:11.284055Z",                                                                                              
                                 "start": "2024-05-06T19:47:11.146536Z"                                                                                             
                             },                                                                                                                                     
                             "id": "98f2b32d-e15c-fe27-2225-00000000001c",                                                                                          
                             "name": "Gathering Facts"                                                                                                              
                         }                                                                                                                                          
                     }  ]
  • Solusi:

    1. Hapus anotasi cluster.private.gdc.goog/ssh-trusted-ca-versions di CR server admin root dan admin org.
    2. Hapus tugas ansible yang gagal. Tugas baru dibuat secara otomatis karena anotasi cluster.private.gdc.goog/host-key-rotation-in-progress ditandai benar di CR server.
    3. Setelah rotasi, anotasi cluster.private.gdc.goog/ssh-trusted-ca-versions ditambahkan kembali ke CR server.
Node, Upgrade 1.9.*

Pod di mesin bare metal mungkin menampilkan status CrashLoopBackOff karena aturan cilium dihapus

Gejala:

Setelah upgrade, pod di beberapa node bare metal akan mengalami masalah di status CrashLoopBackOff, dan iptables -L -v -n | grep CILIUM di node akan menampilkan hasil kosong.

Solusi:

Untuk mengatasi masalah ini, selesaikan langkah-langkah berikut:

  1. Jalankan perintah berikut: crictl pods --name anetd -o json | jq --raw-output '.items[].id' | xargs crictl rmp --force.
  2. Jalankan iptables -L -v -n | grep CILIUM lagi dan verifikasi bahwa ada output.
Logging 1.9.14
1.9.15

Pod audit-logs-loki-0 mungkin menampilkan status CrashLoopBackOff karena error Loki

Gejala:

Pod audit-logs-loki-0 berada dalam status CrashLoopBackOff.

Verifikasi status pod:

      kubectl --kubeconfig $SYSTEM_KUBECONFIG get pod -n obs-system audit-logs-loki-0
      

Dengan SYSTEM_KUBECONFIG adalah jalur ke file kubeconfig.

Error Loki ditampilkan seperti pada output berikut, dengan CrashLoopBackOff adalah statusnya:

      NAME                READY   STATUS             RESTARTS       AGE
      audit-logs-loki-0   1/2     CrashLoopBackOff   9 (4m6s ago)   25m
      

Solusi:

Untuk mengatasi masalah ini, selesaikan langkah-langkah berikut:

  1. Ekspor jalur ke file kubeconfig ke variabel lingkungan yang disebut SYSTEM_KUBECONFIG.
  2. Turunkan skala operator Logmon:
          kubectl scale deployment -n obs-system logmon-operator --replicas 0
          
  3. Perkecil skala resource Loki:
          kubectl scale loki -n obs-system --replicas 0
          kubectl scale statefulset audit-logs-loki -n obs-system --replicas 0
          
  4. Hapus klaim volume persisten (PVC) audit-logs-loki-storage-audit-logs-loki-0 dan loki-storage-loki-0.
  5. Hapus volume persisten (PV) obs-system/loki-storage-loki-0 dan obs-system/audit-logs-loki-storage-audit-logs-loki-0.
  6. Tingkatkan skala operator Logmon:
          kubectl scale deployment -n obs-system logmon-operator --replicas 1
          
  7. Ikuti langkah-langkah untuk memperbarui konfigurasi logging dari versi 1.9.
  8. Periksa apakah pod audit-logs-loki-0 sedang berjalan:
          kubectl --kubeconfig $SYSTEM_KUBECONFIG get pod -n obs-system audit-logs-loki-0
          

    Status Running harus ditampilkan dalam output seperti dalam contoh berikut:

          NAME                READY   STATUS    RESTARTS   AGE
          audit-logs-loki-0   2/2     Running   0          15h
          
Infrastruktur sebagai kode 1.9.16

Penginstalan GitLab gagal

Gejala:

Saat mengupgrade ke 1.9.16, penginstalan add-on Gitlab gagal. Anda mungkin melihat error seperti ini:

Error occurred during addon installation: failed to upgrade chart: an error occurred while rolling back the release. original upgr │
│ ade error: timed out waiting for the condition: deployments/gitlab-sidekiq-all-in-1-v2: release gitlab failed: client rate limiter Wait returned an error: ra │
│ te: Wait(n=1) would exceed context deadline

Pod postgres, seperti gpc-system/gitlab-postgresql-0, berada dalam status penghentian.

Solusi:

  1. Hapus secara paksa pod postgres yang macet dalam status menghentikan:
    kubectl delete pod POD_NAME --grace-period=0 --force --namespace NAMESPACE 
  2. Pastikan pod postgres dibuat ulang setelah dihapus.
Pengelolaan akses dan identitas 1.9.19
1.9.20

Autentikasi gagal saat mengakses Konsol

Gejala:

Saat mengupgrade dari 1.9.18 dan mencoba mengakses konsol GDC, Anda mungkin melihat pesan berikut:

Authentication failed, please contact your system administrator

Solusi:

  1. Dapatkan CA yang diperlukan:
    export KUBECONFIG=ORG_ADMIN_KUBECONFIG
    kubectl get secret fakeoidcprovider-https -n istio-system -o jsonpath='{.data.ca\.crt}'
  2. Buka file konfigurasi klien untuk diedit:
    kubectl edit clientconfig -n kube-public default
  3. Temukan certificateAuthorityData di konfigurasi klien dan perbarui CA yang diperlukan menggunakan jalur berikut: spec > authentication > (fake-oidc-provider) > oidc > certificateAuthorityData