Praktik terbaik untuk upgrade cluster Google Distributed Cloud

Dokumen ini menjelaskan praktik terbaik dan pertimbangan untuk mengupgrade Google Distributed Cloud. Anda akan mempelajari cara mempersiapkan upgrade cluster, dan praktik terbaik yang harus diikuti sebelum upgrade. Praktik terbaik ini membantu mengurangi risiko yang terkait dengan upgrade cluster.

Jika Anda memiliki beberapa lingkungan seperti pengujian, pengembangan, dan produksi, sebaiknya mulai dengan lingkungan yang paling tidak penting, seperti pengujian, dan verifikasi fungsi upgrade. Setelah Anda memverifikasi bahwa upgrade berhasil, lanjutkan ke lingkungan berikutnya. Ulangi proses ini hingga Anda mengupgrade lingkungan produksi. Pendekatan ini memungkinkan Anda berpindah dari satu titik kritis ke titik kritis berikutnya, dan memverifikasi bahwa upgrade dan semua beban kerja Anda berjalan dengan benar.

Checklist upgrade

Sebaiknya ikuti semua praktik terbaik dalam dokumen ini. Gunakan checklist berikut untuk membantu melacak progres Anda. Setiap item dalam daftar tertaut ke bagian dalam dokumen ini yang berisi informasi selengkapnya:

Setelah pemeriksaan ini selesai, Anda dapat memulai proses upgrade. Pantau progres hingga semua cluster berhasil diupgrade.

Merencanakan upgrade

Update dapat mengganggu. Sebelum memulai upgrade, rencanakan dengan cermat untuk memastikan lingkungan dan aplikasi Anda sudah siap.

Memperkirakan komitmen waktu dan merencanakan periode pemeliharaan

Jumlah waktu yang diperlukan untuk mengupgrade cluster bervariasi, bergantung pada jumlah node dan kepadatan beban kerja yang berjalan di dalamnya. Agar berhasil menyelesaikan upgrade cluster, gunakan periode pemeliharaan dengan waktu yang cukup.

Untuk menghitung perkiraan kasar upgrade, gunakan 10 minutes * the number of nodes untuk upgrade node serentak tunggal.

Misalnya, jika Anda memiliki lima puluh node dalam cluster, total waktu upgrade akan berkisar lima ratus menit: 10 minutes * 50 nodes = 500 minutes.

Memeriksa kompatibilitas komponen GKE Enterprise lainnya

Jika cluster Anda menjalankan komponen GKE Enterprise seperti Cloud Service Mesh, Config Sync, Pengontrol Kebijakan, atau Pengontrol Konfigurasi, periksa dukungan upgrade dan versi GKE Enterprise dan verifikasi versi yang didukung dengan Google Distributed Cloud sebelum dan setelah upgrade.

Pemeriksaan kompatibilitas didasarkan pada cluster admin atau pengguna tempat Cloud Service Mesh, Config Sync, Policy Controller, atau Config Controller di-deploy.

Memeriksa penggunaan resource cluster

Untuk memastikan Pod dapat dievakuasi saat node habis dan ada resource yang cukup di cluster yang diupgrade untuk mengelola upgrade, periksa penggunaan resource cluster saat ini. Untuk memeriksa penggunaan resource untuk cluster Anda, gunakan dasbor kustom di Google Cloud Observability.

Anda dapat menggunakan perintah, seperti kubectl top nodes untuk mendapatkan penggunaan resource cluster saat ini, tetapi dasbor dapat memberikan tampilan yang lebih mendetail tentang resource yang digunakan dari waktu ke waktu. Data penggunaan resource ini dapat membantu menunjukkan kapan upgrade akan menyebabkan gangguan paling sedikit, seperti selama akhir pekan atau malam hari, bergantung pada beban kerja yang berjalan dan kasus penggunaan.

Waktu untuk upgrade cluster admin mungkin kurang penting daripada untuk cluster pengguna, karena upgrade cluster admin biasanya tidak menyebabkan periode nonaktif aplikasi. Namun, Anda tetap harus memeriksa resource yang tersedia sebelum memulai upgrade cluster admin. Selain itu, mengupgrade cluster admin mungkin menyiratkan beberapa risiko, sehingga mungkin direkomendasikan selama periode penggunaan yang kurang aktif saat akses pengelolaan ke cluster kurang penting.

Resource bidang kontrol cluster admin

Semua pengontrol dan tugas upgrade berjalan di node bidang kontrol cluster admin. Periksa penggunaan resource node bidang kontrol ini untuk resource komputasi yang tersedia. Proses upgrade biasanya memerlukan 1.000 millicore CPU (1.000 mCPU) dan RAM 2-3 GiB untuk setiap kumpulan pengontrol siklus proses. Perhatikan bahwa unit CPU 'mCPU' adalah singkatan dari "seperseribu core", sehingga 1.000 millicore setara dengan satu core di setiap node untuk setiap kumpulan pengontrol siklus proses. Untuk mengurangi resource komputasi tambahan yang diperlukan selama upgrade, coba simpan cluster pengguna pada versi yang sama.

