Lewati ke konten utama
Cloud

Dasar-dasar Orkestrasi Kontainer dengan AWS Elastic Kubernetes Service (EKS)

Manfaatkan sepenuhnya potensi orkestrasi kontainer dengan AWS Elastic Kubernetes Service (EKS). Pelajari dasar-dasarnya, jelajahi penerapan di dunia nyata dalam data science, dan temukan cara mengoptimalkan biaya serta skalabilitas.
Gary Alway's photo
Gary Alway
Diperbarui · 13 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Buat Akun Gratis Anda

Berlatih dan lacak kemajuan Anda.

Lanjutkan Dengan Google
Dengan melanjutkan, Anda menerima Ketentuan Penggunaan kami, Kebijakan Privasi kami dan bahwa data Anda disimpan di Amerika Serikat.

Artikel ini berfokus pada kontainerisasi aplikasi dalam pengembangan perangkat lunak modern dengan orkestrasi kontainer dari penyedia cloud, yang memungkinkan kita melakukan deployment dan penskalaan aplikasi secara dinamis untuk memenuhi beban kerja apa pun dengan sifat dapat diulang, mudah dirawat, dapat diobservasi, dan ketersediaan tinggi, sekaligus hemat biaya dan menyediakan pemulihan bencana.

Sekilas

  • Kontainer memungkinkan kita mengemas aplikasi secara independen dari platform sebagai image ringan yang sangat cepat dijalankan dan direplikasi.
  • Mesin orkestrasi kontainer memungkinkan kita mengelola beban kerja komputasi terdistribusi yang besar dan tidak terduga secara dinamis.
  • AWS EKS adalah salah satu orkestrator kontainer paling populer dan menawarkan integrasi erat dengan berbagai layanan AWS.
  • Gunakan chart Helm untuk mendeploy aplikasi Kubernetes pembelajaran mesin atau data science yang kompleks dengan satu perintah.

Mengapa Kontainer?

Hampir mustahil menjawab pertanyaan “mengapa” tanpa “apa”, jadi mari mulai dengan masalah apa yang ingin diselesaikan oleh kontainer dan apa itu kontainer guna menjawab “mengapa”.

Model rekayasa perangkat lunak lama melihat pengembang menulis kode di mesin lokal mereka, lalu dideploy dan dikirim ke lingkungan pengujian, diikuti rilis ke produksi. Masalah dari model ini adalah inkonsistensi antar-lingkungan serta dependensi dan pustaka yang berjalan di berbagai server.

Jadi, sebuah aplikasi yang “berjalan di mesin saya” (mengutip ungkapan klasik pengembang) mungkin bergantung pada pustaka runtime dengan versi yang sangat berbeda dari lingkungan target, yang dapat menyebabkan perilaku tak terduga saat dideploy.

Kontainer mengatasinya dengan mengabstraksi seluruh lapisan aplikasi dengan mengemas kode terkompilasi, pustaka, dependensi, dan runtime ke dalam sebuah “image”.

Image kontainer kemudian dapat digunakan sebagai templat yang dapat dengan cepat dideploy dan dijalankan oleh mesin kontainer, seperti Docker, sebagai instance kontainer dengan perilaku yang dapat diprediksi di lingkungan mana pun.

Masalah berikut yang dipecahkan kontainer adalah skalabilitas, kemudahan pemeliharaan, dan efektivitas biaya. Secara historis, lingkungan produksi terdiri dari sejumlah besar sumber daya perangkat keras (mahal) yang dipagari dan dilindungi untuk penggunaan eksklusif oleh aplikasi dengan volume tinggi atau yang kritis bagi bisnis. Lingkungan mahal ini memerlukan pengelolaan, pemeliharaan, dan patching yang konstan.

Jumlah perangkat keras yang dialokasikan untuk aplikasi semacam itu harus sebesar mungkin untuk memenuhi beban puncak, namun aplikasi tidak selalu memiliki pola penggunaan yang konsisten dan dapat diprediksi. Fakta ini membuat banyak perangkat keras menganggur selama waktu luar jam sibuk.

Solusinya adalah orkestrasi kontainer.

Karena image kontainer bersifat independen platform, sumber daya komputasi kontainer dapat diskalakan naik dan turun sesuai permintaan menggunakan server apa pun yang memiliki kapasitas untuk menjalankan mesin kontainer, sehingga pemeliharaan sistem operasi server yang mendasarinya terlepas dari aplikasi.

Ini berdampak jelas pada efektivitas biaya karena jika kita mengelola kontainer dan mengorkestrasikannya sedemikian rupa sehingga secara dinamis memenuhi permintaan saat ini, maka kita memaksimalkan penggunaan bare metal.

Penjelasan ini adalah gambaran “dari ketinggian”, dan kita akan menyelami lebih dalam pada bagian berikut. Namun sebelum itu, mari bahas beberapa penggunaan praktis kontainer.

