Bersiap untuk bermigrasi ke Autopilot dari Standard


Halaman ini memberikan pertimbangan dan rekomendasi yang akan membantu Anda memigrasikan workload dari cluster Google Kubernetes Engine (GKE) Standard ke cluster Autopilot dengan gangguan yang minimal pada layanan Anda. Halaman ini ditujukan bagi administrator cluster yang telah memutuskan untuk bermigrasi ke Autopilot. Jika Anda memerlukan informasi lebih lanjut sebelum memutuskan untuk bermigrasi, lihat Memilih mode GKE operasi serta Membandingkan GKE Autopilot dan Standard.

Cara kerja migrasi

Cluster Autopilot mengotomatiskan banyak fitur dan fungsionalitas opsional yang memerlukan konfigurasi manual di cluster Standard. Dibanding cluster Standard, cluster Autopilot menerapkan konfigurasi default yang lebih aman untuk aplikasi guna menyediakan lingkungan yang lebih siap produksi, serta mengurangi overhead pengelolaan yang diperlukan. Cluster autopilot menerapkan banyak praktik terbaik dan rekomendasi GKE secara default. Autopilot menggunakan model konfigurasi yang berfokus pada workload; Anda hanya perlu meminta apa yang dibutuhkan dalam manifes Kubernetes dan GKE akan menyediakan infrastruktur yang terkait.

Saat memigrasikan workload Standard ke Autopilot, Anda harus menyiapkan manifes workload untuk memastikan kompatibilitasnya dengan cluster Autopilot, misalnya dengan memastikan manifes Anda meminta infrastruktur yang biasanya harus Anda sediakan sendiri.

Untuk mempersiapkan dan menjalankan migrasi yang berhasil, lakukan tugas-tugas umum berikut:

  1. Jalankan pemeriksaan pre-flight pada cluster Standard yang ada untuk memastikan kompatibilitasnya dengan cluster Autopilot.
  2. Jika berlaku, modifikasi manifes workload Anda agar kompatibel dengan Autopilot.
  3. Lakukan uji coba untuk memeriksa apakah workload Anda berfungsi dengan benar di Autopilot.
  4. Rencanakan dan buat cluster Autopilot.
  5. Jika berlaku, update alat infrastruktur sebagai kode.
  6. Lakukan migrasi.

Sebelum memulai

Sebelum memulai, pastikan Anda telah menjalankan tugas berikut:

  • Aktifkan Google Kubernetes Engine API.
  • Aktifkan Google Kubernetes Engine API
  • Jika ingin menggunakan Google Cloud CLI untuk tugas ini, instal lalu initialize gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan gcloud components update.
  • Pastikan Anda sudah memiliki cluster Standard dengan workload yang berjalan.
  • Pastikan Anda memiliki cluster Autopilot tanpa workload untuk melakukan uji coba. Untuk membuat cluster Autopilot baru, lihat Membuat cluster Autopilot.

Menjalankan pemeriksaan pre-flight pada cluster Standard

Google Cloud CLI dan Google Kubernetes Engine API menyediakan alat pemeriksaan pre-flight yang memvalidasi spesifikasi workload Standard yang berjalan untuk mengidentifikasi inkompatibilitas dengan cluster Autopilot. Alat ini tersedia di GKE versi 1.26 dan yang lebih baru.

  • Untuk menggunakan alat ini di command line, jalankan perintah berikut:
gcloud container clusters check-autopilot-compatibility CLUSTER_NAME

Ganti CLUSTER_NAME dengan nama cluster Standard Anda. Anda juga dapat menambahkan --format=json ke perintah ini untuk mendapatkan output dalam bentuk file JSON.

Output berisi temuan untuk semua workload Standard yang berjalan, yang dikategorikan dan disertai rekomendasi praktis untuk memastikan kompatibilitas dengan Autopilot, jika berlaku. Tabel berikut menjelaskan kategori:

Hasil alat pre-flight
Passed Workload akan berjalan sesuai harapan tanpa perlu konfigurasi untuk Autopilot.
Passed with optional configuration

