Apakah itu Kubernetes POD?

Kubernetes, POD, Worker Node, Master Node, Container Engine, Dockers, CRI-O

POD adalah sebuah kumpulan yang terdiri dari satu atau lebih Container yang saling bekerja sama.

Kubernetes POD adalah unit Computing terkecil yang bisa dibuat di dalam Kubernetes.

POD dibuat di atas sebuah Node; lebih dari satu POD dapat berbagi suatu Node yang sama. ContainerContainer yang terdapat di dalam POD memiliki jaringan dan storage resource yang sama dengan Host Node tersebut, termasuk spesifikasi untuk menentukan bagaimana Container tersebut harus di jalankan.

POD merupakan sebuah analogi, karena didesain untuk berfungsi seperti tanaman kacang polong.

Meskipun sebuah POD dapat terdiri dari banyak Container, biasanya setiap POD hanya menampung satu Container, atau sekumpulan Container berjumlah sedikit yang terintegrasi dengan erat.

Pengguna Kubernetes harus menghosting aplikasi Container bersama yang terintegrasi secara mendalam di sebuah POD; tanpa Container, aplikasi atau layanan ini harus berjalan di mesin virtual atau fisik yang sama.

POD diisolasi dengan namespace Linux atau cgroups. Untuk tiap POD, satu aplikasi di dalamnya dapat diisolasi lebih lanjut.

Operator dapat mengekspos informasi tentang POD, Node dan / atau Container dengan menggunakan environment variable.  Environment Variable dari POD akan menunjukkan aplikasi yang berada di dalam Container POD.

Di dalamnya dapat ditemukan resource yang dibutuhkannya, atau cara mengkonfigurasi komponen di dalamnya. Informasi ini ditransfer ke dalam Container saat aplikasi di jalankan (runtime). Meskipun Node juga berisi variable environment, tetapi informasi ini tidak ditransfer ke Container. Environment Variable ini bersifat statis dan ditentukan oleh pengguna.

Kubernetes POD Management

Kubernetes dapat menjalankan Docker Container runtime serta CoreOS rkt dan CRI-O, yang merupakan singkatan dari Kubelet Container Runtime Interface. CRI-O menggunakan runtime yang comply dengan Open Container Initiative.

Pengguna dapat membuat POD secara manual, tetapi biasanya Kubernetes Controller lah yang membuat POD dan replikanya untuk memastikan high availability dan horizontal scaling. Misalnya, Saat pengguna meminta tiga instance baru di sebuah POD, Kubernetes akan membuat tiga POD sebagai resource di level API. Scheduler akan menemukan Node yang sesuai untuk setiap POD dan menempatkan POD tersebut di Node yang tepat.

Container dalam sebuah POD memiliki IP dan port address yang sama. Mereka dapat menemukan satu sama lain melalui localhost. Aplikasi di dalam satu POD yang sama, dapat mengakses shared storage volume yang berada di dalam POD tersebut.

POD juga memfasilitasi komunikasi antara Container dengan menggunakan komunikasi standar seperti share memori POSIX atau semaphore SystemV. Container di satu POD memiliki IP address yang berbeda dari Container di POD lain, dan tidak dapat berkomunikasi menggunakan protokol IPC. Namun, komunikasi antara Kubernetes POD ke POD yang lain dapat terjadi dengan mudah melalui network service.

Misalnya, jika front-end suatu aplikasi berada dalam POD di satu Node, back-end dapat berada di Node yang sama, di node yang berbeda, dalam 10 instance tersebar di berbagai Node, dan POD front-end hanya terhubung ke sebuah service yang merepresentasikan POD atau POD back-end.

Bagaimana cara menggunakan POD?

Dalam environment Kubernetes, POD biasanya bersifat sementara bersama dengan Container aplikasi. Pengguna mendesain sebuah POD; dibuatkan identifikasi unik dan resource allocation; dan sistem akan menjadwalkan pendeployannya ke Node yang sesuai, disertakan dengan pengaturan seputar kualitas layanan. POD tersebut akan menggunakan Node tersebut hingga sesi tersebut dihentikan atau POD tersebut dihapus.

Saat Node dimatikan, POD yang terpasang di Node tersebut akan dijadwalkan untuk dihapus, mengikuti periode waktu tunggu tertentu. POD individual yang ditandai dengan ID unik, tidak akan dijadwalkan ulang ke Node baru.

POD tersebut dapat disalin dan diganti dengan POD yang identik. Pengguna kemudain dapat mendaur ulang nama dan ID yang sama untuk POD baru.

Source: Kubernetes POD Definition