Kontainer untuk Data Science dan Machine Learning

Aplikasi untuk data science dan machine learning cenderung sangat intensif komputasi

dengan pola penggunaan yang terkadang tidak terduga serta menangani data dalam jumlah besar.

Aplikasi semacam ini sering kali mendapatkan manfaat dari paralelisasi untuk membagi dan menaklukkan suatu masalah sebelum menyimpan hasil ke penyimpanan data. Ini merupakan penyederhanaan besar-besaran, tetapi jelas bahwa aplikasi semacam ini sangat cocok untuk kontainer dan orkestrasi kontainer!

Jadi, berbekal semua pengetahuan itu, mari masuk ke “bagaimana”. Lalu, di akhir artikel ini, kita akan meninjau kembali keterkaitan antara aplikasi data science dan machine learning ketika kita membahas Helm dan bagaimana kita dapat menjalankan aplikasi kompleks yang dideploy sebagai kontainer dalam mesin orkestrasi kontainer dengan upaya dan konfigurasi minimal.

Ada banyak mesin kontainer di luar sana, tetapi untuk artikel ini kita akan menggunakan yang paling populer, Docker. Anda dapat membiasakan diri dengan platform ini melalui tutorial Pengantar Docker kami.

Mesin Virtual (VM) vs kontainer

Mesin virtual mengabstraksi perangkat keras fisik, mengubah satu server menjadi banyak server melalui hypervisor, sehingga beberapa VM dapat berbagi host yang sama. Setiap VM memiliki sistem operasi (OS) tamu.

Kontainer merupakan abstraksi pada lapisan aplikasi. Sebuah server dengan mesin kontainer terpasang dapat menjalankan banyak kontainer secara bersamaan dengan berbagi OS yang mendasarinya. Anda dapat mempelajari lebih lanjut tentang Kontainer di tutorial kontainerisasi kami.

Perbedaan kunci di sini adalah kontainer menggunakan OS host dan tidak dibundel dengan OS sendiri, tidak seperti VM. Ini membuatnya jauh lebih ringan dan cepat untuk direplikasi, dijalankan, dan dihentikan, sambil tetap memberikan manfaat isolasi keamanan dan toleransi kesalahan antar-kontainer (jika sebuah kontainer crash, itu tidak berdampak pada kontainer lain yang berjalan).

Ini juga berarti pemanfaatan sumber daya yang lebih baik sehingga lebih banyak kontainer dapat berjalan pada satu mesin Docker dibandingkan jumlah VM yang dapat dijalankan pada hypervisor dengan spesifikasi perangkat keras dasar yang sebanding.

Image Docker vs kontainer

Docker Image mengemas konfigurasi, kode, dependensi, dan mesin runtime. Image bertindak sebagai templat untuk mereplikasi dan menjalankan instance kontainer di dalam Docker. Sebuah kontainer dapat berjalan di platform apa pun yang mendukung Docker.

Orkestrasi kontainer

Sekarang kita sudah memahami kontainer, kita memerlukan cara untuk mengelolanya. Ada beberapa orkestrator di luar sana, tetapi untuk artikel ini, kita akan fokus pada Kubernetes yang berjalan di cloud AWS melalui Elastic Kubernetes Service (EKS).

Beberapa tugas utama yang dikelola oleh EKS adalah:

  • Deployment
  • Scaling
  • Load balancing
  • Monitoring
  • Service discovery
  • Self-healing

Layanan AWS

Sebelum mulai menjelaskan EKS, kita perlu memahami beberapa layanan cloud AWS yang menjadi fondasi EKS.

CloudWatch

Layanan pemantauan dan observabilitas yang mengumpulkan data berupa log, metrik, dan event.

VPC

Virtual Private Cloud adalah jaringan yang terisolasi secara logis, dilindungi dan dikelola secara aman per akun AWS.

ELB

Elastic Load Balancer adalah komponen jaringan berketersediaan tinggi yang dapat mendistribusikan trafik ke banyak target.

IAM

Identity and Access Management menyediakan kontrol akses terperinci untuk akun AWS.

ECR

Elastic Container Registry adalah registry image Docker yang sepenuhnya dikelola.

EC2

Elastic Cloud Compute (disingkat karena ada 2 huruf C) adalah layanan inti AWS yang menjadi dasar banyak layanan lain. Layanan ini memungkinkan penyewaan server virtual tempat pelanggan dapat menjalankan aplikasi mereka.

Region

Lokasi fisik tempat pusat data dapat dikelompokkan, misalnya EU-WEST-1 (Irlandia) dan EU-WEST-2 (London).

AZ

Availability Zone adalah satu atau lebih pusat data terpisah dengan daya, jaringan, dan konektivitas redundan. Satu region terdiri dari beberapa AZ.

