News:

Brought to you NINE-T Co.,ltd.

Main Menu

การสร้าง Load Balancer ด้วย Cilium

Started by New User, July 11, 2026, 05:32:17 PM

Previous topic - Next topic

New User

1. เช็คดูสถานะของ Cilium ก่อนด้วยคำสั่ง
cilium status

ผลลัพธ์ก็จะได้ประมาณนี้
Cilium:             OK
Operator:           OK
Envoy DaemonSet:    OK

เช็คว่ามีการใช้ Proxy Replacement หรือไม่ด้วยคำสั่ง

kubectl -n kube-system get cm cilium-config -o yaml | grep kube-proxy

ผลลัพธ์ควรจะเป็น
kube-proxy-replacement: "true"

เช็คดูว่า Envoy เปิดใช้งานไปหรือยังด้วยคำสั่ง
kubectl -n kube-system get cm cilium-config -o yaml | grep envoy

สิ่งที่ควรได้รับคือ
envoy.enabled: "true"

เช็คว่า Gateway API เปิดใช้หรือยัง
kubectl -n kube-system get cm cilium-config -o yaml | grep gateway

สิ่งที่ควรจะได้รับคือ
gatewayAPI.enable: "true"

2. เปิดการใช้งาน L2 Annoucement ด้วยคำสั่ง
helm upgrade cilium cilium/cilium --namespace kube-system --reuse-values --set l2announcements.enabled=true

เช็คว่ามันได้เปิดไปหรือยัง ด้วยคำสั่ง
kubectl -n kube-system get cm cilium-config -o yaml | grep l2

ผลลัพธ์ที่ได้ควรจะเป็น
enable-l2-announcements: "true"


3. สร้าง LoadBalancer IP Pool
สร้างไฟล์ อาจจะตั้งชื่อว่า cilium-lb-pool.yaml และภายในไฟล์มีเนื้อหาดังนี้
apiVersion: cilium.io/v2alpha1
kind: CiliumLoadBalancerIPPool
metadata:
  name: lan-pool
spec:
  blocks:
  - start: XX.XX.XX.200
    stop: XX.XX.XX.220
โดยที่ XX.XX.XX = subnet class ของท่านใช่ 192.168.10
หลังจากนั้น ทำการ apply เข้าไปด้วยคำสั่ง
kubectl apply -f cilium-lb-pool.yaml

และทดสอบว่ามันได้เปลี่ยนแปลงหรือยัง โดยการพิมพ์
kubectl get ciliumloadbalancerippools

4. สร้าง L2 Announcement Policy
สร้างไฟล์ที่ชื่อว่า cilium-l2-policy.yaml
โดยมีเนื้อหา
apiVersion: cilium.io/v2alpha1
kind: CiliumL2AnnouncementPolicy
metadata:
  name: lan-policy
spec:
  nodeSelector:
    matchLabels: {}

  serviceSelector:
    matchLabels: {}

  interfaces:
  - ens18

  loadBalancerIPs: true

แล้วทำการ apply ด้วยคำสั่ง
kubectl apply -f cilium-l2-policy.yaml

ตรวจสอบด้วยคำสั่ง

kubectl get ciliuml2announcementpolicies

5. ทำการทดสอบด้วย application
kubectl create deployment nginx --image=nginx

6. สร้างบริการ LoadBalancer
kubectl expose deployment nginx --name nginx --type LoadBalancer --port 80 --target-port 80

ทดสอบด้วยคำสั่ง
kubectl describe svc nginx

ผลลัพธ์จะได้ประมาณนี้คือ
Type:           LoadBalancer
Port:           80/TCP
TargetPort:     80/TCP
LoadBalancer Ingress:
                xx.xx.xx.x

7. ตรวจสอบการทำงาน
kubectl get svc nginx