Dalam contoh deployment berikut, kedua cluster pengguna memiliki versi yang berbeda dengan cluster admin:

Cluster admin Cluster pengguna 1 Cluster pengguna 2
1.13.3 1.13.0 1.13.2

Kumpulan pengontrol siklus proses di-deploy di pengontrol admin untuk setiap versi yang digunakan. Dalam contoh ini, ada tiga kumpulan pengontrol siklus proses: 1.13.3, 1.13.0, dan 1.13.2. Setiap kumpulan pengontrol siklus proses menggunakan total 1.000 mCPU dan 3 GiB RAM. Total konsumsi resource saat ini dari pengontrol siklus proses ini adalah 3.000 mCPU dan 9 GiB RAM.

Jika cluster pengguna 2 diupgrade ke 1.13.3, kini ada dua kumpulan pengontrol siklus proses: 1.13.3 dan 1.13.0:

Cluster admin Cluster pengguna 1 Cluster pengguna 2
1.13.3 1.13.0 1.13.3

Pengontrol siklus proses kini menggunakan total 2.000 mCPU dan 6 GiB RAM.

Jika cluster pengguna 1 diupgrade ke 1.13.3, semua fleet kini berjalan pada versi yang sama: 1.13.3:

Cluster admin Cluster pengguna 1 Cluster pengguna 2
1.13.3 1.13.3 1.13.3

Sekarang hanya ada satu kumpulan pengontrol siklus proses, yang menggunakan total 1.000 mCPU dan 3 GiB RAM.

Dalam contoh berikut, semua cluster pengguna memiliki versi yang sama. Jika cluster admin diupgrade, hanya dua kumpulan pengontrol siklus proses yang digunakan, sehingga konsumsi resource komputasi berkurang:

Cluster admin Cluster pengguna 1 Cluster pengguna 2
1.14.0 1.13.3 1.13.3

Dalam contoh ini, pengontrol siklus proses lagi-lagi menggunakan total 2.000 mCPU dan 6 GiB RAM hingga semua cluster pengguna diupgrade ke versi yang sama dengan cluster admin.

Jika node platform kontrol tidak memiliki resource komputasi tambahan selama upgrade, Anda mungkin melihat Pod seperti anthos-cluster-operator, capi-controller-manager, cap-controller-manager, atau cap-kubeadm-bootstraper dalam status Pending. Untuk mengatasi masalah ini, upgrade beberapa cluster pengguna ke versi yang sama untuk menggabungkan versi dan mengurangi jumlah pengontrol siklus proses yang digunakan. Jika upgrade sudah macet, Anda juga dapat menggunakan kubectl edit deployment untuk mengedit deployment yang tertunda guna menurunkan permintaan CPU dan RAM agar sesuai dengan platform kontrol cluster admin.

Tabel berikut menjelaskan persyaratan resource komputasi untuk berbagai skenario upgrade:

Cluster Resource cluster admin diperlukan
Upgrade cluster pengguna Mengupgrade ke versi cluster lain yang sama: T/A

Mengupgrade ke versi cluster admin atau pengguna lain yang berbeda: 1.000 mCPU dan 3 GiB RAM

Cluster pengguna dalam cluster campuran memiliki persyaratan resource yang sama.
Upgrade cluster admin (dengan cluster pengguna) 1.000 mCPU dan 3 GiB RAM
Upgrade cluster hybrid (tanpa cluster pengguna) Lonjakan RAM 1000 mCPU dan 3 GiB. Resource ditampilkan setelah digunakan.
Mandiri Lonjakan RAM 200 mCPU dan 1 GiB. Resource ditampilkan setelah digunakan.

Mencadangkan cluster

Sebelum memulai upgrade, cadangkan cluster menggunakan perintah bmctl backup cluster.

Karena file cadangan berisi informasi sensitif, simpan file cadangan dengan aman.

Memastikan cluster dikonfigurasi dan berfungsi dengan benar

Untuk memeriksa kondisi cluster sebelum upgrade, jalankan bmctl check cluster di cluster. Perintah ini menjalankan pemeriksaan lanjutan, seperti untuk mengidentifikasi node yang tidak dikonfigurasi dengan benar, atau yang memiliki Pod yang dalam status macet.

