接下来创建AWS Load balancer controller
,并部署一个service暴露EKS应用。
AWS Load balancer controller根据子网的标签来找到它,所以提前要给几个子网打上以下标签:
kubernetes.io/role/elb=1
eksctl utils associate-iam-oidc-provider --cluster ipv6-cluster --region $AWS_REGION --approve # 开启OIDC provider
curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.5.4/docs/install/iam_policy.json
aws iam create-policy \
--policy-name AWSLoadBalancerControllerIAMPolicy2 \
--policy-document file://iam_policy.json # 创建policy
eksctl create iamserviceaccount \
--cluster=ipv6-cluster \
--namespace=kube-system \
--name=aws-load-balancer-controller \
--role-name AmazonEKSLoadBalancerControllerRole2 \
--region=$AWS_REGION \
--attach-policy-arn=arn:aws:iam::$ACCOUNT_ID:policy/AWSLoadBalancerControllerIAMPolicy2 \
--approve
使用helm安装aws load balancer controller
:
helm repo add eks https://aws.github.io/eks-charts
helm install aws-load-balancer-controller eks/aws-load-balancer-controller \
-n kube-system \
--set clusterName=ipv6-cluster \
--set serviceAccount.create=false \
--set serviceAccount.name=aws-load-balancer-controller \
--set createIngressClassResource=true
查看aws-load-balancer-controller
状态:
kubectl get pods -A -o wide
部署game 2048测试应用:
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/main/docs/examples/2048/2048_full_dualstack.yaml
上述命令将在双栈模式下配置ALB。ALB 将接受来自支持 IPv4 和 IPv6 的客户端的传入连接请求。当将注释service.beta.kubernetes.io/aws-load-balancer-ip-address-type: Dualstack
添加后,EKS IPv6 集群会在双栈模式下配置 ALB 和 NLB :
几分钟后,使用以下命令验证是否已创建alb:
kubectl get ingress/ingress-2048 -n game-2048
创建出来的ALB是dual stack模式,解析出来同时具有ipv6和ipv4 地址: