Catatan perev. : Artikel ini melanjutkan siklus materi dari penulis teknis dari Google, mengerjakan dokumentasi untuk Kubernetes (Andrew Chen), dan direktur rekayasa perangkat lunak dari SAP (Dominik Tornow). Tujuan mereka adalah menjelaskan dasar-dasar Kubernet dengan jelas dan jelas. Terakhir kali kami menerjemahkan artikel tentang ketersediaan tinggi , dan sekarang kami akan berbicara tentang konsep dasar di Kubernetes sebagai pod.
Kubernetes adalah mesin orkestrasi wadah yang dirancang untuk menjalankan aplikasi kemas pada banyak node, biasanya disebut sebagai cluster. Dalam publikasi ini, kami menggunakan pendekatan pemodelan sistem untuk meningkatkan pemahaman tentang Kubernet dan konsep dasarnya. Pembaca didorong untuk sudah memiliki pemahaman dasar tentang Kubernet.
Pod adalah blok bangunan dasar Kubernetes, tetapi pengguna Kubernetes yang berpengalaman sekalipun tidak dapat selalu menjelaskan apa itu.
Publikasi ini menawarkan model pemikiran ringkas yang menyoroti karakteristik mendefinisikan polong Kubernet. Demi keringkasan ini, saya harus menghilangkan beberapa fitur Pods lainnya, seperti 
probe liveness dan readiness , berbagi sumber daya 
(termasuk berbagi namespace yang baru-baru ini muncul - perkiraan Terjemahan. ) , Bekerja dengan jaringan. 
Definisi
Pod adalah permintaan untuk menjalankan satu atau lebih kontainer pada satu node.
Pod didefinisikan dengan menyajikan permintaan untuk 
mengeksekusi satu atau lebih kontainer pada satu node, dan kontainer ini berbagi akses ke sumber daya seperti volume penyimpanan dan tumpukan jaringan.
Namun, dalam kehidupan sehari-hari, istilah "pod" dapat digunakan baik dalam arti 
permintaan ini maupun dalam arti 
pengumpulan kontainer yang diluncurkan sebagai tanggapan atas permintaan tersebut. Oleh karena itu, dalam publikasi kita akan menggunakan kata "pod" ketika kita berbicara tentang permintaan, dan untuk kasus kedua - gunakan ungkapan "set wadah".
Pod dianggap sebagai blok bangunan dasar Kubernet karena semua beban kerja di Kubernet - misalnya, 
Penyebaran , 
ReplicaSets, dan 
Pekerjaan - dapat dinyatakan sebagai pod.
Pod adalah 
satu-satunya objek di Kubernetes yang menyebabkan kontainer berjalan. 
Tanpa pod - tanpa wadah! Skema 1. Penempatan, ReplicaSet, pod dan wadah
Skema 1. Penempatan, ReplicaSet, pod dan wadahArsitektur Kubernetes
 Skema 2. Pod, Penjadwal dan Kubelet
Skema 2. Pod, Penjadwal dan KubeletDalam ilustrasi ini, objek dan komponen terkait disorot. Pod direpresentasikan sebagai 
Objek Pod Kubernetes , dan bekerja dengannya:
Objek Kubernetes
 Gambar 3. Objek Kubernetes
Gambar 3. Objek KubernetesIlustrasi ini menunjukkan objek Kubernetes yang bertanggung jawab untuk bekerja dengan pod:
- objek pod aktual (Objek Pod) ;
- Binding Object
- Obyek Simpul
Pod Object menetapkan set kontainer yang akan diluncurkan, dan 
kebijakan mulai ulang yang diinginkan jika terjadi kecelakaan kontainer, dan juga memantau keadaan peluncuran.
Binding Object mengikat 
Pod Object ke 
Node Object , mis. memberikan pod ke host untuk peluncuran nanti.
Node Object merepresentasikan sebuah node dalam cluster Kubernetes.
Pengolahan pod
 Skema 4. Memproses pod'a
