Dalam tutorial ini, kita akan mempelajari cara membuat dan mengelola Pod Kubernetes. Pertama, kita akan mulai dengan apa itu Pod di Kubernetes dan bagaimana cara kerja Pod. Selanjutnya, kita akan melihat sekilas jenis-jenis Pod. Dan kemudian kita akan melihat cara membuat Pod baru dan cara melihat informasi Pod dari baris perintah. Terakhir, kita akan mempelajari cara menghapus Pod saat tidak diperlukan lagi.
Apa itu Pod di Kubernetes?
Di Kubernetes , Pod adalah unit komputasi terkecil yang dapat digunakan yang dapat Anda bangun dan kendalikan. Pod adalah kumpulan dari satu atau lebih container dengan penyimpanan bersama dan sumber daya jaringan, serta seperangkat aturan tentang bagaimana container harus dijalankan.
Isi sebuah Pod selalu ditempatkan bersama, dijadwalkan bersama, dan dieksekusi di lingkungan yang sama. Sebuah Pod mewakili "host logis" khusus aplikasi:Pod mencakup satu atau lebih container aplikasi yang terhubung erat.
Dalam perspektif Docker, Pod setara dengan satu set kontainer Docker dengan ruang nama dan volume sistem file yang sama.
Jenis Pod Kubernetes
Dalam cluster Kubernetes, ada dua jenis Pod.
- POD Kontainer Tunggal: Kasus penggunaan Kubernetes yang paling sering adalah pendekatan "satu wadah-per-Pod"; dalam skenario ini, pertimbangkan sebuah Pod sebagai pembungkus di atas satu kontainer; Kubernetes mengelola Pod, bukan container secara langsung.
- POD Beberapa Kontainer: Sebuah Pod dapat mengenkapsulasi aplikasi yang terdiri dari banyak container yang terhubung erat yang perlu berbagi sumber daya. Kontainer ini dikelompokkan bersama untuk membentuk satu unit layanan dan kontainer ini akan berkomunikasi satu sama lain.
Bagaimana cara kerja POD?
Setiap Pod dirancang untuk mengeksekusi satu instance aplikasi. Anda dapat menggunakan beberapa Pod, satu untuk setiap instance, jika Anda perlu memperluas aplikasi Anda secara horizontal. Ini biasanya disebut sebagai replikasi di Kubernetes . Resource beban kerja dan pengontrolnya biasanya memproduksi dan mengelola Pod yang direplikasi dalam sebuah grup.
Tujuan akhir dari Kubernetes adalah untuk menyebarkan aplikasi dalam bentuk wadah dalam satu set mesin yang disebut sebagai node pekerja di Kluster Kubernetes.
Kubernetes tidak meluncurkan container secara langsung di dalam node, melainkan container tersebut dienkapsulasi sebagai Pod yang merupakan instance tunggal dari sebuah aplikasi.
Dalam Cluster Kubernetes, sebuah node terdiri dari Pod dan Pod terdiri dari Container. Misalnya, Anda memiliki satu instance aplikasi yang berjalan dalam satu wadah yang dienkapsulasi oleh sebuah Pod.
Jika jumlah pengguna meningkat mengakses aplikasi, Anda perlu meningkatkan aplikasi Anda. Dalam hal ini, Anda mungkin perlu menjalankan instance tambahan untuk berbagi beban.
Untuk meningkatkan skala aplikasi, Anda perlu memutar Pod baru tambahan di node dengan aplikasi yang sama. Jika beban semakin meningkat dan node saat ini tidak memiliki kapasitas, maka Anda perlu memiliki node tambahan untuk menjalankan Pod dengan container aplikasi yang sama.
Demikian pula, untuk scaling down, Anda perlu menghapus Pod yang ada.
Semoga Anda mendapatkan ide dasar tentang Kubernetes Pods. Sekarang mari kita lihat cara membuat dan mengelola Pod di Kubernetes.
Sebelum memulai, pastikan Anda telah menginstal Kubernetes di sistem Anda. Tautan berikut berisi petunjuk tentang cara menyiapkan penyebaran cluster Kubernetes node tunggal dan multinode di Linux.
- Cara Menginstal Kubernetes Menggunakan Minikube Di CentOS Linux
- Instal Cluster Kubernetes Menggunakan Kubeadm Di RHEL, CentOS, AlmaLinux, Rocky Linux
Setelah Kubernetes terinstal, Anda dapat mulai membuat Pod.
Biasanya, Anda tidak perlu membuat Pod secara langsung, bahkan Pod tunggal. Sebagai gantinya, buat mereka menggunakan sumber daya beban kerja seperti Deployment atau Pekerjaan . Deployment menyediakan pembaruan deklaratif untuk Pod dan ReplicaSet.
Buat Penerapan
Buat penerapan sampel menggunakan gambar yang ada "echoserver" . Ini adalah server HTTP sederhana dan kami dapat mengeksposnya di port 8080
menggunakan --port
pilihan.
Gambar kontainer adalah file yang membungkus program dan semua dependensi perangkat lunaknya dalam data biner. Gambar kontainer adalah paket perangkat lunak independen yang dapat dieksekusi yang membuat asumsi yang sangat spesifik tentang lingkungan eksekusinya.
Dalam artikel ini, kita akan membahas semua demonstrasi dalam kluster node tunggal .
Anda dapat mengetahui detail node dengan menjalankan perintah di bawah ini sebagai root
pengguna
# kubectl get nodes
Contoh keluaran:
NAME STATUS ROLES AGE VERSION ostechnix Ready Master 25h v1.22.3
Sekarang, terapkan aplikasi sampel bernama "hello-ostechnix" menggunakan perintah di bawah ini. Anda dapat memberi nama sesuai dengan kenyamanan Anda.
# kubectl create deployment hello-ostechnix --image=k8s.gcr.io/echoserver:1.10
Contoh keluaran:
deployment.apps/hello-ostechnix created [[email protected] ~]#
Penerapan dibuat, verifikasi penerapan menggunakan perintah di bawah ini.
# kubectl get deployments
Contoh keluaran:
NAME READY UP-TO-DATE AVAILABLE AGE hello-ostechnix 1/1 1 1 85s
Penerapan Akses
Untuk mengakses penerapan ini sebagai layanan, Anda perlu mengeksposnya sebagai layanan. Gunakan perintah di bawah ini untuk mengekspos penerapan pada port 8080
.
# kubectl expose deployment hello-ostechnix --type=NodePort --port=8080
Contoh keluaran:
service/hello-ostechnix exposed
Gunakan perintah di bawah ini untuk mendapatkan URL layanan yang terbuka.
# minikube service hello-ostechnix --url
Contoh keluaran:
http://192.168.181.131:30525
Salin URL dan tempel di browser Anda, itu akan mencantumkan detail aplikasi yang digunakan.
Pastikan port 30525
diperbolehkan di router atau firewall Anda. Jika port ini diblokir, Anda tidak dapat melihat informasi Pod di browser.
Hapus Penerapan
Pertama, hapus layanan "hello-ostechnix" menggunakan perintah:
# kubectl delete services hello-ostechnix
Contoh keluaran:
service "hello-ostechnix" deleted
Selanjutnya, hapus penerapan "hello-ostechnix":
# kubectl delete deployment hello-ostechnix
Contoh keluaran:
deployment.apps "hello-ostechnix" deleted
Setelah Anda menghapus penerapan, Pod yang terkait dengan aplikasi akan dihentikan. Diperlukan beberapa detik untuk menyelesaikan penghentian.
# kubectl get pods
Contoh keluaran:
NAME READY STATUS RESTARTS AGE hello-ostechnix-5d4cf4df75-jlwff 1/1 Terminating 0 57m
Setelah menghentikan penerapan, aplikasi tidak akan dapat diakses lagi.
# kubectl get pods
Contoh Keluaran:
No resources found in default namespace.
Jalankan Pod Dengan Gambar
Kita dapat menggunakan 'kubectl run
' perintah untuk membuat dan menjalankan aplikasi dalam sebuah Pod.
$ kubectl run <POD name> --image=<image name>
Di sini, nama Pod bisa apa saja dan nama image harus spesifik yang akan tersedia di Docker Hub atau repositori lokal mana pun.
Mari kita buat Pod dengan gambar Nginx.
# kubectl run ostechnix-nginx --image=nginx
Contoh keluaran:
pod/ostechnix-nginx created
Sebuah Pod bernama 'ostechnix-nginx' telah dibuat. Anda dapat memverifikasi status Pod dengan perintah di bawah ini.
# kubectl get pods
Contoh keluaran:
NAME READY STATUS RESTARTS AGE ostechnix-nginx 1/1 Running 0 4m20s
Anda bisa mendapatkan informasi tambahan seperti di mana Pod berjalan dan IP Pod dengan menggunakan 'wide
' pilihan.
# kubectl get pods -o wide
Contoh keluaran:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES ostechnix-nginx 1/1 Running 0 38m 172.17.0.6 ostechnix <none> <none>
Anda bisa mendapatkan informasi lengkap tentang POD dengan menggunakan 'kubectl describe
' perintah.
# kubectl describe pod ostechnix-nginx
Perintah ini akan memberi Anda detail lengkap POD seperti detail container dan statusnya, detail Event yang terjadi sejak Pod dibuat.
Name: ostechnix-nginx Namespace: default Priority: 0 Node: ostechnix/192.168.181.131 Start Time: Thu, 03 Feb 2022 01:40:48 -0800 Labels: run=ostechnix-nginx Annotations: <none> Status: Running IP: 172.17.0.6 IPs: IP: 172.17.0.6 Containers: ostechnix-nginx: Container ID: docker://29eeb0392247aef193d6dff0138f8ef132dfb6359d8e67c3a5e4a21d7e259989 Image: nginx Image ID: docker-pullable://[email protected]:2834dc507516af02784808c5f48b7cbe38b8ed5d0f4837f16e78d00deb7e7767 Port: <none> Host Port: <none> State: Running Started: Thu, 03 Feb 2022 01:40:54 -0800 Ready: True Restart Count: 0 Environment: <none> Mounts: /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-ggvk6 (ro) Conditions: Type Status Initialized True Ready True ContainersReady True PodScheduled True Volumes: kube-api-access-ggvk6: Type: Projected (a volume that contains injected data from multiple sources) TokenExpirationSeconds: 3607 ConfigMapName: kube-root-ca.crt ConfigMapOptional: <nil> DownwardAPI: true QoS Class: BestEffort Node-Selectors: <none> Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s node.kubernetes.io/unreachable:NoExecute op=Exists for 300s Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 7m26s default-scheduler Successfully assigned default/ostechnix-nginx to ostechnix Normal Pulling 7m24s kubelet Pulling image "nginx" Normal Pulled 7m20s kubelet Successfully pulled image "nginx" in 4.114836826s Normal Created 7m20s kubelet Created container ostechnix-nginx Normal Started 7m20s kubelet Started container ostechnix-nginx [[email protected] ~]#
Setelah selesai, Anda dapat menghapus Pod dengan menggunakan 'kubectl delete
' perintah.
# kubectl delete pod ostechnix-nginx
Contoh keluaran:
pod "ostechnix-nginx" deleted
Verifikasi apakah Pod dihapus dengan mencantumkan Pod yang tersedia:
# kubectl get pods No resources found in default namespace.
Kesimpulan
Dalam tutorial ini, kita telah mempelajari konsep Pod di Kubernetes, penerapan aplikasi sederhana dan cara menjalankan Pod. Kami akan memiliki detail lebih lanjut tentang membuat Pod dengan YAML
file definisi dalam detail kami yang akan datang.