Ringkasan cara men-deploy workload


Untuk men-deploy dan mengelola aplikasi dalam container serta workload lainnya di cluster Google Kubernetes Engine (GKE), Anda menggunakan sistem Kubernetes untuk membuat objek pengontrol Kubernetes. Objek pengontrol ini mewakili aplikasi, daemon, dan tugas batch yang berjalan pada cluster Anda.

Anda dapat membuat objek pengontrol ini menggunakan Kubernetes API atau menggunakan kubectl, antarmuka command line ke Kubernetes yang diinstal oleh gcloud. Biasanya, Anda mem-build representasi objek pengontrol Kubernetes yang diinginkan sebagai file konfigurasi YAML, lalu menggunakan file tersebut dengan Kubernetes API atau antarmuka command line kubectl.

Jenis workload

Kubernetes menyediakan berbagai jenis objek pengontrol yang sesuai dengan berbagai jenis workload yang dapat Anda jalankan. Objek pengontrol tertentu lebih cocok untuk merepresentasikan jenis workload tertentu. Bagian berikut menjelaskan beberapa jenis workload umum dan objek pengontrol Kubernetes yang dapat Anda buat untuk menjalankannya di cluster, termasuk:

  • Aplikasi stateless
  • Aplikasi stateful
  • Tugas batch
  • Daemon

Aplikasi stateless

Aplikasi stateless tidak mempertahankan statusnya dan tidak menyimpan data ke penyimpanan persisten — semua data pengguna dan sesi tetap bersama klien.

Beberapa contoh aplikasi stateless mencakup frontend web seperti Nginx, server web seperti Apache Tomcat, dan aplikasi web lainnya.

Anda dapat membuat Deployment Kubernetes untuk men-deploy aplikasi stateless di cluster Anda. Pod yang dibuat oleh Deployment tidak unik dan tidak mempertahankan statusnya, sehingga memudahkan penskalaan dan update aplikasi stateless.

Aplikasi stateful

Aplikasi stateful mengharuskan statusnya disimpan atau dipertahankan. Aplikasi stateful menggunakan penyimpanan persisten, seperti volume persisten, untuk menyimpan data agar digunakan oleh server atau pengguna lain.

Contoh aplikasi stateful meliputi database seperti MongoDB dan antrean pesan seperti Apache ZooKeeper.

Anda dapat membuat StatefulSet Kubernetes untuk men-deploy aplikasi stateful. Pod yang dibuat oleh StatefulSet memiliki ID unik dan dapat diperbarui dengan cara yang aman dan urut.

Tugas batch

Tugas batch mewakili tugas terbatas, independen, dan sering kali paralel yang berjalan hingga selesainya. Beberapa contoh tugas batch mencakup tugas otomatis atau terjadwal seperti mengirim email, merender video, dan melakukan komputasi yang mahal.

Anda dapat membuat Tugas Kubernetes untuk menjalankan dan mengelola tugas batch di cluster Anda. Anda dapat menentukan jumlah Pod yang harus menyelesaikan tugasnya sebelum Tugas selesai, serta jumlah maksimum Pod yang harus dijalankan secara paralel.

Daemon

Daemon melakukan tugas latar belakang yang sedang berlangsung dalam node yang ditetapkan tanpa perlu intervensi pengguna. Contoh daemon meliputi pengumpul log seperti layanan Fluentd dan pemantauan.

Anda dapat membuat DaemonSet Kubernetes untuk men-deploy daemon di cluster. DaemonSet membuat satu Pod per node, dan Anda dapat memilih node tertentu yang akan menjadi tujuan deployment DaemonSet.

DaemonSet di GKE Autopilot

GKE mengelola node dalam cluster yang Anda buat menggunakan mode operasi Autopilot. Anda tidak dapat menambahkan, menghapus, atau mengubah node atau virtual machine (VM) Compute Engine secara manual. Namun, objek node Kubernetes masih terlihat, dan Autopilot mendukung DaemonSets sebagai workload Anda.

GKE Autopilot membatasi beberapa fungsi administratif yang memengaruhi semua Pod workload, termasuk Pod yang dikelola oleh DaemonSets. DaemonSet yang menjalankan fungsi administratif pada node menggunakan hak istimewa yang ditingkatkan, seperti konteks keamanan privileged, tidak akan berjalan di cluster Autopilot kecuali jika secara eksplisit diizinkan oleh GKE.

