Cara Men-deploy Nginx di Cluster Kubernetes


Pada artikel terakhir kita, kita telah membahas cara menyiapkan dan menjalankan Cluster Kubernetes, mari kita bahas bagaimana kita dapat menerapkan layanan NGINX pada cluster kita.

Saya akan menjalankan penerapan ini di Mesin Virtual yang Dihosting oleh penyedia cloud publik. Seperti halnya banyak layanan cloud publik, banyak layanan yang umumnya mempertahankan skema IP publik dan privat untuk Mesin Virtual mereka.

Lingkungan Pengujian

Master Node - Public IP: 104.197.170.99 and Private IP: 10.128.15.195
Worker Node 1 - Public IP: 34.67.149.37 and Private IP: 10.128.15.196
Worker Node 2 - Public IP: 35.232.161.178 and Private IP: 10.128.15.197

Menerapkan NGINX pada Cluster Kubernetes

Kami akan menjalankan penerapan ini dari node utama.

Mari kita mulai dengan memeriksa status cluster. Semua node Anda harus berada dalam status SIAP.

kubectl get nodes

Kami membuat penerapan NGINX menggunakan gambar NGINX.

kubectl create deployment nginx --image=nginx

Anda sekarang dapat melihat status penerapan Anda.

kubectl get deployments

Jika Anda ingin melihat detail selengkapnya tentang penerapan Anda, Anda dapat menjalankan perintah deskripsikan. Misalnya, dimungkinkan untuk menentukan berapa banyak replika penerapan yang berjalan. Dalam kasus kami, kami berharap melihat replika 1 berjalan (yaitu 1/1 replika).

kubectl describe deployment nginx

Sekarang penerapan Nginx Anda aktif, Anda mungkin ingin mengekspos layanan NGINX ke IP publik yang dapat dijangkau di internet.

Mengekspos Layanan Nginx Anda ke Jaringan Publik

Kubernetes menawarkan beberapa opsi saat mengekspos layanan Anda berdasarkan fitur yang disebut Jenis Layanan Kubernetes, yaitu:

  1. ClusterIP – Jenis Layanan ini umumnya mengekspos layanan pada IP internal, hanya dapat dijangkau dalam cluster, dan mungkin hanya dalam node cluster.
  2. NodePort – Ini adalah opsi paling dasar untuk menampilkan layanan Anda agar dapat diakses di luar cluster Anda, pada port tertentu (disebut NodePort) di setiap node dalam cluster. Kami akan segera mengilustrasikan opsi ini.
  3. LoadBalancer – Opsi ini memanfaatkan layanan Load-Balancing eksternal yang ditawarkan oleh berbagai penyedia untuk memungkinkan akses ke layanan Anda. Ini adalah opsi yang lebih andal ketika mempertimbangkan ketersediaan tinggi untuk layanan Anda, dan memiliki lebih banyak fitur di luar akses default.
  4. ExternalName – Layanan ini mengalihkan lalu lintas ke layanan di luar cluster. Dengan demikian, layanan ini dipetakan ke nama DNS yang dapat dihosting di luar cluster Anda. Penting untuk dicatat bahwa ini tidak menggunakan proxy.

Jenis Layanan default adalah ClusterIP.

Dalam skenario kami, kami ingin menggunakan Jenis Layanan NodePort karena kami memiliki alamat IP publik dan pribadi dan kami tidak memerlukan penyeimbang beban eksternal untuk saat ini. Dengan jenis layanan ini, Kubernetes akan menetapkan layanan ini pada port pada rentang 30000+.

kubectl create service nodeport nginx --tcp=80:80

Jalankan perintah get svc untuk melihat ringkasan layanan dan port yang terbuka.

kubectl get svc

Sekarang Anda dapat memverifikasi bahwa halaman Nginx dapat dijangkau di semua node menggunakan perintah curl.

curl master-node:30386
curl node-1:30386
curl node-2:30386

Seperti yang Anda lihat, halaman “SELAMAT DATANG DI NGINX! ” dapat dibuka.

Mencapai Alamat IP PUBLIK Ephemeral

Seperti yang mungkin sudah Anda ketahui, Kubernetes melaporkan bahwa saya tidak memiliki IP Publik aktif yang terdaftar, atau lebih tepatnya, tidak ada IP EKSTERNAL yang terdaftar.

kubectl get svc

Mari kita verifikasi apakah benar, bahwa saya tidak memiliki IP EKSTERNAL yang terpasang pada antarmuka saya menggunakan perintah IP.

ip a

Tidak ada IP publik seperti yang Anda lihat.

Seperti disebutkan sebelumnya, saat ini saya menjalankan penerapan ini di Mesin Virtual yang ditawarkan oleh penyedia cloud publik. Jadi, meskipun tidak ada antarmuka tertentu yang diberi IP publik, penyedia VM telah mengeluarkan alamat IP eksternal Ephemeral.

Alamat IP eksternal sementara adalah alamat IP sementara yang tetap melekat pada VM hingga instans virtual dihentikan. Saat mesin virtual dimulai ulang, IP eksternal baru akan ditetapkan. Pada dasarnya, ini adalah cara sederhana bagi penyedia layanan untuk memanfaatkan IP publik yang tidak aktif.

Tantangannya di sini, selain fakta bahwa IP publik Anda tidak statis, adalah bahwa IP Publik Efemeral hanyalah perpanjangan (atau proksi) dari IP Pribadi, dan oleh karena itu, layanan akan hanya dapat diakses pada port 30386. Artinya layanan akan diakses pada URL yaitu 104.197.170.99:30386 yang jika dicentang browser Anda, Anda seharusnya dapat melihat halaman selamat datang.

Dengan demikian, kami telah berhasil menerapkan NGINX pada cluster Kubernetes 3-node kami.