取得 error: the server doesn't have a resource type "svc"
このガイドに従ってkubectl
構成をテストする場合:
https://docs.aws.Amazon.com/eks/latest/userguide/getting-started.html
$ kubectl get svc -v=8
I0712 15:30:24.902035 93745 loader.go:357] Config loaded from file /Users/matt.canty/.kube/config-test
I0712 15:30:24.902741 93745 round_trippers.go:383] GET https://REDACTED.yl4.us-east-1.eks.amazonaws.com/api
I0712 15:30:24.902762 93745 round_trippers.go:390] Request Headers:
I0712 15:30:24.902768 93745 round_trippers.go:393] User-Agent: kubectl/v1.10.3 (darwin/AMD64) kubernetes/2bba012
I0712 15:30:24.902773 93745 round_trippers.go:393] Accept: application/json, */*
I0712 15:30:25.425614 93745 round_trippers.go:408] Response Status: 401 Unauthorized in 522 milliseconds
I0712 15:30:25.425651 93745 round_trippers.go:411] Response Headers:
I0712 15:30:25.425657 93745 round_trippers.go:414] Content-Type: application/json
I0712 15:30:25.425662 93745 round_trippers.go:414] Content-Length: 129
I0712 15:30:25.425670 93745 round_trippers.go:414] Date: Thu, 12 Jul 2018 14:30:25 GMT
I0712 15:30:25.426757 93745 request.go:874] Response Body: {"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"Unauthorized","reason":"Unauthorized","code":401}
I0712 15:30:25.428104 93745 cached_discovery.go:124] skipped caching discovery info due to Unauthorized
I0712 15:30:25.428239 93745 round_trippers.go:383] GET https://REDACTED.yl4.us-east-1.eks.amazonaws.com/api
I0712 15:30:25.428258 93745 round_trippers.go:390] Request Headers:
I0712 15:30:25.428268 93745 round_trippers.go:393] Accept: application/json, */*
I0712 15:30:25.428278 93745 round_trippers.go:393] User-Agent: kubectl/v1.10.3 (darwin/AMD64) kubernetes/2bba012
I0712 15:30:25.577788 93745 round_trippers.go:408] Response Status: 401 Unauthorized in 149 milliseconds
I0712 15:30:25.577818 93745 round_trippers.go:411] Response Headers:
I0712 15:30:25.577838 93745 round_trippers.go:414] Content-Type: application/json
I0712 15:30:25.577854 93745 round_trippers.go:414] Content-Length: 129
I0712 15:30:25.577868 93745 round_trippers.go:414] Date: Thu, 12 Jul 2018 14:30:25 GMT
I0712 15:30:25.578876 93745 request.go:874] Response Body: {"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"Unauthorized","reason":"Unauthorized","code":401}
I0712 15:30:25.579492 93745 cached_discovery.go:124] skipped caching discovery info due to Unauthorized
I0712 15:30:25.579851 93745 round_trippers.go:383] GET https://REDACTED.yl4.us-east-1.eks.amazonaws.com/api
I0712 15:30:25.579864 93745 round_trippers.go:390] Request Headers:
I0712 15:30:25.579873 93745 round_trippers.go:393] Accept: application/json, */*
I0712 15:30:25.579879 93745 round_trippers.go:393] User-Agent: kubectl/v1.10.3 (darwin/AMD64) kubernetes/2bba012
I0712 15:30:25.729513 93745 round_trippers.go:408] Response Status: 401 Unauthorized in 149 milliseconds
I0712 15:30:25.729541 93745 round_trippers.go:411] Response Headers:
I0712 15:30:25.729547 93745 round_trippers.go:414] Content-Type: application/json
I0712 15:30:25.729552 93745 round_trippers.go:414] Content-Length: 129
I0712 15:30:25.729557 93745 round_trippers.go:414] Date: Thu, 12 Jul 2018 14:30:25 GMT
I0712 15:30:25.730606 93745 request.go:874] Response Body: {"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"Unauthorized","reason":"Unauthorized","code":401}
I0712 15:30:25.731228 93745 cached_discovery.go:124] skipped caching discovery info due to Unauthorized
I0712 15:30:25.731254 93745 factory_object_mapping.go:93] Unable to retrieve API resources, falling back to hardcoded types: Unauthorized
F0712 15:30:25.731493 93745 helpers.go:119] error: the server doesn't have a resource type "svc"
kubectl version
Client Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.3", GitCommit:"2bba0127d85d5a46ab4b778548be28623b32d0b0", GitTreeState:"clean", BuildDate:"2018-05-28T20:03:09Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"darwin/AMD64"}
error: You must be logged in to the server (the server has asked for the client to provide credentials)
$ kubectl config view
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: REDACTED
server: https://REDACTED.yl4.us-east-1.eks.amazonaws.com
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
args:
- token
- -i
- test
command: heptio-authenticator-aws
env:
- name: AWS_PROFILE
value: personal
cat .aws/config
[profile personal]
source_profile = personal
$ cat .aws/credentials
[personal]
aws_access_key_id = REDACTED
aws_secret_access_key = REDACTED
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: REDACETED
server: https://REDACTED.yl4.us-east-1.eks.amazonaws.com
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
args:
- token
- -i
- test
command: heptio-authenticator-aws
env:
- name: AWS_PROFILE
value: personal
同様の問題が発生したので、awsサポートで解決できました。私が抱えていた問題は、ユーザーが想定したロールでクラスターが作成されたが、aws-cliで作成されたデフォルトのkube構成でkubectlがこのロールを想定していなかったことです。
Kube configのusersセクションでロールを提供することで問題を修正しました
users:
- name: aws
user:
exec:
apiVersion: client.authentication.k8s.io/v1alpha1
args:
- token
- -i
- test
- -r
- <arn::of::your::role>
command: aws-iam-authenticator
env:
- name: AWS_PROFILE
value: personal
Heptio-aws-authenticatorがaws-iam-authenticatorに変更されたと思いますが、この変更によりクラスターを使用できるようになりました。
401は権限の問題のように見えます。ユーザーはクラスターを作成しましたか?ドキュメント:「Amazon EKSクラスターを作成すると、IAMエンティティ(ユーザーまたはロール)にクラスターのRBAC構成のsystem:masterアクセス許可が自動的に付与されます。追加のAWSユーザーにクラスターとの対話機能を付与するには、編集する必要がありますKubernetes内のaws-auth ConfigMap。」
別のユーザーが作成した場合は、そのユーザーを使用して、kubectlを実行するようにCLIで構成する必要があります。
CLIでクラスターの作成とkubectlの実行に使用される資格情報が同じであることを確認する必要があります。私の場合、コンソールを介してクラスターを作成しました。このクラスターは、kubectlが実際の永続的な資格情報を使用した場合に有効期限が切れるAWSの一時的な自動販売機の資格情報を取得しました。
エラーを修正するために、AWS CLIからクラスターも作成しました。
.kubeフォルダーのキャッシュとhttp-cacheを削除して、コマンドkubectl get svcを実行してみてください。また、config-ファイルが適切にインデントされていることを確認してください。構文エラーが原因で、そのエラーがスローされる場合があります。
KUBECONFIG環境変数に複数の値があり、次のような問題が発生しました::/Users/my-user/.kube/config-firstcluster:/Users/my-user/.kube/config-secondcluster
環境変数の設定を解除してリセットし、値が1つだけになるようにして、それが機能するかどうかを確認します。
UIでクラスターを作成した場合に可能な解決策
UIでクラスターを作成した場合、AWS root
ユーザーがクラスターを作成した可能性があります。ドキュメントによると、「Amazon EKSクラスターが作成されると、クラスターを作成するIAMエンティティ(ユーザーまたはロール)は管理者(システム:マスター)のアクセス許可としてKubernetes RBAC承認テーブルに追加されます。最初は、そのIAMのみユーザーはkubectlを使用してKubernetes APIサーバーを呼び出すことができます。
クラスターにアクセスするIAMユーザーのアクセス許可を更新するには、最初にroot
ユーザーとしてAWS CLIにログインする必要があります。
rootユーザーのアクセスキー を取得し、この情報をデフォルトユーザーの下の.aws/credentials
に配置する必要があります。コマンドaws configure
を使用してこれを行うことができます
これで、最初にクラスターを作成したrootユーザーとしてログインしているため、kubectl get svc
は機能します。
クラスターにaws-auth ConfigMapを適用 。これらのドキュメントのステップ2に従い、NodeInstanceRole
として取得したOutput
値を ステップ3:Amazon EKSワーカーノードの起動と設定 として使用します
非ルートIAMユーザーまたはロールをAmazon EKSクラスターに追加するには 、これらのドキュメントのステップ3に従います。 configmap/aws-auth
を編集し、kubectl
セクションにmapUsers
アクセスを必要とする他のユーザーを追加します。
aws configure
を再度実行し、非ルートユーザーからアクセスキー情報を追加します。
これで、AWS CLIからkubectlを使用してクラスターにアクセスできます。
私はこのエラーに遭遇しました、そして、それは[〜#〜] different [〜#〜] kube config問題でした。
error: the server doesn't have a resource type “svc”
エラーはおそらく非常に一般的です。
私の場合、解決策は認証局データの周りの引用符を削除することでした
例
(動作していません)
certificate-authority-data:"xyxyxyxyxyxy"
(ワーキング)
certificate-authority-data: xyxyxyxyxyxy