Untuk mengetahui informasi selengkapnya tentang batas yang diterapkan oleh Autopilot, lihat Batasan dan batasan workload. Anda dapat menggunakan DaemonSets dengan workload yang memenuhi batasan yang ditetapkan oleh Autopilot, serta DaemonSets dari beberapa partners Google Cloud.

Praktik terbaik untuk DaemonSets dalam mode Autopilot

GKE menggunakan ukuran total workload yang di-deploy untuk menentukan ukuran node yang disediakan oleh Autopilot untuk cluster tersebut. Jika Anda menambahkan atau mengubah ukuran DaemonSet setelah Autopilot menyediakan node, GKE tidak akan mengubah ukuran node yang ada untuk mengakomodasi ukuran total workload yang baru. DaemonSet dengan permintaan resource yang lebih besar dari kapasitas node yang ada, setelah memperhitungkan pod sistem, juga tidak akan dijadwalkan pada node tersebut.

Mulai GKE versi 1.27.6-gke.1248000, cluster dalam mode Autopilot mendeteksi node yang tidak dapat memuat semua DaemonSet dan, seiring waktu, memigrasikan workload ke node yang lebih besar yang dapat memuat semua DaemonSet. Proses ini memerlukan waktu, terutama jika node menjalankan Pod sistem, yang memerlukan waktu tambahan untuk berhenti dengan baik sehingga tidak ada gangguan pada kemampuan cluster inti.

Pada GKE versi 1.27.5-gke.200 atau yang lebih lama, sebaiknya Anda melakukan cordoning dan mengosongkan node yang tidak dapat mengakomodasi Pod DaemonSet.

Untuk semua versi GKE, kami merekomendasikan praktik terbaik berikut saat men-deploy DaemonSets dalam mode Autopilot:

  • Deploy DaemonSets sebelum workload lain.
  • Tetapkan PriorityClass yang lebih tinggi pada DaemonSets daripada Pod reguler. PriorityClass yang lebih tinggi memungkinkan GKE mengeluarkan Pod dengan prioritas lebih rendah untuk mengakomodasi pod DaemonSet jika node dapat mengakomodasi pod tersebut. Hal ini membantu memastikan bahwa DaemonSet ada di setiap node tanpa memicu pembuatan ulang node.

Mengelola objek workload

Anda dapat membuat, mengelola, dan menghapus objek menggunakan metode imperatif dan deklaratif. Bagian berikut menjelaskan metode ini serta alat berikut yang dapat Anda gunakan untuk menggunakannya:

Perintah imperatif

Perintah imperatif memungkinkan Anda membuat, melihat, memperbarui, dan menghapus objek dengan cepat menggunakan kubectl. Perintah ini berguna untuk tugas satu kali atau untuk membuat perubahan pada objek aktif di cluster. Perintah imperatif biasanya digunakan untuk beroperasi pada objek live yang di-deploy di cluster Anda.

kubectl menampilkan beberapa perintah berbasis kata kerja untuk membuat dan mengedit objek Kubernetes. Contoh:

  • run: Membuat objek baru di cluster. Kecuali jika ditentukan lain, run akan membuat objek Deployment.
  • expose: Buat objek Layanan baru untuk melakukan load balancing pada traffic di seluruh kumpulan Pod berlabel.
  • autoscale: Buat objek Autoscaler baru untuk otomatis menskalakan objek pengontrol secara horizontal, seperti Deployment.

Perintah imeratipf tidak memerlukan pemahaman yang kuat tentang skema objek dan tidak memerlukan file konfigurasi.

Konfigurasi objek imperatif

Konfigurasi objek imperatif membuat, memperbarui, dan menghapus objek menggunakan file konfigurasi yang berisi definisi objek yang ditentukan sepenuhnya. Anda dapat menyimpan file konfigurasi objek di sistem kontrol sumber dan mengaudit perubahan dengan lebih mudah daripada dengan perintah inperatif.

Anda dapat menjalankan operasi kubectl apply, delete, dan replace dengan file konfigurasi atau direktori yang berisi file konfigurasi.

Konfigurasi objek deklaratif

Konfigurasi objek deklaratif beroperasi pada file konfigurasi yang disimpan secara lokal, tetapi tidak memerlukan definisi eksplisit operasi yang akan dijalankan. Sebagai gantinya, operasi otomatis terdeteksi per objek oleh kubectl. Ini berguna jika Anda mengerjakan direktori file konfigurasi yang terdiri dari berbagai operasi. Pengelolaan objek deklaratif memerlukan pemahaman yang kuat tentang skema objek dan file konfigurasi.

