1、创建AmazonEKSLoadBalancerControllerRole角色
亚马逊文档
创建文档
2)、使用 eksctl 创建 IAM 角色
a、安装eksctl eksctl安装文档
使用以下命令下载并提取最新版本的 eksctl
bash
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
将提取的二进制文件移动到 /usr/local/bin
bash
sudo mv /tmp/eksctl /usr/local/bin
使用以下命令测试您的安装是否成功。您必须使用 eksctl 0.34.0 版本或更高版本
bash
[root@ip-172-93-1-174 ~]# eksctl version
0.176.0
b、创建AmazonEKSLoadBalancerControllerRole角色
报错
bash
Error: unable to create iamserviceaccount(s) without IAM OIDC provider enabled
启用 IAM OIDC 提供程序,否则会报以上错
如果2024-05-02 17:13:03 [!] no changes were applied, run again with '--approve' to apply the changes
,则加上--approve
bash
[root@ip-172-93-1-174 ~]# eksctl utils associate-iam-oidc-provider --region ap-east-1 --cluster eks-test
2024-05-02 17:13:03 [ℹ] (plan) would create IAM Open ID Connect provider for cluster "eks-test" in "ap-east-1"
2024-05-02 17:13:03 [!] no changes were applied, run again with '--approve' to apply the changes
bash
[root@ip-172-93-1-174 ~]# eksctl utils associate-iam-oidc-provider --region ap-east-1 --cluster eks-test --approve
2024-05-02 17:13:30 [ℹ] will create IAM Open ID Connect provider for cluster "eks-test" in "ap-east-1"
2024-05-02 17:13:31 [✔] created IAM Open ID Connect provider for cluster "eks-test" in "ap-east-1"
创建AmazonEKSLoadBalancerControllerRole角色
根据各自的情况判断是否需要覆盖现有的
--override-existing-serviceaccounts
bash
[root@ip-172-93-1-174 ~]# eksctl create iamserviceaccount \
--cluster=eks-test \
--namespace=kube-system \
--name=aws-load-balancer-controller \
--role-name AmazonEKSLoadBalancerControllerRole \
--attach-policy-arn=arn:aws:iam::XXXXXXXXX:policy/AWSLoadBalancerControllerIAMPolicy \
--approve \
--override-existing-serviceaccounts
2024-05-02 17:17:14 [ℹ] 1 existing iamserviceaccount(s) (kube-system/aws-load-balancer-controller) will be excluded
2024-05-02 17:17:14 [ℹ] 1 iamserviceaccount (kube-system/aws-load-balancer-controller) was excluded (based on the include/exclude rules)
2024-05-02 17:17:14 [!] metadata of serviceaccounts that exist in Kubernetes will be updated, as --override-existing-serviceaccounts was set
2024-05-02 17:17:14 [ℹ] no tasks
2、安装 AWS Load Balancer Controller
1)添加 eks-charts Helm 图表存储库。AWS 在 GitHub 上维护eks-charts
bash
[root@ip-172-93-1-174 ~]# helm repo add eks https://aws.github.io/eks-charts
"eks" has been added to your repositories
2、更新本地存储库,以确保您拥有最新的图表
bash
[root@ip-172-93-1-174 ~]# helm repo update eks
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "eks" chart repository
Update Complete. ⎈Happy Helming!⎈
3、安装 AWS Load Balancer Controller。
在以下命令中,aws-load-balancer-controller 是您在上一步中创建的 Kubernetes 服务账户。
有关配置 Helm 图表的更多信息,请参阅 GitHub 上的values.yaml
bash
[root@ip-172-93-1-174 ~]# helm delete aws-load-balancer-controller -n kube-system
release "aws-load-balancer-controller" uninstalled
[root@ip-172-93-1-174 ~]# helm install aws-load-balancer-controller eks/aws-load-balancer-controller \
-n kube-system \
--set clusterName=eks-test \
--set serviceAccount.create=false \
--set serviceAccount.name=aws-load-balancer-controller
NAME: aws-load-balancer-controller
LAST DEPLOYED: Thu May 2 17:24:15 2024
NAMESPACE: kube-system
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
AWS Load Balancer controller installed!
如果要将控制器部署到被限制访问 Amazon EC2 实例元数据服务 (IMDS) 的 Amazon EC2 节点,或者部署到 Fargate 节点,则需要在以下 helm 命令中添加以下标志:
bash
--set region=region-code
--set vpcId=vpc-xxxxxxxx
要查看 Helm 图表和负载均衡器控制器的可用版本,请使用以下命令:
bash
[root@ip-172-93-1-174 ~]# helm search repo eks/aws-load-balancer-controller --versions
NAME CHART VERSION APP VERSION DESCRIPTION
eks/aws-load-balancer-controller 1.7.2 v2.7.2 AWS Load Balancer Controller Helm chart for Kub...
eks/aws-load-balancer-controller 1.7.1 v2.7.1 AWS Load Balancer Controller Helm chart for Kub...
注意:
已部署的图表不会自动接收安全更新。当新图表可用时,您需要手动升级到新图表。升级时,在上一个命令中将 install 更改为 upgrade。
helm install 命令会自动安装控制器的自定义资源定义(CRDs)。helm upgrade 命令不会。如果您使用 helm upgrade,,则必须手动安装 CRDs。运行以下命令来安装 CRDs:
bash
wget https://raw.githubusercontent.com/aws/eks-charts/master/stable/aws-load-balancer-controller/crds/crds.yaml
kubectl apply -f crds.yaml
3、验证控制器是否已安装
1)验证控制器是否已安装
bash
[root@ip-172-93-1-174 ~]# kubectl get deployment -n kube-system aws-load-balancer-controller
NAME READY UP-TO-DATE AVAILABLE AGE
aws-load-balancer-controller 2/2 2 2 83s
如果使用 Helm 进行部署,则会收到之前的输出结果。如果您使用 Kubernetes 清单进行部署,则只有一个副本。
2)在使用控制器预置AWS资源前,您的集群必须满足特定要求。有关更多信息,请参阅 Amazon EKS 上的应用程序负载均衡和 Amazon EKS 上的网络负载均衡