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

Memahami Kubernetes Services

· 3 mnt baca ·Ihsan Arif

Kubernetes Service memberikan komunikasi antar komponen di dalam ataupun diluar dari aplikasi. Kubernetes Services ini akan membantu menghubungkan aplikasi satu sama lain terhubung dengan pengguna juga.

Contohnya, aplikasi kita memiliki kelompok-kelompok yang berjalan dari beberapa bagian misalkan kelompok frontend atau proses kelompok backend ataupun kelompok third party yang terhubung untuk saling berkomunikasi dengan data eksternal. Dengan Kubernetes Services kita bisa menghubungkan semua kelompok yang terhubung dengan Kubernetes ini.

Tipe-tipe Kubernetes Services terdapaat 3 yaitu: a. NodePort, service yang dibuat untuk internal Port yang ada pada Nodes.

nodeport communication

b. ClusterIP, virtual IP ddress yang ada pada Cluster untuk mengaktifkan komunikasi didalamnya. c. LoadBalancer, services yang bisa menghubungkan antar set misalkan frontend dan backend pada aplikasi kita.

Implementasi NodePort

Berikut ini contoh membuta service dengan mengimplementsikna NodePort

yml
 1apiVersion: v1
 2kind: Service
 3metadata:
 4  name: myapp-service
 5spec:
 6  type: NodePort
 7  ports:
 8    - port: 80
 9      targetPort: 80
10      nodePort: 30008
11  selector:
12    app: myapp
13    type: front-end

Terlihaat pada file YAAML diatas kita mendapatkan fields baru Port yang target node port dan lainnya.

Selanjutnya kita coba create service tersebut dengan perintah dibawah ini.

bash
1➜ kubectl create -f code/services/service-nodeport-definition.yaml
2service/myaapp-service created

Dan kita lihat jika sudah terbuat maka akan terlihat seperti dibawah ini.

bash
1➜ kubectl get services
2NAME             TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
3kubernetes       ClusterIP   10.96.0.1       <none>        443/TCP        24d
4myaapp-service   NodePort    10.101.173.39   <none>        80:30008/TCP   71s

Bisa kita lihat juga diagram dibawah ini gambaran konfigurasi service NodePort yang sudah kita terapkan.

nodeport diagram

Dan ketika kita gunakan nodeport tersebut untuk multiple node maka gambarannya akan seperti dibawah ini.

nodeport multiple node diagram

untuk melihat service kita berjalan dengan URL yang sudah dipublish oleh minikube maka kita perlu melihat URL-nya dengan perintah dibawah ini.

bash
1➜ minikube service myapp-service --url
2http://127.0.0.1:50569

myapp service is running

Penjelasan ClusterIP

Seperti yang sudah dijelaskan diatas secara singkat, ClusterIP ini bisa kita gunakan untuk membagi-bagi alokasi IP Address sehingga menjadi suatu cluster yang saling berkumpul satu sama lain sesuai dengan kebutuhannya misalkan kita ingin membuat clusterIP menjadi seperti backend, frontend, dan redis seperti gambaran dibawah ini.

cluster ip diagram

Dan bagaimana kita bisa membuat ClusterIP tersebut berikut ini contoh create file YAML.

yml
 1apiVersion: v1
 2kind: Service
 3metadata:
 4  name: back-end
 5spec:
 6  type: ClusterIP
 7  ports:
 8    - port: 80
 9      targetPort: 80
10  selector:
11    app: myapp
12    type: back-end

lalu kita buat servicenya dengan perintah dibawah ini.

bash
1➜ kubectl create -f code/services/service-clusterip-definition.yaml 
2service/back-end created

Dan kita akan melihat apakah cluster yang kita definisikan sudah terbuat dengan menggunakan perintah dibawah ini.

bash
1➜ kubectl get svc
2NAME            TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
3back-end        ClusterIP   10.97.219.53     <none>        80/TCP         7s
4kubernetes      ClusterIP   10.96.0.1        <none>        443/TCP        24d
5myapp-service   NodePort    10.106.237.142   <none>        80:30008/TCP   18m

Implementasi LoadBalancer

Jenis yang terakhir yaitu LoadBalancer yang mana ini adalah tipe yang bisa menggabungkan dari tiap nodes untuk setiap aplikasi yang sudah kita buat. Nah bagaimana caranya jika kita ingin membuat Loadbalancer? Lihatlah kode dibawah ini.

yml
 1apiVersion: v1
 2kind: Service
 3metadata:
 4  name: myapp-loadbalancer
 5spec:
 6  type: LoadBalancer
 7  ports:
 8    - port: 80
 9      targetPort: 80
10      nodePort: 30009

lalu kita buat service-nya dengan perintah dibawah ini.

bash
1➜ kubectl create -f code/services/service-loadbalancer-definition.yaml
2service/myapp-loadbalancer created

Dan kita akan melihat apakah cluster yang kita definisikan sudah terbuat dengan menggunakan perintah dibawah ini.

bash
1➜ kubectl get svc
2NAME                 TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
3back-end             ClusterIP      10.97.219.53     <none>        80/TCP         8m45s
4kubernetes           ClusterIP      10.96.0.1        <none>        443/TCP        24d
5myapp-loadbalancer   LoadBalancer   10.99.140.200    <pending>     80:30009/TCP   21s
6myapp-service        NodePort       10.106.237.142   <none>        80:30008/TCP   27m

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

💬 Komentar