|
| 1 | +--- |
| 2 | +title: Pengenalan Pod |
| 3 | +content_template: templates/concept |
| 4 | +weight: 10 |
| 5 | +card: |
| 6 | + name: concepts |
| 7 | + weight: 60 |
| 8 | +--- |
| 9 | + |
| 10 | +{{% capture overview %}} |
| 11 | +Halaman ini menyajikan ikhtisar dari `Pod`, objek terkecil yang dapat di *deploy* di dalam objek model Kubernetes. |
| 12 | +{{% /capture %}} |
| 13 | + |
| 14 | + |
| 15 | +{{% capture body %}} |
| 16 | +## Memahami Pod |
| 17 | + |
| 18 | +Sebuah *Pod* adalah unit dasar di Kubernetes--unit terkecil dan paling sederhana di dalam objek model Kubernetes yang dapat dibuat dan di *deploy*. Sebuah *Pod* merepresentasikan suatu proses yang berjalan di dalam kluster. |
| 19 | + |
| 20 | +*Pod* membungkus sebuah kontainer (atau, di beberapa kasus, beberapa kontainer), sumber penyimpanan, alamat jaringan *IP* yang unik, dan opsi yang mengatur bagaimana kontainer harus dijalankan. *Pod* merupakan representasi dari unit *deployment*: sebuah *instance* aplikasi di dalam Kubernetes, yang mungkin terdiri dari satu kontainer atau sekumpulan kontainer yang berbagi *resource*. |
| 21 | + |
| 22 | +[Docker](https://www.docker.com) adalah salah satu kontainer *runtime* yang paling umum digunakan di Kubernetes *Pod*, tetapi *Pod* mendukung kontainer *runtime* lainnya. |
| 23 | + |
| 24 | +*Pod* di Kubernetes kluster dapat digunakan dengan dua cara: |
| 25 | + |
| 26 | +* **Pod menjalankan satu kontainer**. Model satu kontainer per *Pod* adalah model yang umum digunakan di Kubernetes; kamu dapat membayangkan sebuah *Pod* sebagai pembungkus kontainer tersebut, dan Kubernetes tidak mengelola kontainer secara langsung tetapi mengelola *Pod* tersebut. |
| 27 | +* **Pod menjalankan beberapa kontainer yang perlu berjalan bersamaan**. Sebuah *Pod* dapat membungkus sebuah aplikasi yang terdiri dari beberapa kontainer yang perlu berbagi *resource*. Kontainer yang ditempatkan di dalam satu *Pod* ini membentuk sebuah layanan. Sebuah kontainer menyajikan berkas dari sumber penyimpanan ke publik, sedangkan kontainer *sidecar* yang lain melakukan pembaharuan terhadap berkas tersebut. *Pod* membungkus semua kontainer dan *resource* penyimpanan sebagai satu kesatuan yang dapat dikelola. |
| 28 | + |
| 29 | +[Kubernetes Blog](http://kubernetes.io/blog) menyediakan beberapa informasi tambahan terkait penggunaan *Pod*. Informasi selengkapnya, kunjungi: |
| 30 | + |
| 31 | +* [The Distributed System Toolkit: Patterns for Composite Containers](https://kubernetes.io/blog/2015/06/the-distributed-system-toolkit-patterns) |
| 32 | +* [Container Design Patterns](https://kubernetes.io/blog/2016/06/container-design-patterns) |
| 33 | + |
| 34 | +Setiap *Pod* dimaksudkan untuk menjalankan satu *instance* aplikasi. Jika kamu ingin mengembangkan aplikasi secara horizontal (contoh, banyak *instance* sekaligus), kamu dapat menggunakan banyak *Pod*, satu untuk setiap *instance*. Di Kubernetes, konsep ini umumnya disebut dengan replikasi. *Pod* yang direplikasi biasanya dibuat dan dikelola sebagai grup oleh objek abstraksi yang disebut kontroler. Lihat [Pod dan Kontroler](#pod-dan-kontroler) untuk informasi selengkapnya. |
| 35 | + |
| 36 | +### Bagaimana *Pod* mengelola beberapa Kontainer |
| 37 | +*Pod* didesain untuk mendukung banyak proses (sebagai kontainer) yang membentuk sebuah layanan. Kontainer di dalam sebuah *Pod* akan otomatis ditempatkan bersama di dalam satu mesin fisik atau mesin *virtual* di dalam kluster. Kontainer tersebut dapat berbagi *resource* dan dependensi, berkomunikasi satu sama lain, dan berkoordinasi kapan dan bagaimana mereka diterminasi. |
| 38 | + |
| 39 | +Perhatikan bahwa mengelompokan kontainer di dalam satu *Pod* merupakan kasus lanjutan. Kamu dapat menggunakan pola ini hanya dalam kasus tertentu. Sebagai contoh, kamu memiliki kontainer yang bertindak sebagai *web server* yang menyajikan berkas dari *resource* penyimpanan bersama, dan kontainer *sidecar* melakukan pembaharuan terhadap berkas tersebut dari sumber lain, seperti dalam diagram *Pod* berikut: |
| 40 | +{{< figure src="/images/docs/pod.svg" title="Pod diagram" width="50%" >}} |
| 41 | + |
| 42 | +*Pod* menyediakan dua jenis *resource* sebagai penyusun dari kontainer: *jaringan* dan *penyimpanan*. |
| 43 | + |
| 44 | +#### Jaringan |
| 45 | + |
| 46 | +Setiap *Pod* diberikan sebuah alamat *IP* unik. Setiap kontainer di dalam *Pod* berbagi *network namespace*, termasuk alamat *IP* dan *port* jaringan. Setiap kontainer di dalam *Pod* dapat berkomunikasi satu sama lain menggunakan *localhost*. Saat para kontainer di dalam *Pod* berkomunikasi dengan entitas lain di luar *Pod*, mereka harus berkoordinasi satu sama lain bagaimana mereka menggunakan *resource* jaringan (seperti *Port*). |
| 47 | + |
| 48 | +#### Penyimpanan |
| 49 | + |
| 50 | +*Pod* dapat menentukan penyimpanan bersama yaitu *volumes*. Semua kontainer di dalam *Pod* dapat mengakses *volumes* ini, mengizinkan kontainer untuk berbagi data. *Volumes* juga memungkinkan data di *Pod* untuk bertahan jika salah satu kontainer perlu melakukan proses *restart*. Lihat *[Volumes](/docs/concepts/storage/volumes/)* untuk informasi lebih lanjut bagaimana Kubernetes mengimplementasikan penyimpanan di dalam *Pod*. |
| 51 | + |
| 52 | + |
| 53 | +## Bekerja dengan Pod |
| 54 | + |
| 55 | +Kamu akan jarang membuat *Pod* secara langsung di Kubernetes. Ini karena *Pod* dirancang sebagai entitas sesaat. Saat *Pod* dibuat (baik oleh kamu, atau secara tidak langsung oleh kontroler), *Pod* ditempatkan dan dijalankan di sebuah *Node* di dalam kluster. *Pod* akan tetap di *Node* tersebut sampai proses dihentikan, Objek *Pod* dihapus, *Pod* dihentikan karena kekurangan *resource*, atau *Node* tersebut berhenti berjalan. |
| 56 | + |
| 57 | +{{< note >}} |
| 58 | +Tidak perlu bingung untuk membedakan antara menjalankan ulang sebuah kontainer di dalam *Pod* dan menjalankan ulang *Pod*. *Pod* itu sendiri tidak berjalan, tetapi *Pod* adalah *environment* kontainer itu berjalan dan akan tetap ada sampai dihapus. |
| 59 | +{{< /note >}} |
| 60 | + |
| 61 | +*Pod* tidak melakukan mekanisme penyembuhan diri sendiri. Jika *Pod* ditempatkan disebuah *Node* yang gagal, atau proses penempatan *Pod* itu sendiri gagal, *Pod* akan dihapus; demikian juga, *Pod* tidak akan bertahan jika *Node* tersebut kehabisan *resource* atau sedang dalam tahap pemeliharaan. Kubernetes menggunakan abstraksi yang disebut kontroler, yang menangani dan mengelola *Pod*. Jadi, meskipun *Pod* dapat dipakai secara langsung di Kubernetes, kontroler merupakan cara umum yang digunakan untuk mengelola *Pod*. Lihat [Pod dan kontroler](#pod-dan-kontroler) untuk informasi lebih lanjut bagaimana Kubernetes menggunakan kontroler untuk mengimpelentasikan mekanisme penyembuhan diri sendiri dan replikasi pada *Pod*. |
| 62 | + |
| 63 | +### Pod dan Kontroler |
| 64 | + |
| 65 | +Kontroler dapat membuat dan mengelola banyak *Pod* untuk kamu, menangani replikasi dan menyediakan kemampuan penyembuhan diri sendiri pada lingkup kluster. Sebagai contoh, jika sebuah *Node* gagal, kontroler akan otomatis mengganti *Pod* tersebut dengan menempatkan *Pod* yang identik di *Node* yang lain. |
| 66 | + |
| 67 | +Beberapa contoh kontroler yang berisi satu atau lebih *Pod* meliputi: |
| 68 | + |
| 69 | +* [Deployment](/docs/concepts/workloads/controllers/deployment/) |
| 70 | +* [StatefulSet](/docs/concepts/workloads/controllers/statefulset/) |
| 71 | +* [DaemonSet](/docs/concepts/workloads/controllers/daemonset/) |
| 72 | + |
| 73 | +Secara umum, kontroler menggunakan templat *Pod* yang kamu sediakan untuk membuat *Pod*. |
| 74 | + |
| 75 | +## Templat Pod |
| 76 | + |
| 77 | +Templat *Pod* adalah spesifikasi dari *Pod* yang termasuk di dalam objek lain seperti |
| 78 | +[Replication Controllers](/docs/concepts/workloads/controllers/replicationcontroller/), [Jobs](/docs/concepts/jobs/run-to-completion-finite-workloads/), dan [DaemonSets](/docs/concepts/workloads/controllers/daemonset/). Kontroler menggunakan templat *Pod* untuk membuat *Pod*. |
| 79 | + |
| 80 | +Contoh di bawah merupakan manifestasi sederhana untuk *Pod* yang berisi kontainer yang membuat sebuah pesan. |
| 81 | + |
| 82 | +```yaml |
| 83 | +apiVersion: v1 |
| 84 | +kind: Pod |
| 85 | +metadata: |
| 86 | + name: myapp-pod |
| 87 | + labels: |
| 88 | + app: myapp |
| 89 | +spec: |
| 90 | + containers: |
| 91 | + - name: myapp-container |
| 92 | + image: busybox |
| 93 | + command: ['sh', '-c', 'echo Hello Kubernetes! && sleep 3600'] |
| 94 | +``` |
| 95 | +
|
| 96 | +
|
| 97 | +Perubahan yang terjadi pada templat atau berganti ke templat yang baru tidak memiliki efek langsung pada *Pod* yang sudah dibuat. *Pod* yang dibuat oleh *replication controller* dapat diperbarui secara langsung. |
| 98 | +
|
| 99 | +
|
| 100 | +{{% /capture %}} |
| 101 | +
|
| 102 | +{{% capture whatsnext %}} |
| 103 | +* Pelajari lebih lanjut tentang perilaku *Pod*: |
| 104 | + * [Terminasi Pod](/docs/concepts/workloads/pods/pod/#termination-of-pods) |
| 105 | + * [Lifecycle Pod](/docs/concepts/workloads/pods/pod-lifecycle/) |
| 106 | +{{% /capture %}} |
0 commit comments