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.

Implementasi NodePort
Berikut ini contoh membuta service dengan mengimplementsikna NodePort
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-endTerlihaat 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.
1➜ kubectl create -f code/services/service-nodeport-definition.yaml
2service/myaapp-service createdDan kita lihat jika sudah terbuat maka akan terlihat seperti dibawah ini.
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 71sBisa kita lihat juga diagram dibawah ini gambaran konfigurasi service NodePort yang sudah kita terapkan.

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

untuk melihat service kita berjalan dengan URL yang sudah dipublish oleh minikube maka kita perlu melihat URL-nya dengan perintah dibawah ini.
1➜ minikube service myapp-service --url
2http://127.0.0.1:50569
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.

Dan bagaimana kita bisa membuat ClusterIP tersebut berikut ini contoh create file YAML.
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-endlalu kita buat servicenya dengan perintah dibawah ini.
1➜ kubectl create -f code/services/service-clusterip-definition.yaml
2service/back-end createdDan kita akan melihat apakah cluster yang kita definisikan sudah terbuat dengan menggunakan perintah dibawah ini.
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 18mImplementasi 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.
1apiVersion: v1
2kind: Service
3metadata:
4 name: myapp-loadbalancer
5spec:
6 type: LoadBalancer
7 ports:
8 - port: 80
9 targetPort: 80
10 nodePort: 30009lalu kita buat service-nya dengan perintah dibawah ini.
1➜ kubectl create -f code/services/service-loadbalancer-definition.yaml
2service/myapp-loadbalancer createdDan kita akan melihat apakah cluster yang kita definisikan sudah terbuat dengan menggunakan perintah dibawah ini.
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