Mendesain pemisahan workload

Isolasi workload di Google Distributed Cloud (GDC) dengan air gap memungkinkan Anda memisahkan aplikasi container dan virtual machine (VM) di berbagai project dan cluster Kubernetes. Merencanakan batas lingkungan membantu Anda mengontrol kebijakan akses, membatasi dampak pemeliharaan, dan mengoptimalkan kapasitas node. Anda dapat menyesuaikan pola arsitektur ini agar sesuai dengan persyaratan spesifik setiap universe GDC.

Dokumen ini ditujukan untuk staf IT dalam grup administrator platform yang mengelola resource organisasi dan developer dalam grup operator aplikasi yang memelihara layanan. Untuk mengetahui informasi selengkapnya, lihat Audiens untuk dokumentasi GDC dengan air gap.

Tempat men-deploy workload

Di platform GDC, operasi untuk men-deploy workload virtual machine (VM) dan workload container berbeda. Diagram berikut mengilustrasikan pemisahan workload dalam lapisan bidang data organisasi Anda.

Pemisahan workload di bidang data organisasi.

Workload berbasis VM beroperasi dalam VM. Sebaliknya, workload container beroperasi dalam cluster Kubernetes. Pemisahan mendasar antara VM dan cluster Kubernetes memberikan batas isolasi antara workload VM dan workload container Anda. Untuk mengetahui informasi selengkapnya, lihat Hierarki resource.

Bagian berikut memperkenalkan perbedaan antara setiap jenis workload dan siklus proses deployment-nya.

Workload berbasis VM

Anda dapat membuat VM untuk menghosting workload berbasis VM. Anda memiliki banyak opsi konfigurasi untuk bentuk dan ukuran VM guna membantu memenuhi persyaratan workload berbasis VM dengan sebaik-baiknya. Anda harus membuat VM dalam project, yang dapat memiliki banyak workload VM. VM adalah resource turunan dari project. Untuk mengetahui informasi selengkapnya, lihat Ringkasan VM.

Project yang hanya berisi workload berbasis VM tidak memerlukan cluster Kubernetes. Oleh karena itu, Anda tidak perlu menyediakan cluster Kubernetes untuk workload berbasis VM.

Workload berbasis container

Anda dapat men-deploy workload berbasis container ke pod di cluster Kubernetes. Cluster Kubernetes terdiri dari jenis node berikut:

  • Node bidang kontrol: menjalankan layanan pengelolaan, seperti penjadwalan, etcd, dan server API.

  • Worker node: menjalankan pod dan aplikasi container Anda.

Arsitektur cluster Kubernetes

Ada dua jenis konfigurasi untuk cluster Kubernetes:

  • Cluster bersama: Cluster Kubernetes dengan cakupan organisasi yang dapat mencakup beberapa project dan tidak dikelola oleh satu project, melainkan dilampirkan ke project tersebut.
  • Cluster standar: Cluster Kubernetes cakupan project yang mengelola resource cluster dalam satu project, dan tidak dapat mencakup beberapa project.

Untuk mengetahui informasi selengkapnya, lihat Konfigurasi cluster Kubernetes.

Cluster Kubernetes menawarkan berbagai opsi hierarki resource, karena cluster bersama memiliki cakupan organisasi dan cluster standar memiliki cakupan project. Ini adalah perbedaan mendasar yang dimiliki cluster Kubernetes dibandingkan dengan VM. VM adalah resource turunan dari project, dan tidak dapat dikonfigurasi untuk beroperasi di luar project. Untuk mengetahui informasi selengkapnya tentang cara mendesain infrastruktur cluster Kubernetes, lihat Praktik terbaik untuk mendesain cluster Kubernetes.

Untuk penjadwalan pod dalam cluster Kubernetes, GDC mengadopsi konsep umum Kubernetes tentang penjadwalan, preemption, dan penggusuran. Praktik terbaik dalam menjadwalkan pod dalam cluster bervariasi berdasarkan persyaratan workload Anda.

Untuk mengetahui informasi selengkapnya tentang cluster Kubernetes, lihat Ringkasan cluster Kubernetes. Untuk mengetahui informasi selengkapnya tentang cara mengelola container di cluster Kubernetes, lihat Workload container di GDC.

Praktik terbaik untuk mendesain cluster Kubernetes

Bagian ini memperkenalkan praktik terbaik untuk mendesain cluster Kubernetes:

Pertimbangkan setiap praktik terbaik untuk merancang desain cluster yang tangguh untuk siklus proses workload container Anda.

Membuat cluster terpisah per lingkungan pengembangan software

