Obtenir error: the server doesn't have a resource type "svc"
lors du test de la configuration kubectl
en suivant ce guide:
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
Je viens d'avoir un problème similaire que j'ai réussi à résoudre avec un support aws. Le problème que je rencontrais était que le cluster avait été créé avec un rôle assumé par l'utilisateur, mais kubectl n'assumait pas ce rôle avec la configuration par défaut du kube créée par l'aws-cli.
J'ai résolu le problème en fournissant le rôle dans la section utilisateurs de la configuration de kube
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
Je pense que l'heptio-aws-Authenticator a été remplacé par l'aws-iam-Authentator, mais c'est ce changement qui m'a permis d'utiliser le cluster.
Les 401 ressemblent à un problème d'autorisations. Votre utilisateur a-t-il créé le cluster? Pour pouvoir interagir avec votre cluster, vous devez éditer le ConfigMap aws-auth dans Kubernetes. "
Si elle a été créée par un autre utilisateur, vous devrez utiliser cet utilisateur, configuré dans la CLI pour exécuter kubectl.
Supprimez simplement le cache et le cache http dans le dossier .kube et essayez d’exécuter la commande kubectl get svc Vérifiez également que votre fichier de configuration est correctement mis en retrait. En raison d’erreurs de syntaxe, il est possible que cette erreur soit générée.
Vous devez vous assurer que les informations d'identification utilisées pour créer le cluster et exécuter kubectl dans la CLI sont identiques. Dans mon cas, j'ai créé un cluster via la console qui prenait les informations d'identification du distributeur automatique AWS dont le délai de validité expirait, kubectl ayant utilisé les informations d'identification permanentes réelles.
Pour corriger l'erreur, j'ai également créé le cluster à partir de l'AWS CLI.
J'ai eu ce problème où ma variable d'environnement KUBECONFIG avait plus d'une valeur, il ressemblait à: deuxième groupe
Essayez de désélectionner et de réinitialiser la variable d’environnement pour n’avoir qu’une seule valeur et voir si cela fonctionne pour vous.
Solution possible si vous avez créé le cluster dans l'interface utilisateur
Si vous avez créé le cluster dans l'interface utilisateur, il est possible que l'utilisateur AWS root
ait créé le cluster. Selon la documentation, "lors de la création d'un cluster Amazon EKS, l'entité IAM (utilisateur ou rôle) qui crée le cluster est ajoutée à la table d'autorisations Kubernetes RBAC en tant qu'administrateur (avec les autorisations système: maître). l’utilisateur peut appeler le serveur d’API Kubernetes à l’aide de kubectl. "
Vous devez d'abord vous connecter à l'AWS CLI en tant qu'utilisateur root
pour mettre à jour les autorisations de l'utilisateur IAM auquel vous souhaitez accéder au cluster.
Vous aurez besoin d'obtenir une clé d'accès pour l'utilisateur root et de mettre cette information dans .aws/credentials
sous l'utilisateur par défaut. Vous pouvez le faire en utilisant la commande aws configure
Désormais, kubectl get svc
fonctionne, puisque vous êtes connecté en tant qu'utilisateur root ayant initialement créé le cluster.
_ { Appliquez le ConfigMap aws-auth au cluster } _. Suivez l'étape 2 de ces documents, en utilisant la valeur NodeInstanceRole
que vous avez obtenue sous la forme Output
from Étape 3: lancement et configuration des nœuds de travail Amazon EKS }.
Pour ajouter un utilisateur ou un rôle IAM non root à un cluster Amazon EKS , suivez l'étape 3 de ces documents . Modifiez le configmap/aws-auth
et ajoutez d'autres utilisateurs nécessitant un accès kubectl
dans la section mapUsers
.
Exécutez à nouveau aws configure
et ajoutez les informations de clé d'accès de votre utilisateur non root.
Vous pouvez maintenant accéder à votre cluster à partir de l'AWS CLI et à l'aide de kubectl.
Je suis tombé sur cette erreur, et c’était un problème de configuration deDIFF&EACUTE;RENTkube, de sorte que
error: the server doesn't have a resource type “svc”
l'erreur est probablement très générique.
Dans mon cas, la solution consistait à supprimer les guillemets autour des données d'autorité de certification.
Exemple
(ne fonctionne pas)
certificate-authority-data:"xyxyxyxyxyxy"
(travail)
certificate-authority-data: xyxyxyxyxyxy