Skema 4. Memproses pod'aSaat pod dibuat oleh pengguna atau pengontrol seperti 
ReplicaSet Controller atau 
Job Controller , Kubernetes memproses pod dalam dua langkah:
- Penjadwal merencanakan pod,
- Kubelet meluncurkan pod.
Perencanaan pod
 Gambar 5. Siklus Kontrol Penjadwal Kubernetes
Gambar 5. Siklus Kontrol Penjadwal KubernetesTugas 
Penjadwal di Kubernetes adalah menjadwalkan pod, yaitu, menetapkannya sebagai simpul yang sesuai di kluster Kubernetes untuk peluncuran berikutnya.
 Mengaitkan objek pod dengan objek node
Mengaitkan objek pod dengan objek nodePod ditugaskan ke sebuah simpul (atau 
mengikatnya ) jika dan hanya jika ada objek yang mengikat yang memiliki:
- namespace sama dengan namespace pod,
- nama sama dengan nama pod,
- tipe target sama dengan Node,
- nama target sama dengan nama node.
(Pecinta petualangan dapat melihat inti GitHub Kelsey Hightower berjudul " 
Membuat dan Menjadwalkan Pod Secara Manual, " panduan langkah demi langkah tentang cara membuat objek yang mengikat secara manual.)
Peluncuran pod
 Diagram 6. Siklus kontrol kubelet
Diagram 6. Siklus kontrol kubeletTugas Kubelet adalah meluncurkan pod, yang pada dasarnya berarti meluncurkan satu set wadah pod. Peluncuran pod Kubelet terjadi dalam dua fase: inisialisasi dan tahap utama.
Sebagai aturan, satu set wadah selama fase inisialisasi melakukan pekerjaan persiapan, seperti menyiapkan direktori yang diperlukan dan struktur file. Dan set kontainer di fase utama sudah melakukan tugas "paling penting".
Dalam kehidupan sehari-hari, meskipun ini tidak sepenuhnya benar, istilah βpodβ sering menyiratkan satu set wadah dalam fase utama atau makna yang lebih sempit dari wadah βpaling pentingβ dari fase utama.
 Skema 7.1. Mulai pod, fase inisialisasi (init) dan fase utama (utama)
Skema 7.1. Mulai pod, fase inisialisasi (init) dan fase utama (utama)Selama inisialisasi, Kubelet memulai wadah secara berurutan sesuai dengan spesifikasi 
.Spec.InitContainers dan dalam urutan yang ditentukan dalam daftar. Agar berhasil meluncurkan pod, dan dengan mempertimbangkan kebijakan restart, wadah initnya harus mulai dan berhasil menyelesaikan.
Selama fase utama, Kubelet secara bersamaan meluncurkan kontainer sesuai dengan spesifikasi 
.Spec.Containers . Di sini, agar peluncuran pod berhasil, dan dengan mempertimbangkan kebijakan restart, wadah utamanya harus dimulai dan berhasil diselesaikan atau bekerja tanpa batas waktu.
 Skema 7.2. Menjalankan pod, detail dari proses ini
Skema 7.2. Menjalankan pod, detail dari proses iniJika terjadi kegagalan kontainer, ketika kontainer berhenti bekerja dengan 
kode keluar non-nol (0), Kubelet dapat memulai kembali wadah sesuai dengan kebijakan restart pod. Kebijakan ini memiliki salah satu makna berikut: 
Always , 
OnFailure , 
Never .
Kebijakan mulai ulang pod memiliki semantik berbeda untuk wadah init dan kontainer utama: jika meluncurkan kontainer init harus mengarah pada penyelesaian, maka kontainer utama mungkin tidak berakhir.
 Mulai ulang kebijakan untuk wadah init
Mulai ulang kebijakan untuk wadah initKontainer awal akan dimulai kembali (mis. Itu akan memerlukan peluncuran wadah baru dengan spesifikasi yang sama) setelah menyelesaikan pekerjaannya hanya jika kondisi berikut dipenuhi:
- Kode keluar wadah melaporkan kesalahan dan
- kebijakan restart OnFailureadalahAlwaysatauOnFailure.
 Mulai ulang kebijakan untuk wadah utama
Mulai ulang kebijakan untuk wadah utamaWadah utama akan dimulai kembali (mis. Mensyaratkan peluncuran wadah baru dengan spesifikasi yang sama) setelah menyelesaikan pekerjaannya hanya jika persyaratan berikut dipenuhi:
- restart kebijakan yang didefinisikan sebagai Alwaysatau
- Kebijakan mulai ulang didefinisikan sebagai OnFailuredan kode keluar wadah melaporkan kesalahan.
 Diagram 8. Contoh garis waktu dengan titik merah, melambangkan kegagalan wadah
Diagram 8. Contoh garis waktu dengan titik merah, melambangkan kegagalan wadahIlustrasi menunjukkan kemungkinan waktu peluncuran pod dengan dua spesifikasi untuk init container dan dua spesifikasi untuk container utama. Itu juga menunjukkan pembuatan (sesuai dengan kebijakan restart) dari 
wadah utama 1.2 baru setelah masalah dengan peluncuran 
wadah utama 1.1 .
Fase pod
 Diagram 9. Interaksi Kubelet dengan objek pod dan runtime wadah (container runtime)
Diagram 9. Interaksi Kubelet dengan objek pod dan runtime wadah (container runtime)Kubelet menerima spesifikasi pod untuk 
.Spec.InitContainers dan 
.Spec.Containers , meluncurkan kumpulan kontainer yang ditentukan, dan memperbarui nilai 
.Status.InitContainerStatuses untuk 
.Status.InitContainerStatuses dan 
.Status.ContainerStatuses .
Kubelet runtuh 
.Status.InitContainerStatuses dan 
.Status.ContainerStatuses menjadi satu nilai - 
.Status.Phase .
Fase pod adalah proyeksi keadaan wadah dari satu set wadah, tergantung pada:
- negara dan kode keluar dari wadah init,
- menyatakan dan keluar dari wadah utama.
 Skema 10. Fase-fase pod
Skema 10. Fase-fase podTertunda
 Fase Tertunda
Fase TertundaPod sedang menunggu jika dan hanya jika:
- tidak ada wadah init pod dalam status Terminateddengan kesalahan (Failure);
- semua wadah pod utama dalam status Waiting.
Lari
 Fase lari
Fase lariPod sedang dalam tahap kerja jika dan hanya jika:
- semua wadah pod init berada dalam status Terminateddengan sukses;
- setidaknya satu wadah pod utama dalam status Running;
- tidak ada wadah pod utama dalam status TerminateddenganFailure.
Sukses
 Fase Keberhasilan
Fase KeberhasilanPod berada dalam fase sukses jika dan hanya jika:
- semua wadah pod init berada dalam status Terminateddengan sukses;
- semua wadah pod utama berada dalam status Terminateddengan sukses.
Kegagalan
 Fase Kegagalan
Fase KegagalanPod sedang dalam fase kegagalan jika dan hanya jika:
- semua wadah pod dalam status Terminated;
- setidaknya salah satu wadah pod berada dalam status Terminateddengan kesalahan (Failure).
Tidak dikenal
Selain fase yang dijelaskan di atas, pod mungkin berada dalam fase yang tidak diketahui, yang menunjukkan ketidakmungkinan menentukan fase saat ini.
Pengumpulan sampah untuk polong
 Diagram 11. Siklus Kontrol Pengumpul Sampah Pod
Diagram 11. Siklus Kontrol Pengumpul Sampah PodSetelah pod dijadwalkan dan diluncurkan, pengontrol Kubernetes khusus - 
Pengontrol Pengumpul Sampah Pod - bertanggung jawab untuk menghilangkan objek pod dari 
Toko Obyek Kubernetes .
Kesimpulan
Pod adalah blok bangunan dasar Kubernetes: pod didefinisikan sebagai representasi permintaan untuk meluncurkan satu atau lebih kontainer pada satu node. Setelah pod dibuat, Kubernetes memprosesnya dalam dua tahap: pertama, 
Penjadwal menjadwalkan pod, dan kemudian Kubelet meluncurkannya. Sepanjang siklus hidupnya, pod melewati fase yang berbeda, melaporkan status - atau, lebih tepatnya, keadaan set kontainernya - kepada pengguna dan sistem.
PS dari penerjemah
Baca juga di blog kami: