124 votes

Erreur kubectl Vous devez être connecté au serveur (non autorisé) lors de l'accès au cluster EKS

J'ai essayé de suivre le guide de démarrage pour EKS. Quand j'ai essayé d'appeler kubectl obtenir le service j'ai le message: erreur: Vous devez être connecté au serveur (non autorisé) Voici ce que j'ai fait:
1. Créé le EKS cluster.
2. Créé le fichier de configuration comme suit:

apiVersion: v1
clusters:
- cluster:
    server: https://*********.yl4.us-west-2.eks.amazonaws.com
    certificate-authority-data: *********
  name: *********
contexts:
- context:
    cluster: *********
    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"
        - "*********"
        - "-r"
        - "arn:aws:iam::*****:role/******"
  1. Téléchargé et installé la dernière aws cli
  2. Couru aws configurer et définir les informations d'identification pour mon utilisateur IAM et de la région que nous-ouest-2
  3. Ajouter une politique à l'utilisateur IAM pour sts:AssumeRole pour l'EKS rôle et de le définir comme une relation de confiance
  4. Le programme d'installation kubectl pour utiliser le fichier de config

Je peux obtenir un jeton quand je lance heptio-authentificateur-aws jeton -r arn:aws:iam::**********:rôle/********* -je mon-cluster-ame Cependant, lorsque j'essaie d'accéder au cluster je reçois l'erreur: Vous devez être connecté au serveur (non autorisé)

Une idée de comment résoudre ce problème?

114voto

Steven Points 495

Quand Amazon EKS cluster est créé, l'IAM entité (utilisateur ou rôle) qui crée le cluster est ajouté à la Kubernetes RBAC table des autorisations d'administrateur. Initialement, seule IAM utilisateur peut faire des appels à la Kubernetes API server à l'aide de kubectl.

eks-docs

Donc, pour ajouter l'accès à d'autres aws utilisateurs, d'abord vous devez modifier ConfigMap pour ajouter un utilisateur IAM ou le rôle d'un Amazon EKS cluster.

Vous pouvez modifier le ConfigMap fichier en exécutant: kubectl edit -n kube-system configmap/aws-auth, après quoi il vous sera accordé avec l'éditeur avec lequel vous carte les nouveaux utilisateurs.

apiVersion: v1
data:
  mapRoles: |
    - rolearn: arn:aws:iam::555555555555:role/devel-worker-nodes-NodeInstanceRole-74RF4UBDUKL6
      username: system:node:{{EC2PrivateDNSName}}
      groups:
        - system:bootstrappers
        - system:nodes
  mapUsers: |
    - userarn: arn:aws:iam::111122223333:user/ops-user
      username: ops-user
      groups:
        - system:masters
  mapAccounts: |
    - "111122223333"

L'esprit de l' mapUsers où vous êtes en train d'ajouter de la fpo-utilisateur avec mapAccounts label qui mappe l' AWS compte d'utilisateur avec un nom d'utilisateur sur Kubernetes cluster.

Toutefois, aucune autorisation n'est fournie dans RBAC par cette seule action; vous devez toujours créer rôle des liaisons dans votre cluster de fournir ces entités autorisations.

Comme l'amazon de la documentation(iam-docs) unis, vous avez besoin pour créer un rôle de liaison sur la kubernetes cluster pour l'utilisateur spécifié dans la ConfigMap. Vous pouvez le faire que par l'exécution de la mise en jachère de commande (kub-docs):

kubectl create clusterrolebinding ops-user-cluster-admin-binding --clusterrole=cluster-admin --user=ops-user

qui accorde le cluster-admin ClusterRole à un utilisateur nommé ops-de l'utilisateur à travers l'ensemble du cluster.

12voto

Itay k Points 713

J'ai commenté les deux dernières lignes du fichier de configuration

 # - "-r"
# - "arn:aws:iam::**********:role/**********"
 

et cela a fonctionné même si je ne sais pas pourquoi

10voto

Thor Points 31

Vous avez besoin pour créer le cluster sous le même IAM profil que vous y accédez à partir de la via AWS cli.

Dit d'une autre manière, à l'intérieur d' ~/.aws/credentials, le profil en accédant à kubectl doit correspondre exactement à la même IAM qui a été utilisé pour créer le cluster.

Ma recommandation est d'utiliser AWS de la cli pour créer vos groupes en tant que création de l'interface graphique peut être plus de confusion que de bien. La prise en main guide est votre meilleur pari pour obtenir en place et fonctionne.

5voto

juicedM3 Points 341

Assurez-vous également que vos utilisateurs se trouvent dans la configMap aws-auth k8s:

https://docs.aws.amazon.com/eks/latest/userguide/add-user-role.html

4voto

Anthony Skipper Points 702

J'ai eu le même problème . Il est probable que vous utilisiez un compte root. Il semble que les comptes root ne puissent pas assumer les rôles requis. Cette erreur peut parfois être masquée si vous utilisez des clés expirées.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X