Menjalankan Pod dan Service pada K3S

Pada artikel kali ini kita mencoba menjalankan sebuah web server pada K3s. Web server yang kita jalankan saat ini yaitu nginx yang nantinya akan berjalan sebagai pod dan untuk bisa mengaksesnya kita membutukan service. Nah sebelumnya kita harus tau dulu tuh pod itu apa sih? Pod merupakan object di Kubernetes yang berupa unit dasar untuk menjalankan kontainer di dalam kluster Kubernetes. Pod juga merupakan object terkecil dari model Kubernetes. Kubernetes menggunakan pod untuk menjalankan instance aplikasi kita dan satu pod mewakili satu instance aplikasi tersebut. Kita dapat menskalakan aplikasi kita secara horizontal dengan menambahkan lebih banyak replika Pod.

Pod dapat berisi satu atau beberapa kontainer sebagai sebuah grup, yang berbagi sumber daya yang sama di dalam Pod tersebut (penyimpanan, jaringan, namespace). Pod biasanya memiliki pemetaan 1-1 dengan kontainer, tetapi dalam situasi yang lebih maju, kita dapat menjalankan beberapa kontainer dalam sebuah Pod.

Lalu bagaimana dengan service? Service dalam kubernetes bekerja layaknya load balancer. Service berfungsi mengarahkan traffic ke aplikasi yang berada di dalam kluster. Dalam kubernetes ip pada pod diberikan secara dinamis yang menyebabkan susah mengaksesnya. Nah untuk memberikan akses secara konsisten pada sebuah pod maka dibuatlah service.

Service dalam kubernetes dibagi 3, berikut penjelasan singkatnya

  • ClusterIP => ClusterIP berfungsi untuk memberikan akses port pada setiap pod yang hanya bisa di akses secara internal. Secara default ketika sebuah pod di buat maka akan langsung di assign IP oleh kubernetes, Nah yang memberikan IP tersebut adalah ClusterIP
  • NodePort => Ketika menggunakan NodePort kubernetes juga akan memberikan ClusterIP dari segi fungsi kurang lebih sama dengan ClusterIP akan tetapi dengan NodePort kita bisa mengekpose sebuah port ke external. Port yang di berikan oleh NodePort berupa random port.
  • LoadBalancer => Nah, untuk LoadBalancer kurang lebih sama dengan NodePort tetapi dalam LoadBalancer kita menyatukan beberapa pod atau aplikasi yang sama lalu memberikan sebuah single IP untuk semua kelompok tersebut. Hal ini bertujuan ketika ada pod atau aplikasi yang rusak akan langsung di gantikan dengan pod atau aplikasi yang masih berjalan sama halnya juga ketika terjadi penumpukan traffic maka LoadBalancer akan membagi trafficnya ke anggota dari kelompok pod.

Okey, Mungkin itu penjelasan singkat tentang pod dan service. Sebelum melanjutkan ke step berikutnya kita harus menyiapkan K3S nya terlebih dahulu, Untuk tutorialnya silahkan baca di sini . Nah jika sudah kita bisa melanjutkan ke pembuatan pod.

Untuk membuat pod dalam kubertenes bisa menggunakan Yaml. Yaml sendiri merupakan bahasa pemrograman yang merupakan serialisasi data yang dapat dibaca oleh manusia. Yaml sendiri biasa digunakan untuk penulisan konfigurasi. Nah untuk membuat pod kita akan membuat sebuah file bernama nginx.yaml berikut isi filenya

Oiya, karna yaml file sangat sensitif terhadap space dan tool untuk penulisan code nya juga agak susah maka kita bisa mencopy nya dari link ini

Untuk menjalankanya kita tinggal mengetikan perintah sudo kubectl apply -f nginx.yaml

Untuk melihaht hasil nya bisa dengan perintah sudo kubectl get pods

Untuk melihat deskripsi pod nya bisa dengan perintah sudo kubectl describe pod/[NAME]. Jadi perintahnya seperti ini sudo kubectl describe pod/nginx. Perintah tersebut akan menampilkan detail tentang pod yang kita buat tadi.

Nah, Setelah pod nya di buat langkah selanjutnya yaitu mengepose pod yang kita buat agar bisa di akses dari external. Karena secara default pod yang kita buat hanya memiliki kluster IP yang artinya pod yang kita buat hanya bisa di akses secara internal. Jadi sekarang kita akan mencoba membuat pod tersebut agar bisa di akses dari external.

Untuk membuat service untuk pod yang tadi kita buat bisa menggunakan perintah sudo kubectl expose pod nginx –type=NodePort –port=80. Maka hasilnya seperti di bawah.

Nah, jika sudah kita bisa melihat service yang kita buat tadi dengan perintah sudo kubectl get svc.

Hasil perintah di atas akan seperti ini. Nah yang saya kasi merah itu adalah port external yang bisa kita akses dari external. Dalam kasus ini IP dari worker saya adalah 10.10.10.251, Seharusnya ketika ketika kita akses browser dengan IP dan port tersebut kita seharusnya bisa melihat welcome page dari nginx. Mari kita coba.

Sukses yaa, pada artikel kali ini kita sukses mengespose atau memberikan akses secara extermal ke sebuah pod. Semoga dapat dimengerti yaa simple kok :). Demikian yang dapat saya sampaikan mohon maaf bila banyak kesalahan sekian dan terima kasih 🙂

Related Articles

Responses

Your email address will not be published. Required fields are marked *