All documents

Dedicated – FPT Kubernetes Engine

    Load Balancer Services
    Load Balancer Services
    Updated on 14 Mar 2024

    D-FKE supports creating Load Balancer Service to help users expose their applications outside the cluster. The system supports both public and private LB.

    • Public LB: By default, LB svc is created as public, meaning the service is assigned a Public IP so it can be accessed from the internet.

    • Private LB: The service is assigned a Private IP so it can only be accessed internally. Public IP is not assigned so it cannot be accessed from the internet.

    A. Public LB

    Load Balancer Service expose the application to the internet. This service type requires an available Public IP to allocate.

    Example manifest file:

    apiVersion: v1
    kind: Service
    metadata:  
      name: web  
      namespace: default
    spec:  
      selector:    
        app: web  
      ports:    
        – protocol: TCP      
          name: http      
          port: 80      
          targetPort: 80    
        – protocol: TCP      
          name: https      
          port: 443      
          targetPort: 443  
      type: LoadBalancer 

    B. Private LB

    Load Balancer Service is only expose privately, with the purpose of using for internal access, not publicly from the internet. This service type does not require an available Public IP to allocate.

    Example manifest file:

    apiVersion: v1
    kind: Service
    metadata:  
      annotations:
        service.beta.kubernetes.io/fpt-load-balancer-internal: “true”
      name: web  
      namespace: default
    spec:  
      selector:    
        app: web  
      ports:    
        – protocol: TCP      
          name: http      
          port: 80      
          targetPort: 80    
        – protocol: TCP      
          name: https      
          port: 443      
          targetPort: 443  
      type: LoadBalancer 
    • To list created services:
    kubectl get svc 
    • To edit the Load Balancer's Internal IP:
    kubectl edit cm fptcloud-ccm-configmap -n kube-system
    loadbalancer:
          oneArm:
            startIP: “169.254.64.1”
            endIP: “169.254.127.254” 

    Enter the IP range you want the system to automatically allocate to the LB's Virtual IP:

    • startIP: starting IP of Subnet.

      Example: startIP: "10.100.1.2"

    • endIP: Ending IP of Subnet.

      Example: endIP: "10.100.1.253"

    Note: This IP range must not overlap with subnets created on the system.

    Then, do a rollout to apply the new configuration:

    kubectl rollout restart deployment fptcloud-ccm -n kube-system