我在AWS中创建了一个EKS集群,并使用此命令创建了一个服务帐户eksctl create iamserviceaccount --name alb-ingress-controller --cluster $componentName --attach-policy-arn $serviceRoleArn --approve --override-existing-serviceaccounts。该命令的输出为:
[ℹ] using region ap-southeast-2
[ℹ] 1 existing iamserviceaccount(s) (default/alb-ingress-controller) will be excluded
[ℹ] 1 iamserviceaccount (default/alb-ingress-controller) was excluded (based on the include/exclude rules)
[!] metadata of serviceaccounts that exist in Kubernetes will be updated, as --override-existing-serviceaccounts was set
[ℹ] no tasks我不确定它是否创建成功。
我使用这个命令eksctl get iamserviceaccount来验证结果,但是得到了一个错误响应:
Error: getting iamserviceaccounts: no output "Role1" in stack "eksctl-monitor-addon-iamserviceaccount-default-alb-ingress-controller"
我也试图运行kubectl get serviceaccount,但得到了错误:Error from server (NotFound): serviceaccounts "alb-ingress-controller" not found。
这是否意味着服务帐户创建失败?我可以在哪里查看AWS控制台中的服务帐户?或者我可以在哪里查看错误?
发布于 2021-01-09 21:18:11
根据错误,这意味着serviceaccount已经存在。
要获取服务帐户,请使用kubectl
kubectl get serviceaccount <SERVICE_ACCOUNT_NAME> -n kube-system -o yaml顺序是,创建IAM- Role,然后创建- RBAC角色和绑定。以下是用于覆盖现有serviceaccount的命令
eksctl --profile <PROFILE_NAME> \
--region=ap-northeast-2 \
create iamserviceaccount \
--name alb-ingress-controller \
--namespace kube-system \
--override-existing-serviceaccounts \
--approve --cluster <CLUSTER_NAME> \
--attach-policy-arn \
arn:aws:iam::ACCOUNT_ID:policy/ALBIngressControllerIAMPolicy在我进入EKS的过程中,我发现这个研讨会Amazon EKS Workshop非常有用。
有关ALB的更多信息,请访问here。
编辑
从这个错误中
ℹ1现有的iamserviceaccount帐户(默认/alb-入口-控制器)将被排除
服务帐户似乎是在默认的命名空间中创建的。
因此,检查serviceaccount的命令将是
kubectl get serviceaccount <SERVICE_ACCOUNT_NAME> -n default-o yaml发布于 2021-09-16 11:54:32
eksctl使用CloudFormation创建资源,因此您可能会在那里找到错误的原因。
eksctl-[CLUSTER NAME]-addon-iamserviceaccount-default-[SERVICE ACCOUNT NAME]的堆栈,它应该具有ROLLBACK_COMPLETE状态。>G210
在我的案例中,原因是我附加到角色上的一个缺失的策略。
发布于 2021-12-12 19:34:46
工作正常,谢谢@samtoddler!
1为IAM角色创建IAM策略
curl -o iam_policy.json https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.3.0/docs/install/iam_policy.json
aws-vault exec Spryker-Humanetic-POC -- aws iam create-policy \
--policy-name AWSLoadBalancerControllerIAMPolicy \
--policy-document file://iam_policy.json2.创建IAM角色,并将其附加到新创建的ServiceAccount
eksctl create iamserviceaccount \
--cluster education-eks-7yby62S7 \
--namespace kube-system \
--name aws-load-balancer-controller \
--attach-policy-arn arn:aws:iam::ACCOUNT_ID:policy/AWSLoadBalancerControllerIAMPolicy \
--approve3.1验证#1 ServiceAccount是否位于--namespace kube-system中
kubectl get sa aws-load-balancer-controller -n kube-system -o yaml
apiVersion: v1
kind: ServiceAccount
metadata:
annotations:
eks.amazonaws.com/role-arn: arn:aws:iam::ACCOUNT_ID:role/eksctl-education-eks-7yby62S7-addon-iamservi-Role1-126OXTBKF3WBM
creationTimestamp: "2021-12-12T17:38:48Z"
labels:
app.kubernetes.io/managed-by: eksctl
name: aws-load-balancer-controller
namespace: kube-system
resourceVersion: "686442"
uid: 895f6f34-ab04-4bca-aeac-1b6b75766546
secrets:
- name: aws-load-balancer-controller-token-gcd5c3.2验证#2
kubectl get sa aws-load-balancer-controller -n kube-system
NAME SECRETS AGE
aws-load-balancer-controller 1 123m希望它能有所帮助!♀️
https://stackoverflow.com/questions/65642474
复制相似问题