Pelajari cara memigrasikan layanan Knative di VMware untuk menggunakan armada sehingga Anda dapat mengupgrade ke Anthos Versi 1.8.
Layanan Knative kini merupakan pengalaman terpisah dari produk Cloud Run terkelola dan kini disediakan sebagai komponen armada di cluster Anda. Menginstal fitur Knative serving di VMware sebagai komponen fleet memungkinkan Anda mengelola dan mengupgrade penginstalan secara terpisah dari komponen fleet lainnya.
Pada tingkat tinggi, untuk memigrasikan penginstalan inferensi Knative di VMware agar menggunakan kumpulan instance, Anda harus:
- Konfigurasi penginstalan inferensi Knative di VMware untuk memenuhi persyaratan armada.
- Aktifkan komponen fitur penayangan Knative di fleet Anda.
Perhatikan bahwa server Kubernetes API tidak terpengaruh selama migrasi ini.
Untuk mengetahui detail tentang cara melakukan penginstalan baru inferensi Knative di VMware, lihat Menginstal inferensi Knative di VMware.
Sebelum memulai
Anda harus memenuhi persyaratan berikut:
Langkah-langkah ini mengharuskan cluster Knative serving di VMware Anda terdaftar ke fleet dan terlihat di Google Cloud konsol:
Penginstalan Knative serving di VMware Anda berada di cluster yang menjalankan Anthos Versi 1.7 atau yang lebih lama.
Istio tidak lagi didukung di Anthos 1.8. Cloud Service Mesh versi 1.18 harus diinstal di fleet Anda dan penginstalan Knative Serving harus dikonfigurasi sebelum Anda mengupgrade cluster tersebut ke Versi 1.8.
Lihat petunjuk Cloud Service Mesh untuk mengetahui detail tentang penginstalan di Google Distributed Cloud.
Perhatikan bahwa Cloud Service Mesh mengharuskan cluster Anda menggunakan jenis mesin yang memiliki setidaknya empat vCPU, seperti
e2-standard-4. Jika Anda perlu mengubah jenis mesin cluster, lihat Memigrasikan workload ke jenis mesin yang berbeda.Ada dua opsi untuk memigrasikan penayangan Knative ke Cloud Service Mesh, Anda dapat:
Dapatkan alamat IP eksternal baru yang akan Anda konfigurasi untuk load balancer.
Gunakan kembali alamat IP load balancer yang ada.
Pastikan lingkungan command line Anda dikonfigurasi dan diupdate.
Bermigrasi ke fleet
Untuk mengupgrade Anthos ke Versi 1.8, Anda harus melakukan langkah-langkah berikut terlebih dahulu untuk memastikan bahwa penayangan Knative yang ada di VMware dimigrasikan untuk menggunakan komponen fleet.
Akses cluster admin Anda
Dapatkan jalur dan nama file kubeconfig cluster admin Anda, lalu
buat variabel lingkungan ADMIN_KUBECONFIG:
export ADMIN_KUBECONFIG=[ADMIN_CLUSTER_KUBECONFIG]
Ganti [ADMIN_CLUSTER_KUBECONFIG] dengan jalur dan nama file ke file kubeconfig cluster admin Anda.
Mengonfigurasi setiap cluster pengguna
Buat variabel lingkungan lokal berikut untuk cluster pengguna:
Buat variabel lingkungan
USER_KUBECONFIGdengan jalur file kubeconfig cluster pengguna Anda:export USER_KUBECONFIG=[USER_CLUSTER_KUBECONFIG]Ganti [USER_CLUSTER_KUBECONFIG] dengan jalur dan nama file ke file kubeconfig cluster pengguna Anda.
Buat variabel lingkungan untuk konfigurasi berikut:
- ID project Google Cloud Anda.
- Lokasi resource Google Cloud Anda.
- Nama cluster pengguna.
export PROJECT_ID=$(kubectl get configmaps --namespace knative-serving config-observability --output jsonpath="{.data['metrics\.stackdriver-project-id']}") export CLUSTER_LOCATION=$(kubectl get configmaps --namespace knative-serving config-observability --output jsonpath="{.data['metrics\.stackdriver-gcp-location']}") export CLUSTER_NAME=$(kubectl get configmaps --namespace knative-serving config-observability --output jsonpath="{.data['metrics\.stackdriver-cluster-name']}")
Hapus konfigurasi
cloudrundari resource kustomOnPremUserClustercluster pengguna Anda:Pastikan
cloudRundisetel diOnPremUserCluster:$ kubectl get onpremusercluster \ "${CLUSTER_NAME}" \ --namespace "${CLUSTER_NAME}-gke-onprem-mgmt" \ --kubeconfig="${ADMIN_KUBECONFIG}" \ --output=jsonpath="{.spec.cloudRun}"Hasil:
{"enabled":true}Menghapus
cloudRundariOnPremUserCluster:kubectl patch onpremusercluster \ "${CLUSTER_NAME}" \ --namespace "${CLUSTER_NAME}-gke-onprem-mgmt" \ --kubeconfig="${ADMIN_KUBECONFIG}" \ --type="merge" \ --patch '{"spec": {"cloudRun": null}}'Validasi bahwa
cloudRunberhasil dihapus dariOnPremUserClusterdengan menjalankan perintahgetyang sama dan memverifikasi bahwa tidak ada konfigurasi yang ditampilkan:kubectl get onpremusercluster \ "${CLUSTER_NAME}" \ --namespace "${CLUSTER_NAME}-gke-onprem-mgmt" \ --kubeconfig="${ADMIN_KUBECONFIG}" \ --output=jsonpath="{.spec.cloudRun}"Tidak ada output ke terminal Anda.
Perbarui secret create-config cluster pengguna Anda:
Buat salinan YAML lokal dari file create-config:
kubectl get secret create-config \ --kubeconfig="${ADMIN_KUBECONFIG}" \ --namespace "${CLUSTER_NAME}" \ --output=jsonpath={.data.cfg} \ | base64 -d > "${CLUSTER_NAME}_create_secret.yaml"Buka file
${CLUSTER_NAME}_create_secret.yamlyang baru saja Anda buat di editor, lalu hapus kolomcloudrundari bagianspec.Lakukan enkode base64 file
${CLUSTER_NAME}_cluster_create_secret.yamlmenjadi file.b64:cat "${CLUSTER_NAME}_create_secret.yaml" | base64 -w0 > "${CLUSTER_NAME}_create_secret.b64"Di editor, buka file
.b64lokal yang baru saja Anda buat, lalu salin string dari atributdata.cfguntuk digunakan pada langkah berikutnya.Anda harus memastikan bahwa Anda hanya menyalin konten dari atribut
cfg. Misalnya, jangan sertakan baris baru (\n).Jalankan perintah berikut untuk mengedit secret di cluster pengguna Anda:
kubectl edit secret create-config --kubeconfig="${ADMIN_KUBECONFIG}" \ --namespace "${CLUSTER_NAME}"Di editor yang terbuka, ganti kolom
data[cfg]dengan string yang Anda salin dari file.b64lokal, lalu simpan perubahan Anda.Verifikasi bahwa perubahan Anda di-deploy ke cluster pengguna dan atribut
cloudrunberhasil dihapus dari secretcreate-config:kubectl get secret create-config \ --kubeconfig="${ADMIN_KUBECONFIG}" \ --namespace ${CLUSTER_NAME} \ --output=jsonpath={.data.cfg} \ | base64 -d
Konfigurasi namespace
knative-servingdi cluster pengguna Anda:Hapus operator
cloudrun-operatordari namespaceknative-serving:kubectl delete deployments.apps --kubeconfig=${USER_KUBECONFIG} --namespace knative-serving cloudrun-operatorPatch configmap
config-networkdi namespaceknative-serving:kubectl patch configmap --kubeconfig=${USER_KUBECONFIG} --namespace knative-serving config-network --patch '{"metadata": {"annotations":{"knative.dev/example-checksum": null}}}'
Hapus konfigurasi
cloudrun.enableddari file konfigurasiuser-config.yamlpenginstalan Google Distributed Cloud Anda.Atribut berikut harus dihapus dari dalam file
user-config.yamlAnda:cloudRun: enabled: trueSaat Anda melakukan upgrade cluster ke Anthos Versi 1.8, perubahan konfigurasi ini akan di-deploy.
Jika memiliki beberapa cluster pengguna, Anda harus mengulangi semua langkah di bagian "Konfigurasi setiap cluster pengguna" ini untuk setiap cluster pengguna.
Mengonfigurasi komponen fleet
Aktifkan komponen penayangan Knative di fleet Anda:
gcloud container fleet cloudrun enable --project=$PROJECT_IDUntuk mengetahui detail dan opsi tambahan, lihat referensi gcloud container fleet cloudrun enable.
Opsional: Pastikan komponen fitur layanan Knative diaktifkan:
Konsol
Lihat apakah komponen layanan Knative Diaktifkan di konsolGoogle Cloud :
Command line
Lihat apakah status
appdevexperienceadalahENABLED:gcloud container fleet features list --project=$PROJECT_IDUntuk mengetahui detail dan opsi tambahan, lihat referensi gcloud container fleet features list.
Hasil:
NAME STATE appdevexperience ENABLEDDeploy resource kustom
CloudRununtuk menginstal inferensi Knative di VMware pada setiap cluster pengguna Anda. Secara default, versilatestdari inferensi Knative di-deploy.Jalankan perintah
kubectl applyberikut untuk men-deploy konfigurasi default resource kustomCloudRun:cat <<EOF | kubectl apply -f - apiVersion: operator.run.cloud.google.com/v1alpha1 kind: CloudRun metadata: name: cloud-run spec: metricscollector: stackdriver: projectid: $PROJECT_ID gcpzone: $CLUSTER_LOCATION clustername: $CLUSTER_NAME secretname: "stackdriver-service-account-key" secretkey: "key.json" EOF
Mengonfigurasi Cloud Service Mesh
Konfigurasi load balancer Cloud Service Mesh untuk setiap cluster pengguna Anda.
Anda dapat mengonfigurasi gateway ingress Cloud Service Mesh dengan mengonfigurasi alamat IP eksternal baru atau menggunakan kembali alamat IP yang ada:
Dengan alamat IP eksternal baru yang Anda peroleh, konfigurasi load balancer dengan mengikuti langkah-langkah di dokumentasi Cloud Service Mesh.
Perhatikan bahwa opsi ini memastikan layanan penayangan Knative Anda dimulai ulang tanpa gangguan.
Alternatif: Gunakan langkah-langkah berikut untuk mengonfigurasi load balancer Cloud Service Mesh ke alamat IP yang sudah ada.
Konfigurasi gateway layanan Anda ke Cloud Service Mesh dengan menjalankan perintah berikut:
export CURRENT_INGRESS_IP=$(kubectl get service --namespace gke-system istio-ingress --output jsonpath='{.spec.loadBalancerIP}') kubectl patch service --namespace istio-system istio-ingressgateway --patch "{\"spec\":{\"loadBalancerIP\": \"$CURRENT_INGRESS_IP\"}}" kubectl patch service --namespace gke-system istio-ingress --patch "{\"spec\":{\"loadBalancerIP\": null}}"Hapus setelan konfigurasi Istio saat ini:
kubectl patch configmap --namespace knative-serving config-istio --patch '{"data":{"local-gateway.cluster-local-gateway": null}}' kubectl patch configmap --namespace knative-serving config-istio --patch '{"data":{"gateway.gke-system-gateway": null}}'
Memverifikasi migrasi
Anda dapat memeriksa apakah appdevexperience-operator
sudah aktif dan berjalan untuk memverifikasi bahwa penayangan Knative di VMware telah berhasil dimigrasikan ke armada Anda.
Untuk setiap cluster pengguna, jalankan perintah berikut:
kubectl get deployment -n appdevexperience appdevexperience-operatorOperator appdevexperience-operator
harus menampilkan 1/1 sebagai siap, misalnya:
NAME READY UP-TO-DATE AVAILABLE AGE
appdevexperience-operator 1/1 1 1 1h
Jika operator gagal mencapai status siap, Anda dapat melihat halaman beban kerja cluster di konsol Google Cloud untuk mengidentifikasi masalah resource:
Buka workload Google Kubernetes Engine
Mengupgrade cluster
Setelah memigrasikan penginstalan Knative serving di VMware untuk menggunakan komponen fleet, Anda dapat mengupgrade cluster ke Anthos Versi 1.8. Ikuti petunjuk mendetail di Mengupgrade GKE On-Prem.
Pemecahan masalah
- Proses upgrade cluster pengguna Anda gagal diselesaikan
Pod
cluster-local-gatewaydi namespacegke-systemdapat mencegah cluster pengguna Anda menyelesaikan upgrade ke Anthos Versi 1.8. Podcluster-local-gatewaytidak lagi diperlukan dan dapat dihapus dengan aman.Untuk membantu proses upgrade secara manual, Anda dapat menghapus pod
cluster-local-gatewaysecara manual dengan menskalakan replika deployment Anda menjadi0. Contoh:Perkecil skala
cluster-local-gateway:kubectl scale deployment cluster-local-gateway --replicas 0 --namespace gke-systemPod
cluster-local-gatewaydi namespacegke-systemdan semua workload di namespaceknative-servingakan dihapus.Tunggu hingga proses upgrade selesai.