Workload akan berjalan di cluster Autopilot, tetapi Anda dapat membuat perubahan konfigurasi opsional untuk mengoptimalkan pengalaman. Jika Anda tidak membuat perubahan konfigurasi, Autopilot akan menerapkan konfigurasi default untuk Anda.

Misalnya, jika workload Anda berjalan di mesin N2 dalam mode Standard, GKE akan menerapkan class komputasi tujuan umum untuk Autopilot. Jika ingin, Anda dapat mengubah workload untuk meminta class komputasi Balanced, yang didukung oleh mesin N2.

Additional configuration required

Workload tidak akan berjalan di cluster Autopilot kecuali jika Anda membuat perubahan konfigurasi.

Misalnya, perhatikan container yang menggunakan kapabilitas NET_ADMIN di cluster Standard. Autopilot menurunkan kapabilitas ini secara default untuk meningkatkan keamanan, sehingga Anda harus mengaktifkan NET_ADMIN pada cluster sebelum men-deploy workload.

Incompatibility

Workload tidak akan berjalan di cluster Autopilot karena menggunakan fungsionalitas yang tidak didukung Autopilot.

Misalnya, cluster Autopilot menolak Pod dengan hak istimewa (privileged: true dalam spesifikasi Pod) untuk meningkatkan postur keamanan default. Satu-satunya cara untuk menjalankan aplikasi tersebut di Autopilot adalah dengan menghapus setelan hak istimewa tersebut.

Mengubah spesifikasi workload berdasarkan hasil pre-flight

Setelah menjalankan pemeriksaan pre-flight, periksa output JSON dan identifikasi workload yang perlu diubah. Sebaiknya terapkan semua rekomendasi konfigurasi, bahkan yang bersifat opsional. Setiap temuan juga disertai link ke dokumentasi yang menunjukkan tampilan spesifikasi workload.

Perbedaan paling penting antara Autopilot dan Standard adalah bahwa konfigurasi infrastruktur di Autopilot diotomatiskan berdasarkan spesifikasi workload. Kontrol penjadwalan Kubernetes, seperti taint dan toleransi node, otomatis ditambahkan ke workload yang sedang berjalan. Jika perlu, Anda juga dapat memodifikasi konfigurasi infrastruktur sebagai kode, seperti diagram Helm atau overlay Kustomize, agar sesuai.

Beberapa perubahan konfigurasi umum yang perlu Anda lakukan mencakup:

Perubahan konfigurasi umum untuk Autopilot
Konfigurasi komputasi dan arsitektur

Cluster autopilot menggunakan jenis mesin seri E secara default. Jika Anda memerlukan jenis mesin lainnya, spesifikasi workload Anda harus meminta class komputasi, yang memberi tahu Autopilot untuk menempatkan Pod tersebut pada node yang menggunakan jenis atau arsitektur mesin tertentu.

Untuk mengetahui detailnya, lihat Class komputasi di Autopilot.

Akselerator

Workload berbasis GPU harus meminta GPU dalam spesifikasi workload. Autopilot otomatis menyediakan node dengan jenis mesin dan akselerator yang diperlukan.

Untuk mengetahui detailnya, lihat Men-deploy workload GPU di Autopilot.

Permintaan resource

Semua workload Autopilot perlu menentukan nilai resources.requests dalam spesifikasi Pod. GKE menggunakan nilai ini untuk menyediakan ukuran mesin yang sesuai untuk menjalankan Pod. Autopilot memiliki permintaan default spesifik yang diterapkan secara otomatis jika Anda menghilangkan, dan memberlakukan, nilai minimum serta maksimum tertentu berdasarkan class komputasi atau permintaan hardware workload Anda.

Untuk mengetahui detailnya, lihat Permintaan resource di Autopilot.

Workload yang fault-tolerant di Spot VM

Jika workload Anda berjalan di Spot VM dalam mode Standard, minta Pod Spot dalam konfigurasi workload dengan menetapkan pemilih node untuk cloud.google.com/gke-spot=true.