Route53

Layanan DNS dengan ketersediaan tinggi.

WAF

Web Application Firewall yang membantu melindungi aplikasi dari eksploit dan bot umum yang dapat memengaruhi ketersediaan, mengompromikan keamanan, atau mengonsumsi sumber daya berlebihan.

Dasar-dasar Kubernetes

Kubernetes kadang-kadang disebut K8s. Ini karena ada delapan huruf antara huruf K dan huruf S dalam Kubernetes.

Cluster

EKS akan menyediakan cluster K8s terkelola. Ini adalah komponen tingkat tertinggi dan bertindak sebagai wadah untuk semua layanan, node, dan pod.

EKS memiliki integrasi erat dengan CloudWatch, Elastic Container Repository (ECR), IAM, API Gateway, Elastic Load Balancer (ELB), CodePipeline, Secrets Manager, dan banyak lagi.

Mengambil contoh paling dasar, kita dapat menyimpan image kontainer di ECR dan menjalankan serta mengelola aplikasi kita oleh EKS, yang dideploy ke dalam VPC di beberapa availability zone, dengan semua log sistem dan aplikasi dipublikasikan ke CloudWatch.

Dasar-dasar image kontainer

Master/control plane

Node master adalah inti K8s dan membantu mengelola, memantau, menjadwalkan, dan merencanakan node. Ia memiliki beberapa subkomponen.

ETCD

Ini adalah penyimpanan key-value yang mempertahankan semua data cluster yang kritis

Kube scheduler

Scheduler mendeploy kontainer ke dalam node

Kube controller manager

Ini memastikan keadaan komponen cluster yang semestinya, memastikan beban kerja yang diinginkan sama dengan beban kerja aktual.

API

Semua interaksi dari luar cluster melalui API K8s.

API Kubernetes

Node (worker node)

Worker node EKS adalah instance EC2. Setiap node memiliki docker runtime yang terpasang untuk menjalankan kontainer, agen Kubelet yang menangani semua komunikasi ke dan dari master, serta K-proxy yang memungkinkan komunikasi antar-node.

Agar node terintegrasi dengan CloudWatch, peran IAM untuk node harus menyertakan kebijakan CloudWatchLogsFullAccess.

Contoh node

Pod

Pod adalah unit terkecil yang dapat dideploy. Ia menjalankan satu kontainer aplikasi ditambah kontainer sidecar apa pun yang mungkin diperlukan. Setiap pod bersifat sementara dan akan memiliki alamat IP unik.

Contoh pod

Deployment dan Replica set

Deployment dan replica set

Replica set mengelola sekumpulan pod berdasarkan label dan memastikan selalu ada sekumpulan pod yang stabil berjalan untuk beban kerja tertentu. Jika sebuah pod turun, maka tugas replica set adalah memulihkan pod tersebut.

Deployment mengelola replica set. Jika sebuah replica set turun maka tugas deployment adalah memulihkannya. Deployment dapat dikonfigurasi sebagai rolling, ramped, re-create, atau canary (detail tipe deployment tidak dibahas dalam artikel ini).

Services

Untuk keperluan artikel ini, kita dapat menganggap sebuah service dipetakan langsung ke Application Load Balancer (ALB) AWS, yang merupakan jenis ELB. Ada sedikit lebih banyak detail dari itu, tetapi penting untuk memahami beberapa manfaat yang dapat dibawa ALB:

  • Mengaitkan nama DNS
  • Health check
  • Ketersediaan tinggi di beberapa AZ
  • WAF
  • Access log

Fungsi utama sebuah service adalah mendistribusikan trafik antar-node/pod.

Penskalaan Kontainer

ASG dan EC2

Komponen inti EC2 adalah Auto Scaling Group (ASG). Komponen AWS ini akan mempertahankan armada instance EC2 pada beban kerja yang diinginkan di beberapa AZ dalam satu region, biasanya di belakang load balancer.

Metrik CloudWatch menyediakan pemicu untuk melakukan scale out atau scale in.

Jenis penskalaan ini dikenal sebagai penskalaan horizontal karena armada server aplikasi dapat berkembang dan menyusut “secara horizontal” untuk memenuhi permintaan trafik. Contoh kebijakan penskalaan bisa berupa menjaga semua instance di bawah 50% utilisasi CPU. Pada level ini, ASG biasanya dikonfigurasi untuk mengelola jumlah instance EC2 yang sama per AZ, namun ada konfigurasi lain yang berada di luar cakupan pembahasan artikel ini.

HPA

