Assalamu’alaikum, pada kesempatan kali ini, technoboard akan membahas Mengenal Apa itu POD Pada Kubernetes. Jika teman-teman belum mengetahui tentang apa itu kubernetes dan apa saja komponen pada kubernetes silahkan lihat pada postingan ini .
Apa itu POD?
POD adalah sebuah resource pada kubernetes yang berfungsi sebagai wadah dari container. Bisa dibilang POD merupakan instance dari aplikasi yang kita buat.
POD biasanya berisi 1 container, atau lebih. tapi pada umumnya hanya satu aja, jadi 1 POD untuk 1 jenis aplikasi. Misal ada POD untuk front end, kemudian POD untuk backend dan yang lainnya.
Cara Kerja POD
Ketika user membuat sebuah container baru, maka container tersebut akan dienkapsulasi menjadi sebuah POD. Sebuah POD memiliki IP Address, yang dimana digunakan oleh container di dalamnya. Entah digunakan 1 container atau pun lebih. Container dalam POD dapat salling berkomunikasi menggunakan localhost. POD juga digunakan untuk scalling dan replication dari aplikasi yang telah kita buat,
Kira kira penggambaran POD seperti ini.

Cara Membuat POD
Untuk membuat sebuah POD kita dapat menggunakan 2 cara, yaitu membuat file yaml atau menggunakan imperative command.
- Membuat POD Menggunakan File Yaml
Pertama, buatlah sebuah file dengan extensi .yaml, untuk nama file nya bebas. Misalnya saya membuat file dengan nama POD.yaml. Kemudian tambahkan perintah berikut.
apiVersion: v1 kind: Pod metadata: name: technoboard spec: containers: - name: web-test image: nginx
Disini akan admin jelaskan fungsi dari masing-masing perintah :
- apiVersion : digunakan untuk mendefinisikan api versi berapa yang digunakan untuk mmebuat sebuah POD.
- kind : untuk mendefinisikan object/resource yang kita buat, yaitu Pod. Huruf awal harus kapital.
- metadata : berisi informasi tambahan dari object/resource yang akan kita buat. Disini admin menambahkan name/nama dari POD yang akan dibuat.
- spec : digunakan untuk menambahkan spesifikasi dari POD, misal container akan menggunakan image apa, berjalan pada port berapa, lalu nama containernya apa dan yang lainnya.
- containers : sesuai dengan namanya, pada bagian ini mendefinisikan nama dari container yang akan dibuat dan akan menggunakan image apa.
Pada bagian container, saya tidak mendefinisikan port. saya biarkan kosong saja. Karena ini hanya untuk contoh bagaimana pembuatan POD. Dan pada keadaan realnya, kita tidak disarankan untuk membuat POD langsung seperti ini, melainkan harus menggunakan deployment terlebih dahulu atau replicaset. Untuk alasannya akan dibahas lebih lanjut di postingan Kube Control manager.
Setelah membuat file yaml, sekarang eksekusi perintah berikut, untuk membuat POD.
$ kubectl create -f POD.yaml
- Membuat POD Menggunakan Imperatice Command
berbeda dengan cara sebelumnya, dengan cara ini kita tidak perlu membuat sebuah file yaml, melainkan dengan menggunakan satu baris perintah.
$ kubectl run nama_POD --image=nginx --restart=Never
perintah diatas akan membuat POD baru, dengan menggunakan image nginx.
Cara Melihat POD
Setelah kita membuat POD pada langkah sebelumnya, sekarang kita akan melihat POD yang telah dibuat. Caranya cukup mudah, kita tinggal mengetikan perintah berikut.
fmaulana@linux-9r25:~> kubectl get pods NAME READY STATUS RESTARTS AGE technoboard 1/1 Running 0 4s fmaulana@linux-9r25:~>
Pada hasil perintah diatas terlihat, ada running POD dengan nama technoboard sebanyak 1. Pod tersebut berjalan selama 4 detik dan restart sebanyak 0.
Mungkin ketika pertama kali teman-teman jalankan perintah tersebut, status dari PODnya adalah ContainerCreating. Ini tidak masalah, artinya Container dalam POD sedang dalam proses pembuatan.
Jika teman-teman ingin mengetahui informasi lengkap dari POD, bisa menggunakan perintah berikut.
fmaulana@linux-9r25:~> kubectl describe pod nama_pod Name: technoboard Namespace: default Priority: 0 Node: minikube/192.168.39.58 Start Time: Wed, 06 May 2020 22:03:07 +0700 Labels: run=technoboard Annotations: <none> Status: Running IP: 172.17.0.4 IPs: IP: 172.17.0.4 Containers: technoboard: Container ID: docker://c7deaacaf8cc85c3a7c7e2e587d67023ea3545821b25ec3c063d4ec3966c6f17 Image: nginx Image ID: docker-pullable://nginx@sha256:86ae264c3f4acb99b2dee4d0098c40cb8c46dcf9e1148f05d3a51c4df6758c12 Port: <none> Host Port: <none> State: Running Started: Wed, 06 May 2020 22:03:19 +0700 Ready: True Restart Count: 0 Environment: <none> Mounts: /var/run/secrets/kubernetes.io/serviceaccount from default-token-rxfgn (ro) Conditions: Type Status Initialized True Ready True ContainersReady True PodScheduled True Volumes: default-token-rxfgn: Type: Secret (a volume populated by a Secret) SecretName: default-token-rxfgn Optional: false QoS Class: BestEffort Node-Selectors: <none> Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s node.kubernetes.io/unreachable:NoExecute for 300s Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 5m52s default-scheduler Successfully assigned default/technoboard to minikube Normal Pulling 5m49s kubelet, minikube Pulling image "nginx" Normal Pulled 5m41s kubelet, minikube Successfully pulled image "nginx" Normal Created 5m40s kubelet, minikube Created container technoboard Normal Started 5m39s kubelet, minikube Started container technoboard
nanti akan muncul lengkap mengenai POD mulai dari ip address, kemudian status/proses pem
Sekian postingan tentang Mengenal Apa itu POD Pada Kubernetes, semoga dapat bermanfaat bagi teman-teman semua. Jika ada pertanyaan dapat disampaikan pada kolom komentar. Terima Kasih.
Sumber : https://kubernetes.io