Untuk mengetahui detailnya, lihat Pod Spot.

Menjalankan uji coba pada cluster Autopilot staging

Setelah Anda memodifikasi setiap manifes workload, lakukan deployment uji coba pada cluster Autopilot staging baru untuk memastikan bahwa workload berjalan seperti yang diharapkan.

Command line

Jalankan perintah berikut:

kubectl create --dry-run=server -f=PATH_TO_MANIFEST

Ganti PATH_TO_MANIFEST dengan jalur ke manifes workload yang ditelah dimodifikasi.

IDE

Jika Anda menggunakan Cloud Shell Editor, perintah uji coba sudah terintegrasi dan berjalan pada semua manifes yang terbuka. Jika Anda menggunakan Visual Studio Code atau Intellij IDE, instal ekstensi Cloud Code untuk menjalankan uji coba secara otomatis pada semua manifes yang terbuka.

Panel Problems di IDE menampilkan masalah uji coba, seperti dalam gambar berikut yang menunjukkan uji coba yang gagal untuk manifes yang menentukan privileged: true.

Output uji coba di Visual Studio Code untuk manifes dengan nama application.yaml. Isi pesan adalah sebagai berikut: Failed server dry-run apply on current-context: admission webhook denied the request.

Merencanakan cluster Autopilot tujuan

Setelah uji coba Anda tidak lagi menampilkan masalah, rencanakan dan buat cluster Autopilot baru untuk workload Anda. Cluster ini berbeda dengan cluster Autopilot yang Anda gunakan untuk menguji modifikasi manifes di bagian sebelumnya.

Gunakan Praktik terbaik untuk onboarding ke GKE jika ingin mengetahui persyaratan konfigurasi dasar. Kemudian, baca Ringkasan Autopilot, yang memberikan informasi spesifik untuk kasus penggunaan Anda di berbagai lapisan.

Selain itu, pertimbangkan hal-hal berikut:

  • Cluster autopilot bersifat VPC-native, jadi sebaiknya jangan bermigrasi ke Autopilot dari cluster Standard berbasis rute.
  • Gunakan VPC yang sama atau mirip untuk cluster Autopilot dan cluster Standard, termasuk aturan firewall kustom dan setelan VPC.
  • Cluster autopilot menggunakan GKE Dataplane V2 dan hanya mendukung Cilium NetworkPolicy. Calico NetworkPolicy tidak didukung.
  • Jika ingin menggunakan penyamaran IP dalam Autopilot, gunakan kebijakan NAT Egress.
  • Jika memiliki cluster Standard pribadi, buat cluster Autopilot pribadi dengan setelan isolasi yang mirip.
  • Tentukan rentang IPv4 utama untuk cluster selama pembuatan cluster, dengan ukuran rentang yang sama dengan cluster Standard.
  • Pelajari perbedaan kuota antarmode, terutama jika Anda memiliki cluster yang besar.
  • Pelajari jumlah maksimum Pod per node untuk Autopilot, yang berbeda dengan Standard. Hal ini akan berpengaruh jika Anda sering menggunakan afinitas Pod atau node.
  • Semua cluster Autopilot menggunakan Cloud DNS.

Membuat cluster Autopilot

Jika Anda siap membuat cluster, baca Membuat cluster Autopilot. Semua cluster Autopilot bersifat regional dan otomatis terdaftar di saluran rilis, meskipun Anda dapat menentukan versi saluran dan cluster. Sebaiknya deploy sampel workload berukuran kecil ke cluster untuk memicu penyediaan node secara otomatis sehingga workload produksi Anda dapat segera dijadwalkan.

Mengupdate alat infrastruktur sebagai kode

Penyedia infrastruktur sebagai kode berikut mendukung Autopilot:

Baca dokumentasi penyedia pilihan Anda dan modifikasi konfigurasi.

Memilih pendekatan migrasi

