AWS EKS Additional Information
Glossary
| Abbreviation | Full Name | Description |
|---|---|---|
| eks-clb | Classic Load Balancer | The default load balancer provided by AWS, which may have issues in certain situations and is not recommended for use. |
| eks-nlb | Network Load Balancer | A Layer 4 load balancer provided by AWS, capable of load balancing at the TCP/UDP layer, suitable for cases requiring advanced network control. |
| eks-alb | Application Load Balancer | A Layer 7 load balancer provided by AWS, compared to eks-nlb, eks-alb can parse HTTP/HTTPS protocols, allowing for more intelligent request distribution, suitable for web application scenarios. |
| aws-lb | AWS Load Balancer | A load balancer installed on Kubernetes, automatically creating eks-nlb and eks-alb based on the LoadBalancer type internal routes (Service) and inbound rules (Ingress) in Kubernetes to meet the load balancing needs of applications. |
| Platform Load Balancer | - | A self-developed Layer 7 load balancer by the platform. |
| Service Annotations | - | Metadata attached to objects in the form of key-value pairs, providing additional information to enhance and simplify various aspects of managing Kubernetes resources. Annotations can be interpretive text without specific functionality, specify the use of cloud provider configurations or behaviors, specify configuration parameters, tools, etc., making them powerful in functionality. |
Notes
When creating a load balancer, it is recommended to manually configure service annotations to ensure that the platform load balancer correctly interprets the use of aws-lb. If the corresponding service annotations are not correctly configured, the platform will default to using eks-clb, which may have issues related to UDP and could lead to unexpected situations.
EKS Uses aws-lb to Provide External Access for Container Network Type Load Balancers
Service Annotation Configuration Instructions
-
Execute the following command on the corresponding cluster through the Kubectl tool to find all Pods located in the kube-system namespace with names containing aws-load.
kubectl get pod -n kube-system | grep aws-load -
Create the load balancer. For specific creation steps and parameters, please refer to Create a Load Balancer .
-
If no relevant Pods are found through the above command, it indicates that the AWS Loadbalancer Controller is not installed in the cluster. In this case, there is no need to fill in the service annotations; you can create the load balancer directly.
-
If relevant Pods are found through the above command, it indicates that the AWS Loadbalancer Controller is installed in the cluster. In this case, when creating the load balancer for the corresponding cluster, add the following service annotations. For specific service annotation instructions, please refer to Service Annotation Instructions in AWS EKS .
-
service.beta.kubernetes.io/aws-load-balancer-type: external // Mandatory -
service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: ip // Mandatory -
service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing // Optional. Add this service annotation if public network access is required.
-
-
Address Retrieval Instructions
-
When creating a load balancer for the container network type, the filled service annotations will be set to the corresponding LoadBalancer type service of the platform load balancer.
-
In the public cloud, LoadBalancer type service with the corresponding service annotations will be identified by the public cloud and assigned an address for this LoadBalancer type service. The platform load balancer will read this address and set it as its access address.