मैं EKS और Kubernetes के लिए नया हूँ -

यहाँ क्या हुआ है

  1. एक विशिष्ट IAM भूमिका के साथ एक EKS क्लस्टर बनाया गया था
  2. Kubectl कमांड के साथ क्लस्टर से कनेक्ट करने का प्रयास करते समय यह फेंक रहा था

error You must be logged in to the server (Unauthorized)

मैंने यहां विस्तृत चरणों का पालन किया

https://aws.amazon.com/premiumsupport/knowledge-center/amazon-eks-cluster-access/

  1. ईकेएस क्लस्टर बनाने वाली भूमिका के लिए ग्रहण किया गया

  2. उन्हें नई प्रोफ़ाइल dev में aws क्रेडेंशियल में निर्यात किया गया

  3. दौड़ा AWS_PROFILE=dev kubectl get nodes। यह मेरे सभी नोड्स को सूचीबद्ध करने में सक्षम था।

नोट: मैं पहले ही aws eks --region <region> update-kubeconfig --name <cluster-name> चला चुका था

  1. अब मैंने भूमिका/एसएएमएल उपयोगकर्ता को जोड़ने का प्रयास किया जो नीचे दिए गए कॉन्फिगमैप को लागू करके ईकेएस क्लस्टर तक पहुंचने का प्रयास कर रहा है और AWS_PROFILE=dev kubectl apply -f aws-auth.yaml

aws-auth.yaml जा रहा है

apiVersion: v1
kind: ConfigMap
metadata:
  name: aws-auth
  namespace: kube-system
data:
  mapRoles: |
    - rolearn: arn:aws:sts::******:assumed-role/aws_dev/abc@def.com
      username: system:node:{{EC2PrivateDNSName}}
      groups:
        - system:bootstrappers
        - system:nodes

ध्यान दें कि भूमिका एक SAML उपयोगकर्ता है जिसे aws_dev भूमिका के लिए ग्रहण किया गया है जो क्लस्टर से जुड़ने का प्रयास करता है।

एक बार इसे लागू करने के बाद, प्रतिक्रिया configmap/aws-auth configured थी

मैंने अब kubectl get nodes को AWS_PROFILE=dev के बिना निष्पादित करने का प्रयास किया और यह error You must be logged in to the server (Unauthorized) के साथ फिर से विफल हो गया।

मैंने AWS_PROFILE=dev kubectl get nodes भी निष्पादित किया जो पहले काम करता था लेकिन अब विफल रहता है।

मैं अनुमान लगा रहा हूं कि aws-auth जानकारी गड़बड़ हो गई है और क्या ऊपर किए गए kubectl apply को वापस लाने का कोई तरीका है।

कोई भी Kubectl कमांड अब विफल हो जाती है। हो सकता है क्या हो रहा है? मैं इसे कैसे ठीक कर सकता हूं?

1
vkr 13 मार्च 2020, 09:05

2 जवाब

जब आपकी AWS आइडेंटिटी एंड एक्सेस मैनेजमेंट (IAM) इकाई Amazon EKS क्लस्टर के रोल-बेस्ड एक्सेस कंट्रोल (RBAC) कॉन्फ़िगरेशन द्वारा अधिकृत नहीं होती है, तो आपको एक प्राधिकरण त्रुटि मिलती है। यह तब होता है जब Amazon EKS क्लस्टर किसी IAM उपयोगकर्ता या भूमिका द्वारा बनाया जाता है जो aws-iam-authenticator द्वारा उपयोग किए जाने वाले से भिन्न होता है।

रिज़ॉल्यूशन की जाँच करें यहां

kubectl त्रुटि EKS क्लस्टर तक पहुँचने पर आपको सर्वर (अनधिकृत) में लॉग इन होना चाहिए

1
Arghya Sadhu 13 मार्च 2020, 10:01
जैसा कि मेरे प्रश्न में संकेत दिया गया है - मैंने लिंक में दिए चरणों का पालन किया और अभी भी समस्या का सामना कर रहा हूं
 – 
vkr
13 मार्च 2020, 09:59
 – 
Arghya Sadhu
13 मार्च 2020, 10:02
यह उन्हीं चरणों को सूचीबद्ध करता है जिनका मैंने अनुसरण किया था। यहाँ समस्या है aws-auth config ने क्लस्टर को गड़बड़ कर दिया है और मैं kubectl को चलाने में सक्षम नहीं हूँ। इसे कैसे वापस करें?
 – 
vkr
13 मार्च 2020, 10:23
Aws eks --region update-kubeconfig --name इसे पुन: प्रयास करें
 – 
Arghya Sadhu
13 मार्च 2020, 10:37

क्लस्टर को फिर से बनाएं और जब आप लिंक में चरण 6 पर पहुंचें तो अपने aws-auth.yaml में दूसरी भूमिका (या उपयोगकर्ता) जोड़ें, जैसे:

  1. kubectl get cm -n kube-system aws-auth -o yaml के साथ ConfigMap प्राप्त करें
  2. ConfigMap में दूसरे आइटम के रूप में अपनी भूमिका जोड़ें (पहले वाले को न बदलें):
apiVersion: v1
kind: ConfigMap
metadata:
  name: aws-auth
  namespace: kube-system
data:
  mapRoles: |
    - rolearn: arn:aws:sts::******:assumed-role/aws_dev/abc@def.com
      username: system:node:{{EC2PrivateDNSName}}
      groups:
        - system:bootstrappers
        - system:nodes
    ### Add only this (assuming you're using a role)
    - rolearn: <ARN of your IAM role>
      username: <any name>
      groups:
        - system:masters
  1. AWS_PROFILE=dev kubectl apply -f aws-auth.yaml चलाएं
  2. फिर aws eks --region <region> update-kubeconfig --name <cluster-name> के साथ अपने अस्थायी IAM रोल क्रेडेंशियल के साथ kubeconfig प्राप्त करें

आपने शायद aws-auth config को बदल दिया है। आम तौर पर जब आप एक क्लस्टर बनाते हैं, तो उस क्लस्टर को बनाने वाले उपयोगकर्ता (या भूमिका) के पास व्यवस्थापक अधिकार होते हैं, जब आप उपयोगकर्ताओं को स्विच करते हैं तो आपको उन्हें कॉन्फ़िगरेशन में जोड़ने की आवश्यकता होती है (क्लस्टर बनाने वाले उपयोगकर्ता के रूप में किया जाता है)।

0
char 13 मार्च 2020, 13:28
मैं क्लस्टर को फिर से बनाना नहीं चाहता क्या config-map-aws-auth में किए गए परिवर्तन को वापस लाने का कोई तरीका है?
 – 
vkr
13 मार्च 2020, 22:05
1
यदि आपके पास क्लस्टर बनाने वाले उपयोगकर्ता के पास पहुंच नहीं है, तो मैं अनुमान लगा रहा हूं कि जब आपने कॉन्फिगमैप को बदल दिया तो आपने खुद को लॉक कर दिया
 – 
char
14 मार्च 2020, 02:25