Metode migrasi yang digunakan bergantung pada workload individual dan seberapa nyaman Anda dengan konsep networking seperti Multi Cluster Service dan Multi Cluster Ingress, serta cara mengelola status objek Kubernetes di cluster Anda.

Jenis workload Hasil alat pre-flight Pendekatan migrasi
Stateless
  • Lulus
  • Lulus dengan konfigurasi opsional
  • Perlu konfigurasi tambahan

Untuk workload Passed dan Passed with optional configuration, Anda juga dapat menggunakan Pencadangan untuk GKE guna memindahkan semua workload ke cluster Autopilot. Anda tetap harus memperbarui pipeline dan manifes upstream untuk menarget cluster Autopilot. Untuk langkah-langkah umumnya, lihat Memigrasikan semua workload menggunakan Pencadangan untuk GKE.

Stateful
  • Lulus
  • Lulus dengan konfigurasi opsional

Gunakan salah satu metode berikut:

  • Pencadangan untuk GKE: Gunakan Pencadangan untuk GKE guna memindahkan workload stateful ke cluster Autopilot sambil mempertahankan hubungan PersistentVolume yang ada. Untuk langkah-langkah umumnya, lihat Memigrasikan semua workload menggunakan Pencadangan untuk GKE. Migrasi lintas-region didukung.
  • Manual: Memindahkan workload stateful secara manual. Pendekatan ini memerlukan perencanaan yang lebih cermat untuk disk PersistentVolumes dan Compute Engine. Untuk langkah-langkah umumnya, lihat Memigrasikan workload stateful secara manual. Migrasi lintas-region tidak didukung.
Perlu konfigurasi tambahan Perbarui manifes Kubernetes Anda dan deploy ulang di cluster Autopilot selama periode nonaktif terjadwal. Untuk langkah-langkah umumnya, lihat Memigrasikan workload stateful secara manual.

Langkah-langkah migrasi secara umum

Sebelum memulai migrasi, pastikan Anda telah menyelesaikan semua hasil Incompatible atau Additional configuration required dari pemeriksaan pre-flight. Jika Anda men-deploy workload dengan hasil tersebut di cluster Autopilot tanpa modifikasi, workload akan gagal.

Bagian berikut adalah gambaran umum tentang sebuah migrasi hipotetis. Langkah yang sebenarnya akan bervariasi, bergantung pada lingkungan dan setiap workload Anda. Rencanakan, uji, dan uji ulang workload untuk mengatasi masalah sebelum memigrasikan lingkungan produksi. Pertimbangannya mencakup:

  • Durasi proses migrasi bergantung pada jumlah workload yang Anda migrasikan.
  • Periode nonaktif diperlukan saat Anda memigrasikan workload stateful.
  • Migrasi manual memungkinkan Anda berfokus pada workload individual selama migrasi, sehingga Anda dapat menyelesaikan masalah secara real time berdasarkan kasus per kasus.
  • Dalam semua kasus, pastikan Anda memigrasikan Service, Ingress, dan objek Kubernetes lainnya yang memfasilitasi fungsionalitas workload stateless dan stateful Anda.

Memigrasikan semua workload menggunakan Pencadangan untuk GKE

Jika semua workload (stateful dan stateless) yang berjalan di cluster Standard kompatibel dengan Autopilot dan alat pre-flight menampilkan hasil Passed atau Passed with optional configuration untuk setiap workload, Anda dapat menggunakan Pencadangan untuk GKE guna mencadangkan seluruh status workload dan cluster Standard serta memulihkan cadangannya ke cluster Autopilot.

Pendekatan ini memiliki manfaat sebagai berikut:

  • Anda dapat memindahkan semua workload dari operasi Standard ke Autopilot dengan konfigurasi yang minimal.
  • Anda dapat memindahkan workload stateless dan stateful serta mempertahankan hubungan antar-workload, juga PersistentVolumes yang terkait.
  • Rollback bersifat intuitif dan dikelola oleh Google. Anda dapat me-roll back seluruh migrasi atau workload tertentu secara selektif.
  • Anda dapat memigrasikan workload stateful ke seluruh region Google Cloud. Migrasi manual workload stateful hanya dapat terjadi di region yang sama.