Saat Anda menjalankan perintah bmctl upgrade cluster untuk mengupgrade cluster, beberapa pemeriksaan pra-penerbangan akan dijalankan. Proses upgrade akan berhenti jika pemeriksaan ini tidak berhasil. Sebaiknya identifikasi dan perbaiki masalah ini secara proaktif dengan perintah bmctl check cluster, bukan mengandalkan pemeriksaan pra-penerbangan yang ada untuk melindungi cluster dari kemungkinan kerusakan.

Meninjau deployment workload pengguna

Ada dua area yang perlu dipertimbangkan untuk beban kerja pengguna: pengosongan dan kompatibilitas API.

Pengosongan beban kerja

Beban kerja pengguna di node habis selama upgrade. Jika beban kerja memiliki replika tunggal atau semua replika berada di node yang sama, pengosongan beban kerja dapat menyebabkan gangguan pada layanan yang berjalan di cluster. Jalankan workload Anda dengan beberapa replika. Jumlah replika harus di atas jumlah node serentak.

Untuk menghindari upgrade yang macet, proses pengosongan upgrade hingga 1.30 tidak mengikuti anggaran gangguan pod (PDB). Workload mungkin berjalan dalam status yang menurun, dan replika yang paling sedikit ditayangkan adalah total replica number - concurrent upgrade number.

Kompatibilitas API

Untuk kompatibilitas API, periksa kompatibilitas API beban kerja Anda dengan versi minor Kubernetes yang lebih baru saat melakukan upgrade versi minor. Jika perlu, upgrade beban kerja ke versi yang kompatibel. Jika memungkinkan, tim engineer GKE Enterprise akan memberikan petunjuk untuk mengidentifikasi beban kerja yang menggunakan API yang tidak kompatibel, seperti Kubernetes API yang dihapus.

Jika Anda menggunakan Cloud Service Mesh, Config Sync, Policy Controller, Config Controller, atau komponen GKE Enterprise lainnya, periksa apakah versi yang diinstal kompatibel dengan versi baru Google Distributed Cloud. Untuk informasi kompatibilitas versi komponen GKE Enterprise, lihat Dukungan upgrade dan versi GKE Enterprise.

Mengaudit penggunaan webhook

Periksa apakah cluster Anda memiliki webhook, terutama resource Pod untuk tujuan audit seperti Pengontrol Kebijakan. Proses pengosongan selama upgrade cluster dapat mengganggu layanan webhook Pengontrol Kebijakan, yang dapat menyebabkan upgrade macet atau memerlukan waktu lama. Sebaiknya nonaktifkan webhook ini untuk sementara, atau gunakan deployment dengan ketersediaan tinggi (HA).

Meninjau penggunaan fitur Pratinjau

Fitur Pratinjau dapat berubah sewaktu-waktu dan hanya disediakan untuk tujuan pengujian dan evaluasi. Jangan gunakan fitur Pratinjau di cluster produksi Anda. Kami tidak menjamin bahwa cluster yang menggunakan fitur Pratinjau dapat diupgrade. Dalam beberapa kasus, kami secara eksplisit memblokir upgrade untuk cluster yang menggunakan fitur Pratinjau.

Untuk informasi tentang perubahan yang menyebabkan error terkait upgrade, lihat catatan rilis.

Memeriksa status SELinux

Jika ingin mengaktifkan SELinux untuk mengamankan penampung, Anda harus memastikan bahwa SELinux diaktifkan dalam mode Enforced di semua mesin host. Mulai dari rilis Google Distributed Cloud 1.9.0 atau yang lebih baru, Anda dapat mengaktifkan atau menonaktifkan SELinux sebelum atau setelah pembuatan cluster atau upgrade cluster. SELinux diaktifkan secara default di Red Hat Enterprise Linux (RHEL). Jika SELinux dinonaktifkan di komputer host atau Anda tidak yakin, lihat Mengamankan penampung menggunakan SELinux untuk mengetahui petunjuk cara mengaktifkannya.

Google Distributed Cloud hanya mendukung SELinux di sistem RHEL.

Jangan ubah konfigurasi kepadatan Pod

Google Distributed Cloud mendukung konfigurasi hingga maksimum 250 pod per node dengan nodeConfig.PodDensity.MaxPodsPerNode. Anda hanya dapat mengonfigurasi kepadatan pod selama pembuatan cluster. Anda tidak dapat memperbarui setelan kepadatan pod untuk cluster yang ada. Jangan mencoba mengubah konfigurasi kepadatan pod selama upgrade.

Pastikan node control plane dan load balancer tidak dalam mode pemeliharaan

Pastikan node bidang kontrol dan load balancer tidak sedang dalam pemeliharaan sebelum memulai upgrade. Jika ada node dalam mode pemeliharaan, upgrade akan dijeda untuk memastikan node pool bidang kontrol dan load balancer tersedia dengan memadai.

Langkah selanjutnya