Sangat penting untuk membedakan antara penskalaan di tingkat EC2 dan di tingkat pod. Horizontal Pod Autoscaler bertanggung jawab untuk menskalakan pod di dalam setiap node. HPA menggunakan metrik K8s yang dikumpulkan melalui Metrics Server (ini perlu dipasang dalam cluster dan bukan bagian dari deployment cluster default untuk EKS) dan menskalakan pod berdasarkan metrik node. Contoh kebijakan penskalaan bisa berupa menargetkan penggunaan vCPU sebesar 50%.

EKS Cluster autoscaler

Penskalaan cluster memerlukan pemasangan EKS cluster autoscaler open-source, yang bertanggung jawab untuk menskalakan layanan K8s bersama ASG AWS, yang pada gilirannya mengelola penskalaan instance fisik yang diprovisikan untuk cluster.

Ketika sebuah node mencapai kapasitas maksimalnya berdasarkan kebijakan skala HPA, cluster autoscaler akan membuat instance EC2 lain dan menambahkannya ke ASG.

Gambaran Lengkap

Gambaran lengkap

Kebijakan penskalaan sangat fleksibel, dapat disesuaikan, dan dapat dikonfigurasi tetapi biasanya memiliki masa tunggu (cool-down) sebelum terjadi scale-down / scale-in untuk mencegah penskalaan yang tidak perlu akibat permintaan trafik yang berfluktuasi tidak menentu.

Penting untuk dicatat bahwa jika sebuah pod melampaui batas vCPU-nya, maka Kubernetes akan men-throttle aplikasi yang berjalan di pod tersebut, tetapi jika sebuah pod melampaui batas memorinya, maka Kubernetes akan me-restart kontainernya.

Optimasi biaya

Contoh cara membatasi pod dalam instance menggunakan tipe instance m5.large:

2 * vCPU = 2000m (millicore)

Memori 8 GiB

Pembatasan sumber daya pod:

  • Cadangan vCPU, mis. 500m
  • Batas vCPU, mis. 1000m
  • Cadangan memori, mis. 256Mi
  • Batas memori, mis. 512Mi

Observabilitas

EKS Resource View

Menampilkan semua sumber daya yang berjalan di cluster.

Tampilan sumber daya EKS

CloudWatch Container Insights

  • Monitor
  • Alarm
  • Memicu fungsi Lambda
  • Dashboard dan metrik siap pakai
  • Pemasangan sekali klik

CloudWatch Container Insights

Helm

Helm adalah manajer paket untuk Kubernetes yang mengotomatisasi pengemasan, konfigurasi, dan deployment aplikasi. Helm chart memungkinkan Anda membuat, berbagi, versi, dan memublikasikan aplikasi Kubernetes yang kompleks.

Beberapa contoh chart menarik di ranah data science dan machine learning adalah:

  • Ml-workspace
  • Mlflow
  • Tensorflow
  • Hive
  • Spark

Aplikasi K8s ini dapat dideploy ke cluster EKS Anda melalui Helm dengan satu perintah!

Kesimpulan

Dalam panduan komprehensif ini, kita telah mengeksplorasi dasar-dasar orkestrasi kontainer dengan AWS Elastic Kubernetes Service (EKS). Mulai dari memahami dasar kontainer dan penerapannya di dunia nyata dalam data science dan machine learning, hingga menyelami seluk-beluk layanan AWS dan komponen Kubernetes, kita telah membahas banyak hal. Dunia orkestrasi kontainer itu kompleks namun sangat bermanfaat, menawarkan skalabilitas, kemudahan pemeliharaan, dan efektivitas biaya.

Baik Anda seorang pengembang, data scientist, atau profesional TI, menguasai orkestrasi kontainer jelas akan menjadi keterampilan berharga dalam perangkat Anda. Seiring bisnis terus bermigrasi ke solusi berbasis cloud dan mengadopsi arsitektur microservices, permintaan terhadap profesional dengan keahlian di bidang ini akan terus meningkat.

Siap mempraktikkan pengetahuan Anda? DataCamp menawarkan berbagai kursus yang dapat membantu Anda memperdalam pemahaman tentang Kubernetes, Docker, dan komputasi awan. Dari tingkat pemula hingga lanjutan, Anda akan menemukan pelajaran interaktif, tantangan dunia nyata, dan tutorial yang dipandu pakar untuk meningkatkan keterampilan Anda.

Tautan bermanfaat

  • Kubectl cheat sheet dengan perintah yang paling umum digunakan
  • Tutorial HPA menjelaskan HPA dan memandu Anda melalui sebuah aplikasi dengan penskalaan terkelola
  • Tutorial cluster autoscaler untuk menyiapkan dan menjalankan aplikasi sederhana dengan penskalaan cluster
  • Helm charts
  • Kalkulator harga AWS

Gary Alway's photo
Author
Gary Alway
LinkedIn

Saya adalah Full Stack Software Engineer dan Solutions Architect dengan hasrat terhadap pembelajaran dan data!

Topik
Cloud
Terkait

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

Lihat Selengkapnya