Jika Anda menggunakan metode ini, GKE akan menerapkan konfigurasi default Autopilot ke workload yang menerima hasil Passed with optional configuration dari alat pre-flight. Sebelum memigrasikan workload ini, pastikan Anda sudah nyaman dengan setelan default tersebut.

Memigrasikan workload stateless secara manual tanpa periode nonaktif

Untuk memigrasikan workload stateless tanpa menimbulkan periode nonaktif bagi layanan Anda, daftarkan cluster sumber dan tujuan ke GKE Fleet, lalu gunakan Multi Cluster Service dan Multi Cluster Ingress untuk memastikan bahwa workload Anda tetap tersedia selama migrasi.

  1. Aktifkan Multi Cluster Service dan Multi Cluster Ingress untuk cluster sumber dan tujuan. Untuk mengetahui petunjuknya, lihat Mengonfigurasi Multi Cluster Service dan Menyiapkan Multi Cluster Ingress.
  2. Jika Anda memiliki dependensi backend seperti workload database, ekspor Service tersebut dari cluster Standard menggunakan Multi Cluster Service. Dengan begitu, workload di cluster Autopilot Anda dapat mengakses dependensi di cluster Standard. Untuk mengetahui petunjuknya, lihat Mendaftarkan Service untuk diekspor.
  3. Deploy Multi Cluster Ingress dan Multi Cluster Service untuk mengontrol traffic masuk antar-cluster. Konfigurasi Multi Cluster Service agar hanya mengirim traffic ke cluster Standard. Untuk mengetahui petunjuknya, lihat Men-deploy Ingress di seluruh cluster.
  4. Deploy workload stateless dengan manifes yang telah diperbarui ke cluster Autopilot. Multi Cluster Service yang Anda ekspor akan otomatis mencocokkan dan mengirim traffic ke workload stateful terkaitnya.
  5. Perbarui Multi Cluster Service Anda untuk mengarahkan traffic masuk ke cluster Autopilot. Untuk mengetahui petunjuknya, lihat Pemilihan cluster.

Sekarang, Anda menyalurkan workload stateless dari cluster Autopilot. Jika Anda hanya memiliki workload stateless di cluster sumber, dan tidak ada dependensi yang tersisa, lanjutkan ke Menyelesaikan migrasi. Jika Anda memiliki workload stateful, lanjutkan ke bagian Memigrasikan workload stateful secara manual.

Memigrasikan workload stateful secara manual

Setelah memigrasikan workload stateless, Anda harus menenangkan dan memigrasikan workload stateful dari cluster Standard. Langkah ini menimbulkan periode nonaktif pada cluster Anda.

  1. Mulai periode nonaktif lingkungan Anda.
  2. Nonaktifkan workload stateful Anda.
  3. Pastikan Anda telah memodifikasi manifes workload agar kompatibel dengan cluster Autopilot. Untuk mengetahui detailnya, lihat Mengubah spesifikasi workload berdasarkan hasil pre-flight.
  4. Deploy workload di cluster Autopilot Anda.

  5. Deploy Service untuk workload stateful Anda di cluster Autopilot.

  6. Perbarui networking dalam-cluster Anda agar workload stateless dapat terus berkomunikasi dengan workload backend:

    • Jika Anda menggunakan alamat IP statis di Service backend cluster Standard, gunakan kembali alamat IP tersebut di Autopilot.
    • Jika Anda mengizinkan Kubernetes menetapkan alamat IP, deploy Service backend, dapatkan alamat IP baru, dan perbarui DNS Anda untuk menggunakan alamat IP baru.

Pada tahap ini, hal berikut ini harus terpenuhi:

  • Anda menjalankan semua workload stateless di cluster Autopilot.
  • Semua workload stateful backend juga berjalan di cluster Autopilot.
  • Workload stateless dan stateful Anda dapat saling berkomunikasi.
  • Multi Cluster Service Anda mengarahkan semua traffic masuk ke cluster Autopilot Anda.

