Kubernetes 错误:服务器没有';“没有资源类型”;svc“;

Kubernetes 错误:服务器没有';“没有资源类型”;svc“;,kubernetes,Kubernetes,MacBook Pro管理员:~Harshin$kubectl群集信息 Kubernetes大师正在跑步 要进一步调试和诊断群集问题,请使用“kubectl群集信息转储”。 错误:服务器没有资源类型“服务” 我遵循这份文件 在为amazon eks配置kubectl的第11步中,我正在尝试测试我的配置 apiVersion: v1 clusters: - cluster: server: ... certificate-authority-data: .... name:

MacBook Pro管理员:~Harshin$kubectl群集信息 Kubernetes大师正在跑步

要进一步调试和诊断群集问题,请使用“kubectl群集信息转储”。 错误:服务器没有资源类型“服务”

我遵循这份文件

在为amazon eks配置kubectl的第11步中,我正在尝试测试我的配置

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创建了第二个群集,配置几乎相同。它起作用了。我的凭证文件只有一个默认值。对于控制台群集,未授权打印的详细日志。这是我的问题。谢谢