Selain project terpisah per lingkungan pengembangan software, sebaiknya Anda mendesain cluster Kubernetes terpisah per lingkungan pengembangan software. Lingkungan pengembangan software adalah area dalam universe GDC Anda yang ditujukan untuk semua operasi yang sesuai dengan fase siklus proses yang ditentukan. Misalnya, jika Anda memiliki tiga lingkungan pengembangan software bernama development, staging, dan production di organisasi, Anda dapat membuat kumpulan cluster Kubernetes terpisah untuk setiap lingkungan dan melampirkan project ke setiap cluster berdasarkan kebutuhan Anda.

Sebaiknya gunakan cluster standar dalam siklus proses praproduksi yang dicakupkan ke satu project, sehingga proses destruktif apa pun yang terkait dengan pengujian dapat diisolasi dari project produksi, sedangkan cluster bersama ideal untuk lingkungan produksi yang dapat mencakup beberapa project. Cluster bersama yang menghosting workload produksi yang mencakup beberapa project menyediakan area deployment bersama tempat cluster standar yang dicakupkan ke satu project dapat mempromosikan workload-nya langsung ke lingkungan produksi.

Cluster standar yang ditentukan untuk setiap lingkungan pengembangan software mengasumsikan bahwa workload praproduksi dalam lingkungan pengembangan software terbatas pada cluster tersebut. Cluster Kubernetes dapat dibagi lagi menjadi beberapa node pool atau menggunakan taint untuk isolasi workload.

Dengan memisahkan cluster Kubernetes berdasarkan lingkungan pengembangan software, Anda mengisolasi konsumsi resource, kebijakan akses, peristiwa pemeliharaan, dan perubahan konfigurasi tingkat cluster antara workload produksi dan non-produksi.

Diagram berikut menunjukkan contoh desain cluster Kubernetes untuk beberapa workload yang mencakup project, cluster, lingkungan pengembangan software, dan class mesin yang disediakan oleh node pool yang berbeda.

Konfigurasi cluster GDC yang mencakup beberapa lingkungan pengembangan software.

Arsitektur contoh ini mengasumsikan bahwa workload dalam lingkungan pengembangan software pengembangan, staging, dan produksi dapat berbagi cluster. Setiap lingkungan memiliki cluster standar terpisah, yang selanjutnya dibagi lagi menjadi beberapa node pool untuk persyaratan class mesin yang berbeda. Cluster bersama mencakup semua lingkungan pengembangan software, sehingga menyediakan area deployment umum untuk semua lingkungan.

Atau, mendesain beberapa cluster standar per lingkungan pengembangan software berguna untuk operasi container seperti skenario berikut:

  • Anda memiliki beberapa workload yang disematkan ke versi Kubernetes tertentu, sehingga Anda mempertahankan cluster yang berbeda pada versi yang berbeda.
  • Anda memiliki beberapa workload yang memerlukan kebutuhan konfigurasi cluster yang berbeda, seperti kebijakan pencadangan, sehingga Anda membuat beberapa cluster dengan konfigurasi yang berbeda.
  • Anda menjalankan salinan cluster secara paralel untuk memfasilitasi upgrade versi yang mengganggu atau strategi deployment blue-green.
  • Anda membangun workload eksperimental yang berisiko membatasi server API atau titik tunggal kegagalan lainnya dalam cluster, sehingga Anda mengisolasinya dari workload yang ada.

Anda harus menyesuaikan lingkungan pengembangan software dengan persyaratan yang ditetapkan oleh operasi container Anda.

Membuat lebih sedikit cluster

Untuk pemanfaatan resource yang efisien, sebaiknya desain jumlah cluster Kubernetes sesedikit mungkin yang memenuhi persyaratan Anda untuk memisahkan lingkungan pengembangan software dan operasi container. Setiap cluster tambahan menimbulkan konsumsi resource overhead tambahan, seperti node bidang kontrol tambahan yang diperlukan. Oleh karena itu, cluster yang lebih besar dengan banyak workload akan menggunakan resource komputasi yang mendasarinya secara lebih efisien daripada banyak cluster kecil.

Jika ada beberapa cluster dengan konfigurasi serupa, hal ini akan menimbulkan overhead pemeliharaan tambahan untuk memantau kapasitas cluster dan merencanakan dependensi lintas cluster.

Jika kapasitas cluster hampir penuh, sebaiknya tambahkan node tambahan ke cluster, bukan membuat cluster baru.

Membuat lebih sedikit node pool dalam cluster

Untuk pemanfaatan resource yang efisien, sebaiknya desain node pool yang lebih sedikit dan lebih besar dalam cluster Kubernetes.

Mengonfigurasi beberapa node pool berguna saat Anda perlu menjadwalkan pod yang memerlukan class mesin yang berbeda dari yang lain. Buat node pool untuk setiap class mesin yang diperlukan workload Anda, dan tetapkan kapasitas node ke penskalaan otomatis untuk memungkinkan penggunaan resource komputasi yang efisien.

Langkah berikutnya