Prinsip Desain Jaringan
Versi Bahasa Indonesia. Baca dalam Bahasa Inggris
Sumber: https://kubernetes.io/docs/concepts/cluster-administration/networking/#kubernetes-ip-address-ranges
Node Network
Node Network terdiri dari worker node dan control plane node Kubernetes. Semua node dapat berkomunikasi satu sama lain.
- Setiap node dalam klaster Kubernetes harus dapat berkomunikasi dengan node lain tanpa NAT (Network Address Translation).
- Kubernetes mengasumsikan jaringan yang flat di mana semua node dapat berkomunikasi secara bebas.
- Node biasanya memiliki alamat IP yang dapat dirutekan dalam klaster.
Untuk melihat IP Node, kita dapat menggunakan perintah kubectl get nodes -o wide.
β kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP
minikube Ready control-plane 19h v1.31.0 192.168.49.2
EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
<none> Ubuntu 22.04.4 LTS 6.10.14-linuxkit docker://27.2.0Pod Network
Pod Network adalah tempat semua Pod Kubernetes berkomunikasi. Pod dalam klaster berkomunikasi menggunakan routing IP langsung.
- Setiap pod mendapat alamat IP unik.
- Komunikasi pod-to-pod terjadi langsung tanpa NAT.
- Container Network Interface (CNI) plugin bertanggung jawab untuk mengelola pod networking.
- Container dalam pod yang sama berkomunikasi melalui
localhost.
Kita dapat menguji komunikasi pod-to-pod dengan ping dari satu pod ke pod lain.
β kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE
postgres-f8f589d5b-59rw8 1/1 Running 0 4h37m
simple-go-5dc4557ffc-c24fp 1/1 Running 0 4h8m
simple-go-5dc4557ffc-d6tz6 1/1 Running 0 4h8m
simple-go-5dc4557ffc-gv4fv 1/1 Running 0 4h8m
IP NODE NOMINATED NODE READINESS GATES
10.244.0.11 minikube <none> <none>
10.244.0.17 minikube <none> <none>
10.244.0.15 minikube <none> <none>
10.244.0.16 minikube <none> <none>β kubectl exec -it simple-go-5dc4557ffc-c24fp -- ping 10.244.0.11
PING 10.244.0.11 (10.244.0.11): 56 data bytes
64 bytes from 10.244.0.11: seq=0 ttl=64 time=97.104 ms
64 bytes from 10.244.0.11: seq=1 ttl=64 time=0.219 ms
64 bytes from 10.244.0.11: seq=2 ttl=64 time=0.292 ms
64 bytes from 10.244.0.11: seq=3 ttl=64 time=0.160 ms
64 bytes from 10.244.0.11: seq=4 ttl=64 time=0.395 ms
^C
--- 10.244.0.11 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 0.160/19.634/97.104 msService Network
Service Network adalah jaringan virtual yang digunakan untuk Service Kubernetes. Service mendapatkan ClusterIP yang stabil dan tidak berubah. Kubernetes melakukan load balancing traffic ke seluruh backend pod.
Kubernetes menulis ulang traffic keluar dari pod jika ditujukan untuk sebuah Service. Ini memastikan bahwa permintaan dirutekan dengan benar ke pod backend.
- Service menggunakan ClusterIP (IP virtual) untuk merutekan traffic ke pod.
- kube-proxy mengelola traffic service menggunakan iptables atau IPVS.
Dapatkan service endpoints:
β kubectl get endpoints
NAME ENDPOINTS AGE
kubernetes 192.168.49.2:8443 24h
postgres 10.244.0.11:5432 4h35m
simple-go 10.244.0.15:8080,10.244.0.16:8080,10.244.0.17:8080 4h11mReferensi
Last updated on