Skip to content
Santekno.com | Level Up Your Engineering Skills
ID
📖 0%
Kubernetes

Memahami PODs Kubernetes

· 3 mnt baca ·Ihsan Arif

Kita akan mencoba membuat pod menggunakan YAML file pada Kubernetes. Kubernetes biasanya menggunakan YAML file untuk membuat suatu objek-objek konfigurasi terkait PODs, replica, deployment, service dan lainnya.

Struktur dari YAML file pada Kubernetes itu secara umum memiliki kesamaan dalam 4 level fields paling atas yaitu:

yml
1apiVersion:
2kind:
3metadata:
4
5
6spec:

4 fields level ini pasti ada saat kita membuat konfigurasi YAML pada Kubernetes.

Berikut ini beberapa Kind ada perbedaan dalam pengisian apiVersion.

KindapiVersion
PODv1
Servicev1
ReplicaSetapps/v1
Deploymentapps/v1

Sehingga ketika kita ingin membuat suatu POD menggunakan YAML file maka akan seperti dibawah ini.

yml
1apiVersion: v1
2kind: Pod
3metadata:
4
5
6spec:

Selanjutnya kita akan mencoba membuat file dengan nama pod-definition.yaml file pada folder code/pod/pod-definition.yaml lalu isi YAML file tersebut seperti dibawah ini.

yml
 1apiVersion: v1
 2kind: Pod
 3metadata:
 4  name: myapp-pod
 5  labels:
 6    app: myapp
 7    type: backend
 8spec:
 9  containers:
10    - name: nginx-container
11      image: nginx

Berikut ini definisi dari setiap fields:

  • metadata ini berisikan name dan labels yang mana ini bisa kita isi sesuai dengan kebutuhannya yang mana pengisiannya pun dengan struktur key dan value.
  • spec ini kita set list containers yang akan kita buat dalam satu POD tersebut. Pada file tersebut kita hanya satu container saja yang diset dengan name nginx-container dengan image nginx.

Setelah selesai file tersebut dibuat maka kita coba eksekusi file tersebut dengan perintah dibawah ini.

bash
1➜ kubectl apply -f code/pod/pod-definition.yaml 
2pod/myapp-pod created

Lalu kita lihat apakah sudah terbuat dengan perintah

bash
1➜ kubectl get pods                             
2NAME        READY   STATUS              RESTARTS   AGE
3myapp-pod   0/1     ContainerCreating   0          3s

Jika kita ingin melihat lebih detail POD yang sudah kita buat bisa dengan perintah dibawah ini

bash
 1➜ kubectl describe pod myapp-pod
 2Name:             myapp-pod
 3Namespace:        default
 4Priority:         0
 5Service Account:  default
 6Node:             minikube/192.168.49.2
 7Start Time:       Sun, 03 Mar 2024 20:19:23 +0700
 8Labels:           app=myapp
 9                  type=backend
10Annotations:      <none>
11Status:           Running
12IP:               10.244.0.23
13IPs:
14  IP:  10.244.0.23
15Containers:
16  nginx-container:
17    Container ID:   docker://fdb7680e1a75ab77bdf200d4c17086af2a6604e18d22abc5ea2e26258d80775f
18    Image:          nginx
19    Image ID:       docker-pullable://nginx@sha256:c26ae7472d624ba1fafd296e73cecc4f93f853088e6a9c13c0d52f6ca5865107
20    Port:           <none>
21    Host Port:      <none>
22    State:          Running
23      Started:      Sun, 03 Mar 2024 20:19:26 +0700
24    Ready:          True
25    Restart Count:  0
26    Environment:    <none>
27    Mounts:
28      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-bfkcl (ro)
29Conditions:
30  Type              Status
31  Initialized       True 
32  Ready             True 
33  ContainersReady   True 
34  PodScheduled      True 
35Volumes:
36  kube-api-access-bfkcl:
37    Type:                    Projected (a volume that contains injected data from multiple sources)
38    TokenExpirationSeconds:  3607
39    ConfigMapName:           kube-root-ca.crt
40    ConfigMapOptional:       <nil>
41    DownwardAPI:             true
42QoS Class:                   BestEffort
43Node-Selectors:              <none>
44Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
45                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
46Events:
47  Type    Reason     Age   From               Message
48  ----    ------     ----  ----               -------
49  Normal  Scheduled  64s   default-scheduler  Successfully assigned default/myapp-pod to minikube
50  Normal  Pulling    65s   kubelet            Pulling image "nginx"
51  Normal  Pulled     62s   kubelet            Successfully pulled image "nginx" in 3.201s (3.201s including waiting)
52  Normal  Created    62s   kubelet            Created container nginx-container
53  Normal  Started    62s   kubelet            Started container nginx-container

Informasi detail dari PODs diatas sangat lengkap sekali sampai kita bisa melihat event dari PODs tersebut ketika ada perubahan yang terjadi pada POD tersebut.

IH
Ihsan Arif
Backend engineer & penulis di Santekno. Aktif menulis tentang Go, Laravel, dan arsitektur backend modern.
Follow

💬 Komentar