Setelah Anda memigrasikan semua workload dan objek Kubernetes ke cluster baru, lanjutkan ke Menyelesaikan migrasi.

Alternatif: Memigrasikan semua workload secara manual selama periode nonaktif

Jika Anda tidak ingin menggunakan Multi Cluster Service dan Multi Cluster Ingress untuk memigrasikan workload dengan periode nonaktif yang minimal, migrasikan semua workload selama periode nonaktif. Metode ini menghasilkan periode nonaktif yang lebih lama pada layanan, tetapi tidak memerlukan penggunaan fitur multi-cluster.

  1. Mulai periode nonaktif.
  2. Deploy manifes stateless Anda di cluster Autopilot.
  3. Migrasikan workload stateful Anda secara manual. Untuk mengetahui petunjuknya, lihat bagian Memigrasikan workload stateful secara manual.
  4. Modifikasi data DNS untuk traffic eksternal masuk dan intra-cluster agar dapat menggunakan alamat IP baru Service.
  5. Akhiri periode nonaktif.

Menyelesaikan migrasi

Setelah memindahkan semua workload dan Service ke cluster Autopilot baru, akhiri periode nonaktif dan biarkan lingkungan Anda menjadi tenang selama durasi yang telah ditentukan. Jika sudah puas dengan status migrasi dan yakin Anda tidak perlu me-roll back migrasi, Anda dapat menghapus artefak migrasi dan menyelesaikan migrasi.

Opsional: Membersihkan fitur multi-cluster

Jika Anda menggunakan Multi Cluster Ingress dan Multi Cluster Service untuk bermigrasi, dan Anda tidak ingin cluster Autopilot tetap terdaftar ke Fleet, lakukan langkah berikut:

  1. Untuk traffic eksternal masuk, deploy Ingress dan tetapkan ke alamat IP Service yang mengekspos workload Anda. Untuk mengetahui petunjuknya, lihat Ingress untuk Load Balancer Aplikasi eksternal.
  2. Untuk traffic intra-cluster, misalnya dari workload frontend ke dependensi stateful, perbarui data DNS cluster agar menggunakan alamat IP Service tersebut.
  3. Hapus resource Multi Cluster Ingress dan Multi Cluster Service yang Anda buat selama migrasi.
  4. Nonaktifkan Multi Cluster Ingress dan Multi Cluster Service.
  5. Batalkan pendaftaran cluster Autopilot dari Fleet.

Menghapus cluster Standard

Jika sudah cukup waktu sejak selesainya migrasi, dan Anda puas dengan status cluster baru, hapus cluster Standard. Sebaiknya tetap cadangkan manifes Standard Anda.

Me-roll back migrasi yang salah

Jika Anda mengalami masalah dan ingin kembali ke cluster Standard, lakukan salah satu langkah berikut, bergantung pada cara Anda menjalankan migrasi:

  • Jika Anda menggunakan Pencadangan untuk GKE untuk membuat cadangan selama migrasi, pulihkan cadangan tersebut ke cluster Standard aslinya. Untuk mengetahui petunjuknya, lihat Memulihkan cadangan.

  • Jika Anda memigrasikan workload secara manual, ulangi langkah-langkah migrasi di bagian sebelumnya dengan cluster Standard sebagai tujuan dan cluster Autopilot sebagai sumber. Secara umum, hal ini meliputi langkah-langkah berikut:

    1. Mulai periode nonaktif.
    2. Migrasikan workload stateful secara manual ke cluster Standard. Untuk mengetahui petunjuknya, lihat bagian Memigrasikan workload stateful secara manual.
    3. Pindahkan workload stateless ke cluster Standard menggunakan manifes asli yang Anda cadangkan sebelum migrasi.
    4. Deploy Ingress Anda ke cluster Standard dan migrasikan sistem DNS Anda ke alamat IP baru untuk Service.
    5. Hapus cluster Autopilot.

Langkah selanjutnya