Mendesain pemisahan workload

Dokumen ini memberikan ringkasan untuk pengelolaan workload di Google Distributed Cloud (GDC) dengan air gap. Topik-topik berikut akan dibahas:

Meskipun beberapa desain deployment beban kerja direkomendasikan, Anda tidak harus mengikutinya persis seperti yang ditentukan. Setiap semesta GDC memiliki persyaratan dan pertimbangan unik yang harus dipenuhi berdasarkan kasus per kasus.

Dokumen ini ditujukan bagi administrator IT dalam grup administrator platform yang bertanggung jawab untuk mengelola resource dalam organisasi mereka, dan developer aplikasi dalam grup operator aplikasi yang bertanggung jawab untuk mengembangkan dan memelihara aplikasi di semesta GDC.

Untuk mengetahui informasi selengkapnya, lihat Audiens untuk dokumentasi GDC yang terisolasi dari internet.

Tempat men-deploy workload

Di platform GDC, operasi untuk men-deploy workload virtual machine (VM) dan workload container berbeda. Diagram berikut menggambarkan pemisahan beban kerja 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 beban kerja 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 Anda 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.

  • Node pekerja: menjalankan pod dan aplikasi container Anda.

Arsitektur cluster Kubernetes

Ada dua jenis konfigurasi untuk cluster Kubernetes:

  • Cluster bersama: Cluster Kubernetes cakupan organisasi yang dapat mencakup beberapa project dan tidak dikelola oleh satu project, tetapi dilampirkan ke project tersebut.
  • Cluster standar: Cluster Kubernetes dengan cakupan project yang mengelola resource cluster dalam 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, pendahuluan, dan pengusiran. 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 mendesain 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 semesta GDC Anda yang ditujukan untuk semua operasi yang sesuai dengan fase siklus proses yang ditetapkan. Misalnya, jika Anda memiliki tiga lingkungan pengembangan software bernama development, staging, dan production di organisasi Anda, Anda dapat membuat serangkaian cluster Kubernetes terpisah untuk setiap lingkungan dan melampirkan project ke setiap cluster berdasarkan kebutuhan Anda.

Sebaiknya gunakan cluster standar dalam siklus proses praproduksi yang dicakup ke satu project, sehingga setiap proses destruktif 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 dicakup ke satu project dapat mempromosikan workloadnya 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 kumpulan node atau menggunakan taint untuk isolasi workload.

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

Diagram berikut menunjukkan contoh desain cluster Kubernetes untuk beberapa beban kerja yang mencakup project, cluster, lingkungan pengembangan software, dan kelas mesin yang disediakan oleh kumpulan node yang berbeda.

Konfigurasi cluster GDC yang mencakup beberapa lingkungan pengembangan software.

Arsitektur contoh ini mengasumsikan bahwa beban kerja dalam lingkungan pengembangan software, staging, dan produksi dapat berbagi cluster. Setiap lingkungan memiliki cluster standar terpisah, yang selanjutnya dibagi lagi menjadi beberapa kumpulan node 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 penampung 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 membuat workload eksperimental yang berisiko membatasi server API atau titik kegagalan tunggal lainnya dalam cluster, sehingga Anda mengisolasinya dari workload yang ada.

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

Membuat lebih sedikit cluster

Untuk pemanfaatan resource yang efisien, sebaiknya rancang jumlah cluster Kubernetes paling sedikit yang memenuhi persyaratan Anda untuk memisahkan lingkungan pengembangan software dan operasi penampung. Setiap cluster tambahan menimbulkan konsumsi resource overhead tambahan, seperti node bidang kontrol tambahan yang diperlukan. Oleh karena itu, cluster yang lebih besar dengan banyak beban kerja menggunakan resource komputasi pokok secara lebih efisien daripada banyak cluster kecil.

Jika ada beberapa cluster dengan konfigurasi serupa, akan ada beban tambahan untuk memantau kapasitas cluster dan merencanakan dependensi antar-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 rancang lebih sedikit node pool yang lebih besar dalam cluster Kubernetes.

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

Langkah berikutnya