मैं एडब्ल्यूएस ईकेएस पर aws-iam-authenticator कंटेनर को सेटअप करने की कोशिश कर रहा हूं, लेकिन मैं डेमॉन शुरू करने की कोशिश में घंटों से अटका हुआ हूं। मैं aws-iam-authenticator रेपो पर मिले निर्देशों का पालन कर रहा हूं, और मैं तैनाती/उदाहरण का उपयोग कर रहा हूं। yml मेरे संदर्भ प्रारंभिक बिंदु के रूप में। मैंने पहले ही भूमिकाओं, क्लस्टर आईडी और अन्य आवश्यक घटकों को संशोधित कर दिया है लेकिन तैनाती लागू करने के बाद भी कोई भाग्य नहीं है।

मैंने अभी नियंत्रक-मास्टर के लिए लॉगिंग सक्षम की है, इसलिए मुझे आशा है कि वहां कुछ और विवरण हो सकते हैं। मैं एक पोस्ट पर भी आया जहां लोगों ने नियंत्रक नोड्स को पुनरारंभ करने का उल्लेख किया, लेकिन मुझे अभी तक ईकेएस का उपयोग करने का कोई तरीका नहीं मिला है।

अगर किसी के पास जांच करने के लिए त्वरित सुझाव या अन्य स्थान हैं, तो मैं इसकी बहुत सराहना करता हूं :)

$ kubectl get ds -n kube-system
    NAME                    DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR                     AGE
    aws-iam-authenticator   0         0         0       0            0           node-role.kubernetes.io/master=   8h
    aws-node                3         3         3       3            3           <none>                            3d22h
    kube-proxy              3         3         3       3            3           <none>                            3d22h

अतिरिक्त आउटपुट

$ kubectl get ds aws-iam-authenticator -n kube-system --output=yaml
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"apps/v1","kind":"DaemonSet","metadata":{"annotations":{},"labels":{"k8s-app":"aws-iam-authenticator"},"name":"aws-iam-authenticator","namespace":"kube-system"},"spec":{"selector":{"matchLabels":{"k8s-app":"aws-iam-authenticator"}},"template":{"metadata":{"annotations":{"scheduler.alpha.kubernetes.io/critical-pod":""},"labels":{"k8s-app":"aws-iam-authenticator"}},"spec":{"containers":[{"args":["server","--config=/etc/aws-iam-authenticator/config.yaml","--state-dir=/var/aws-iam-authenticator","--generate-kubeconfig=/etc/kubernetes/aws-iam-authenticator/kubeconfig.yaml"],"image":"602401143452.dkr.ecr.us-west-2.amazonaws.com/amazon/aws-iam-authenticator:v0.4.0","name":"aws-iam-authenticator","resources":{"limits":{"cpu":"100m","memory":"20Mi"},"requests":{"cpu":"10m","memory":"20Mi"}},"volumeMounts":[{"mountPath":"/etc/aws-iam-authenticator/","name":"config"},{"mountPath":"/var/aws-iam-authenticator/","name":"state"},{"mountPath":"/etc/kubernetes/aws-iam-authenticator/","name":"output"}]}],"hostNetwork":true,"nodeSelector":{"node-role.kubernetes.io/master":""},"serviceAccountName":"aws-iam-authenticator","tolerations":[{"effect":"NoSchedule","key":"node-role.kubernetes.io/master"},{"key":"CriticalAddonsOnly","operator":"Exists"}],"volumes":[{"configMap":{"name":"aws-iam-authenticator"},"name":"config"},{"hostPath":{"path":"/etc/kubernetes/aws-iam-authenticator/"},"name":"output"},{"hostPath":{"path":"/var/aws-iam-authenticator/"},"name":"state"}]}},"updateStrategy":{"type":"RollingUpdate"}}}
  creationTimestamp: "2020-03-24T06:47:54Z"
  generation: 4
  labels:
    k8s-app: aws-iam-authenticator
  name: aws-iam-authenticator
  namespace: kube-system
  resourceVersion: "601895"
  selfLink: /apis/extensions/v1beta1/namespaces/kube-system/daemonsets/aws-iam-authenticator
  uid: 63e8985a-54cc-49a8-b343-3e20b4d9eaff
spec:
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      k8s-app: aws-iam-authenticator
  template:
    metadata:
      annotations:
        scheduler.alpha.kubernetes.io/critical-pod: ""
      creationTimestamp: null
      labels:
        k8s-app: aws-iam-authenticator
    spec:
      containers:
      - args:
        - server
        - --config=/etc/aws-iam-authenticator/config.yaml
        - --state-dir=/var/aws-iam-authenticator
        - --generate-kubeconfig=/etc/kubernetes/aws-iam-authenticator/kubeconfig.yaml
        image: 602401143452.dkr.ecr.us-west-2.amazonaws.com/amazon/aws-iam-authenticator:v0.4.0
        imagePullPolicy: IfNotPresent
        name: aws-iam-authenticator
        resources:
          limits:
            cpu: 100m
            memory: 20Mi
          requests:
            cpu: 10m
            memory: 20Mi
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts:
        - mountPath: /etc/aws-iam-authenticator/
          name: config
        - mountPath: /var/aws-iam-authenticator/
          name: state
        - mountPath: /etc/kubernetes/aws-iam-authenticator/
          name: output
      dnsPolicy: ClusterFirst
      hostNetwork: true
      nodeSelector:
        node-role.kubernetes.io/master: ""
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      serviceAccount: aws-iam-authenticator
      serviceAccountName: aws-iam-authenticator
      terminationGracePeriodSeconds: 30
      tolerations:
      - effect: NoSchedule
        key: node-role.kubernetes.io/master
      - key: CriticalAddonsOnly
        operator: Exists
      volumes:
      - configMap:
          defaultMode: 420
          name: aws-iam-authenticator
        name: config
      - hostPath:
          path: /etc/kubernetes/aws-iam-authenticator/
          type: ""
        name: output
      - hostPath:
          path: /var/aws-iam-authenticator/
          type: ""
        name: state
  templateGeneration: 4
  updateStrategy:
    rollingUpdate:
      maxUnavailable: 1
    type: RollingUpdate
status:
  currentNumberScheduled: 0
  desiredNumberScheduled: 0
  numberMisscheduled: 0
  numberReady: 0
  observedGeneration: 4
0
RomeNYRR 24 मार्च 2020, 18:59

1 उत्तर

सबसे बढ़िया उत्तर

समस्या का संबंध nodeSelector फ़ील्ड से है। k8s डॉक्स फॉर लेबल सिलेक्टर्स के अनुसार , खाली स्ट्रिंग हमेशा वाइल्डकार्ड को नहीं दर्शाती है और व्यवहार उस विशिष्ट एपीआई के कार्यान्वयन पर निर्भर करता है:

खाली या गैर-निर्दिष्ट चयनकर्ताओं के शब्दार्थ संदर्भ पर निर्भर होते हैं, और चयनकर्ताओं का उपयोग करने वाले एपीआई प्रकारों को उनकी वैधता और अर्थ का दस्तावेजीकरण करना चाहिए।

मुझे डेमनसेट के nodeSelector के आधिकारिक डॉक्स में खाली व्यवहार नहीं दिख रहा है, लेकिन यह GCE उदाहरण विशेष रूप से omit the nodeSelector field to schedule on all nodes को बताता है, जिसकी पुष्टि आपने अपने मामले में भी की थी।

1
PoweredByOrange 24 मार्च 2020, 20:07