Anda dapat menjalankan kubectl apply untuk membuat dan memperbarui objek secara deklaratif. apply mengupdate objek dengan membaca seluruh objek live, menghitung perbedaannya, lalu menggabungkan perbedaan tersebut dengan mengirimkan permintaan patch ke server API.

Image Docker Hub publik

Saat Anda men-deploy image container publik dari Docker Hub, GKE akan otomatis memeriksa mirror.gcr.io proxy caching untuk menemukan salinan image container yang di-cache. Jika salinan yang di-cache tidak tersedia, GKE mengambil image yang Anda minta dari Docker Hub dan proxy caching dapat menyimpan image tersebut dalam cache untuk digunakan di masa mendatang. Untuk informasi selengkapnya, lihat Mengambil image yang di-cache.

Konsol

Setelah men-deploy workload menggunakan kubectl atau API, Anda dapat menggunakan menu GKE Workloads di konsol Google Cloud untuk memeriksa, mengelola, dan mengedit workload yang berjalan di cluster Anda.

Menu tersebut menawarkan fitur berikut:

  • Anda dapat menggunakan editor teks berbasis YAML untuk mengedit objek aktif dari browser web
  • Anda dapat melihat informasi mendetail tentang objek, termasuk histori revisi, peristiwa dan aktivitas terbaru, serta Pod terkelolanya
  • Anda dapat dengan mudah menskalakan Deployment, Tugas, dan StatefulSet
  • Anda dapat menskalakan otomatis, memicu update berkelanjutan, dan menskalakan Deployment secara manual dari menu Actions.
  • Anda dapat menggunakan Cloud Shell untuk memeriksa, mengedit, dan menghapus objek apa pun.

API

Anda dapat menggunakan GKE REST API dan Kubernetes API bersama Library Klien Google Cloud untuk membuat dan mengelola workload secara terprogram.

File konfigurasi

Saat Anda men-deploy workload menggunakan salah satu metode yang dijelaskan sebelumnya, GKE akan menambahkan file konfigurasi ke cluster Anda yang mewakili objek.

Konfigurasi langsung objek mungkin berbeda dari file lokalnya. YAML paling umum digunakan untuk membuat dan merepresentasikan objek Kubernetes. Anda juga bisa menggunakan JSON.

Untuk mempelajari lebih lanjut spesifikasi objek, status, dan Kubernetes API, baca Memahami Objek Kubernetes dan referensi Kubernetes API.

Memeriksa konfigurasi langsung

Konsol

Untuk memeriksa konfigurasi langsung dari objek yang di-deploy, lakukan langkah-langkah berikut:

  1. Buka halaman Workload di Konsol Google Cloud.

    Buka Workloads

  2. Pilih workload yang diinginkan.

  3. Klik YAML.

gcloud

Untuk memeriksa konfigurasi langsung dari objek yang di-deploy, jalankan perintah berikut:

kubectl get [OBJECT_TYPE] [OBJECT_NAME] -o yaml

[OBJECT_TYPE] mungkin berupa deployment, statefulset, job, atau jenis objek lainnya. Contoh:

kubectl get deployment my-stateless-app -o yaml

Mengelola penggunaan resource dengan kuota

Ketika banyak pengguna atau tim berbagi resource di cluster Anda, ada kekhawatiran bahwa beberapa pengguna mungkin menggunakan lebih dari bagian yang wajar. Anda dapat menggunakan objek ResourceQuota Kubernetes untuk membatasi konsumsi resource dalam namespace tertentu.

GKE juga menerapkan objek gke-resource-quotas default yang tidak dapat diubah ke namespace pada cluster dengan maksimal 100 node untuk mencegah ketidakstabilan.

Menggunakan GitLab untuk men-deploy ke GKE

Jika menggunakan GitLab untuk continuous integration, Anda dapat menggunakan komponen GKE GKE untuk men-deploy workload ke cluster GKE.

Anda juga dapat mencoba tutorial menyeluruh untuk menggunakan GitLab dengan Google Cloud.

Untuk informasi selengkapnya, lihat Ringkasan GitLab di Google Cloud.

Langkah selanjutnya