Kubernetes 错误:服务器没有';“没有资源类型”;svc“;
MacBook Pro管理员:~Harshin$kubectl群集信息 Kubernetes大师正在跑步 要进一步调试和诊断群集问题,请使用“kubectl群集信息转储”。 错误:服务器没有资源类型“服务” 我遵循这份文件 在为amazon eks配置kubectl的第11步中,我正在尝试测试我的配置Kubernetes 错误:服务器没有';“没有资源类型”;svc“;,kubernetes,Kubernetes,MacBook Pro管理员:~Harshin$kubectl群集信息 Kubernetes大师正在跑步 要进一步调试和诊断群集问题,请使用“kubectl群集信息转储”。 错误:服务器没有资源类型“服务” 我遵循这份文件 在为amazon eks配置kubectl的第11步中,我正在尝试测试我的配置 apiVersion: v1 clusters: - cluster: server: ... certificate-authority-data: .... name:
apiVersion: v1
clusters:
- cluster:
server: ...
certificate-authority-data: ....
name: kubernetes
contexts:
- context:
cluster: kubernetes
user: aws
name: aws
current-context: aws
kind: Config
preferences: {}
users:
- name: aws
user:
exec:
apiVersion: client.authentication.k8s.io/v1alpha1
command: heptio-authenticator-aws
args:
- "token"
- "-i"
- "kunjeti"
# - "-r"
# - "<role-arn>"
# env:
# - name: AWS_PROFILE
# value: "<aws-profile>"
apiVersion:v1
集群:
-群集:
服务器:。。。
证书颁发机构数据:。。。。
姓名:kubernetes
上下文:
-背景:
集群:kubernetes
用户:aws
名称:aws
当前上下文:aws
种类:配置
首选项:{}
用户:
-名称:aws
用户:
执行官:
apiVersion:client.authentication.k8s.io/v1alpha1
命令:heptio验证器aws
args:
-“代币”
-“-我”
-“昆杰蒂”
#-“-r”
# - ""
#环境:
#-名称:AWS_简介
#值:“”
将“名称:kubernetes”更改为集群的实际名称
以下是我为解决这个问题所做的
1.启用详细信息以确保正确读取配置文件
kubectl获得svc——v=10
2.修改文件如下:
apiVersion: v1
clusters:
- cluster:
server: XXXXX
certificate-authority-data: XXXXX
name: abc-eks
contexts:
- context:
cluster: abc-eks
user: aws
name: aws
current-context: aws
kind: Config
preferences: {}
users:
- name: aws
user:
exec:
apiVersion: client.authentication.k8s.io/v1alpha1
command: aws-iam-authenticator
args:
- "token"
- "-i"
- "abc-eks"
# - "-r"
# - "<role-arn>"
env:
- name: AWS_PROFILE
value: "aws"
apiVersion:v1
集群:
-群集:
服务器:XXXXX
证书颁发机构数据:XXXXX
姓名:abc eks
上下文:
-背景:
集群:abc eks
用户:aws
名称:aws
当前上下文:aws
种类:配置
首选项:{}
用户:
-名称:aws
用户:
执行官:
apiVersion:client.authentication.k8s.io/v1alpha1
命令:aws iam验证器
args:
-“代币”
-“-我”
-“abc eks”
#-“-r”
# - ""
环境:
-名称:AWS_简介
值:“aws”
我想您应该取消对“env”项的注释,并更改您对~/.aws/凭证的引用 因为您的aws\u iam\u身份验证程序需要准确的aws凭据 请参阅本文件: 要使Kubernetes的AWS IAM验证器始终使用特定的命名AWS凭据配置文件(而不是默认的AWS凭据提供程序链),请取消对env行的注释,并用要使用的配置文件名称替换
我也遇到过类似的问题,但这不是一个直接的解决方案,而是一个变通办法。使用AWS
cli
命令创建群集,而不是控制台。根据文档,创建集群的用户或角色将具有主访问权限
aws eks create-cluster --name <cluster name> --role-arn <EKS Service Role> --resources-vpc-config subnetIds=<subnet ids>,securityGroupIds=<security group id>
aws eks创建群集--名称--角色arn--资源vpc配置子网=,SecurityGroupID=
确保EKS服务角色具有IAM访问权限(我已经给出了完整的权限,但我猜AssumeRole可以)
EC2机器角色应具有
eks:CreateCluster
和IAM访问权限。为我工作:)我遇到了这个问题,发现它是由~/.aws/credentials中的默认密钥设置引起的。
我们有几个AWS帐户用于不同的客户,还有一个沙箱帐户用于我们自己的测试和研究。因此,我们的凭据文件如下所示:
[default]
aws_access_key_id = abc
aws_secret_access_key = xyz
region=us-east-1
[cpproto]
aws_access_key_id = abc
aws_secret_access_key = xyz
region=us-east-1
[sandbox]
aws_access_key_id = abc
aws_secret_access_key = xyz
region=us-east-1
我把我们的沙箱帐户弄得一团糟,但[default]部分指向了另一个帐户。
一旦我将sandbox的键放入默认部分,“kubectl get svc”命令就工作得很好
似乎我们需要一种方法来告诉aws iam authenticator哪些密钥要与aws cli中的--profile相同。看起来您的问题包含了群集的真实凭据。我强烈建议您删除它。现在客户端已连接到,使用
kubectl--kubeconfig~/.kube/xxx cluster info
将确保使用特定的配置文件。我尝试了@AntonKostenko,但我得到了相同的结果error@Harshin_您可能引用了错误的kubeconfig文件。因此,您需要在paramater中指定配置文件。i、 e.将上面的文件另存为:~/.kube/kubeconfig
,您需要运行kubectl--kubeconfig~/.kube/kubeconfig cluster info
@EricHo,这可以正常工作,但最终会出现另一个错误“错误:服务器没有资源类型“服务”,这适用于使用联合登录登录到AWS帐户的用户。如果您已经按照AWS入门指南从控制台创建EKS,那么应该使用上面的命令重新创建EKS。我花了一些时间来解决它。使用cli创建了第二个群集,配置几乎相同。它起作用了。我的凭证文件只有一个默认值。对于控制台群集,未授权打印的详细日志。这是我的问题。谢谢