Helm: المستخدم "system: serviceaccount: kube-system: default" لا يمكنه الحصول على مساحات الأسماء في مساحة الاسم "افتراضي"

تم إنشاؤها على ١٢ نوفمبر ٢٠١٧  ·  30تعليقات  ·  مصدر: helm/helm

عند تثبيت حزمة خوذة ، حصلت على الخطأ التالي مثل هذا:

[root@k8s-master3 ~]# helm install --name nginx stable/nginx-ingress
Error: release nginx failed: namespaces "default" is forbidden: User "system:serviceaccount:kube-system:default" cannot get namespaces in the namespace "default"

ها هي نسخة دفتري:

[root@k8s-master3 ~]# helm version
Client: &version.Version{SemVer:"v2.7.0", GitCommit:"08c1144f5eb3e3b636d9775617287cc26e53dba4", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.7.0", GitCommit:"08c1144f5eb3e3b636d9775617287cc26e53dba4", GitTreeState:"clean"}

ونسخة kubectl الخاصة بي:

[root@k8s-master3 ~]# kubectl version
Client Version: version.Info{Major:"1", Minor:"8+", GitVersion:"v1.8.1-alicloud", GitCommit:"19408ab2a1b736fe97a9d9cf24c6fb228f23f12f", GitTreeState:"clean", BuildDate:"2017-10-19T04:05:24Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"8", GitVersion:"v1.8.1", GitCommit:"f38e43b221d08850172a9a4ea785a86a3ffa3b3a", GitTreeState:"clean", BuildDate:"2017-10-11T23:16:41Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}

سيكون موضع تقدير أي مساعدة ، شكرا جزيلا!

questiosupport

التعليق الأكثر فائدة

هذا لأنه ليس لديك إذن بنشر الحارث ، أضف حسابًا له:

kubectl --namespace kube-system create serviceaccount tiller

kubectl create clusterrolebinding tiller-cluster-rule \
 --clusterrole=cluster-admin --serviceaccount=kube-system:tiller

kubectl --namespace kube-system patch deploy tiller-deploy \
 -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}' 

إخراج وحدة التحكم:

serviceaccount "tiller" created
clusterrolebinding "tiller-cluster-rule" created
deployment "tiller-deploy" patched

ثم قم بتشغيل الأمر أدناه للتحقق منه:

helm list
helm repo update
helm install --name nginx-ingress stable/nginx-ingress

ال 30 كومينتر

يبدو أنك واجهت مشكلة تتعلق بالامتيازات.
يمكنك تمكين rbac عند نشر المخطط:

$ helm install --name nginx --set rbac.create=true stable/nginx-ingress

@ flyer103

لا يزال لا يمكن أن تعمل.
image

نفس المشكلة هنا. لا يساعد تمكين rbac.

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"8", GitVersion:"v1.8.3", GitCommit:"f0efb3cb883751c5ffdbe6d515f3cb4fbe7b7acd", GitTreeState:"clean", BuildDate:"2017-11-10T13:17:12Z", GoVersion:"go1.9.2", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"8", GitVersion:"v1.8.2", GitCommit:"bdaeafa71f6c7c04636251031f93464384d54963", GitTreeState:"clean", BuildDate:"2017-10-24T19:38:10Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}

$ helm install --name my-hdfs-namenode hdfs-namenode-k8s
Error: release my-hdfs-namenode failed: namespaces "default" is forbidden: User "system:serviceaccount:kube-system:default" cannot get namespaces in the namespace "default"

المساعدة سيكون موضع تقدير حقا!

ما عليك القيام به هو منح الحرث (عبر حساب الخدمة الافتراضي) الوصول لتثبيت الموارد في مساحة الاسم الافتراضية. راجع https://github.com/kubernetes/helm/blob/master/docs/service_accounts.md

مرحبًا ، @ bacongobbler
شكرا للمساعدة. أنا أتبع تعليماتك المذكورة أعلاه ، وقمت بالأشياء التالية:
بادئ ذي بدء ، أقوم بإعادة تعيين الحارث:

helm reset --force

بعد القيام بذلك ، أقوم بإنشاء ملف RBAC yaml:

[root@k8s-master3 ~]# cat rbac-config.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: tiller
  namespace: default
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: tiller
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: tiller
    namespace: default

ثم قم بتهيئة آلة الحرث الخاصة بي:

helm init --service-account tiller --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.7.0 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

ومع ذلك ، لم يتم تثبيت الحارث بنجاح:

[root@k8s-master3 ~]# helm version
Client: &version.Version{SemVer:"v2.7.0", GitCommit:"08c1144f5eb3e3b636d9775617287cc26e53dba4", GitTreeState:"clean"}
Error: cannot connect to Tiller

وأقوم بخياطة عمليات النشر في مساحة الاسم kube-system كما يلي:

[root@k8s-master3 ~]# kubectl get deployments --all-namespaces
NAMESPACE     NAME                       DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
ci            jenkins                    1         1         1            1           5d
default       redis-master               1         1         1            0           4d
kube-system   default-http-backend       1         1         1            1           5d
kube-system   heapster                   1         1         1            1           5d
kube-system   kube-dns                   1         1         1            1           5d
kube-system   kubernetes-dashboard       1         1         1            1           5d
kube-system   monitoring-influxdb        1         1         1            1           5d
kube-system   nginx-ingress-controller   1         1         1            1           5d
kube-system   tiller-deploy              1         0         0            0           9m

أي أفكار حول كيفية حل هذه المشكلة؟
شكرا مقدما!

noprom جرب هذا

حذف نشر الحارث يدويًا

إنشاء هذه التكوين rbac للحارث

apiVersion: v1
kind: ServiceAccount
metadata:
  name: tiller
  namespace: kube-system
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: tiller-clusterrolebinding
subjects:
- kind: ServiceAccount
  name: tiller
  namespace: kube-system
roleRef:
  kind: ClusterRole
  name: cluster-admin
  apiGroup: ""

تشغيل حذف (نعم حذف) على ذلك التكوين rbac
تشغيل وخلق مرة أخرى
ثم قم بتشغيل helm init --upgrade لاستبدالها

يجب ألا يكون لديك المزيد من الأخطاء.

تضمين التغريدة
رائعة! شكرًا ، لقد حللت هذه المشكلة.
شكرا جزيلا!

سررت بالمساعدة :)

تضمين التغريدة
وظيفة رائعة!

شكرا!

ما ورد أعلاه لا يعمل لا يزال الحصول على

namespaces "default" is forbidden: User "system:serviceaccount:kube-system:default" cannot get namespaces in the namespace "default"

هذا لأنه ليس لديك إذن بنشر الحارث ، أضف حسابًا له:

kubectl --namespace kube-system create serviceaccount tiller

kubectl create clusterrolebinding tiller-cluster-rule \
 --clusterrole=cluster-admin --serviceaccount=kube-system:tiller

kubectl --namespace kube-system patch deploy tiller-deploy \
 -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}' 

إخراج وحدة التحكم:

serviceaccount "tiller" created
clusterrolebinding "tiller-cluster-rule" created
deployment "tiller-deploy" patched

ثم قم بتشغيل الأمر أدناه للتحقق منه:

helm list
helm repo update
helm install --name nginx-ingress stable/nginx-ingress

ykfq شكرًا جزيلاً ، إنه يعمل! لكن في كل مرة ننتشر في كتلة جديدة ، نحتاج إلى القيام بذلك؟ يا له من إزعاج!

تضمين التغريدة
إذا كنت تستخدم تعليمات التثبيت الرسمية فسيتعين عليك القيام بذلك:

  • إنشاء حساب خدمة للحارث
  • ربط دور ServiceAccout الذي تم إنشاؤه أعلاه (مطلوب دور مسؤول الكتلة)
  • إنشاء ClusterRoleBinding لـ ServiceAccout
  • تصحيح النشر الذي تم إنشاؤه عند استخدام helm init

لذلك ، هناك طريقة أخرى لتسهيل الأمر - التثبيت عبر ملف yaml:

vim tiller.yaml

apiVersion: v1
kind: Service
metadata:
  name: tiller-deploy
  namespace: kube-system
  labels:
    app: helm
    name: tiller
spec:
  ports:
  - name: tiller
    port: 44134
    protocol: TCP
    targetPort: tiller
  selector:
    app: helm
    name: tiller
  type: ClusterIP
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: tiller-deploy
  namespace: kube-system
  labels:
    app: helm
    name: tiller
  annotations:
    deployment.kubernetes.io/revision: "5"
spec:
  replicas: 1
  selector:
    matchLabels:
      app: helm
      name: tiller
  template:
    metadata:
      labels:
        app: helm
        name: tiller
    spec:
      containers:
      - env:
        - name: TILLER_NAMESPACE
          value: kube-system
        - name: TILLER_HISTORY_MAX
          value: "0"
        name: tiller
        image: gcr.io/kubernetes-helm/tiller:v2.8.2
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 44134
          name: tiller
          protocol: TCP
        - containerPort: 44135
          name: http
          protocol: TCP
        livenessProbe:
          failureThreshold: 3
          httpGet:
            path: /liveness
            port: 44135
            scheme: HTTP
          initialDelaySeconds: 1
          periodSeconds: 10
          successThreshold: 1
          timeoutSeconds: 1
        readinessProbe:
          failureThreshold: 3
          httpGet:
            path: /readiness
            port: 44135
            scheme: HTTP
          initialDelaySeconds: 1
          periodSeconds: 10
          successThreshold: 1
          timeoutSeconds: 1
        resources: {}
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      serviceAccount: tiller
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: tiller
  namespace: kube-system
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: tiller-cluster-rule
subjects:
- kind: ServiceAccount
  name: tiller
  namespace: kube-system
roleRef:
  kind: ClusterRole
  name: cluster-admin
  apiGroup: ""

ثم قم بإنشاء الموارد:

kubectl create -f tiller.yaml

تأكد من التحقق من خدمتك.

تم تصدير محتوى yaml أعلاه من مجموعة قيد التشغيل ، باستخدام الأمر:

kubectl -n kube-system get svc tiller-deploy -o=yaml
kubectl -n kube-system get deploy tiller-deploy -o=yaml
kubectl -n kube-system get sa tiller -o=yaml
kubectl -n kube-system get clusterrolebinding tiller-cluster-rule -o=yaml

لم يتم اختبار هذا yaml بعد ، إذا كان لديك أي سؤال ، فقم بإدخال تعليق.

ykfq لا أحب فكرة منح امتيازات إدارة المجموعة الكاملة لـ Tiller ، ولكن لم ينجح أي شيء آخر بالنسبة لي. حاولت اتباع هذا المثال . كنت أحاول قصر تيلر على التمثيل فقط في مساحات الأسماء وتركته يتصرف.

لكن دائمًا ما واجهت هذه المشكلة (تم نشر الكونكورس):

Error: release concourse failed: namespaces "concourse" is forbidden: User "system:serviceaccount:tiller-system:tiller-user" cannot get namespaces in the namespace "concourse": Unknown user "system:serviceaccount:tiller-system:tiller-user"

أي أفكار حول كيفية جعل هذا المثال المحدد يعمل؟ لقد غيرت بعض المعلمات حولها ، كان YAML بأكمله مع RBAC هو هذا:

apiVersion: v1
kind: Namespace
metadata:
  name: tiller-system
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: tiller-user
  namespace: tiller-system
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: tiller-manager
  namespace: tiller-system
rules:
- apiGroups: ["", "extensions", "apps"]
  resources: ["configmaps"]
  verbs: ["*"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: tiller-binding
  namespace: tiller-system
subjects:
- kind: ServiceAccount
  name: tiller-user
  namespace: tiller-system
roleRef:
  kind: Role
  name: tiller-manager
  apiGroup: rbac.authorization.k8s.io
---
apiVersion: v1
kind: Namespace
metadata:
  name: concourse
---
apiVersion: v1
kind: Namespace
metadata:
  name: concourse-main
----
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: tiller-concourse-role
  namespace: concourse
rules:
- apiGroups: ["", "extensions", "apps"]
  resources: ["*"]
  verbs: ["*"]
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: tiller-concourse-namespace-role
  namespace: concourse
rules:
- apiGroups: ["", "extensions", "apps"]
  resources: ["namespaces"]
  verbs: ["*"]
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: tiller-concourse-main-role
  namespace: concourse-main
rules:
- apiGroups: ["", "extensions", "apps"]
  resources: ["*"]
  verbs: ["*"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: tiller-concourse-main-role
subjects:
- kind: ServiceAccount
  name: tiller-user
  namespace: tiller-system
roleRef:
  kind: Role
  name: tiller-concourse-main-role
  apiGroup: rbac.authorization.k8s.io
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: tiller-concourse-role
subjects:
- kind: ServiceAccount
  name: tiller-user
  namespace: tiller-system
roleRef:
  kind: Role
  name: tiller-concourse-role
  apiGroup: rbac.authorization.k8s.io
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: tiller-concourse-namespace-role
subjects:
- kind: ServiceAccount
  name: tiller-user
  namespace: tiller-system
roleRef:
  kind: Role
  name: tiller-concourse-namespace-role
  apiGroup: rbac.authorization.k8s.io

محرك رأس الحرف - ترقية - أداة الحرث لحساب الخدمة

سيقومbrunoban helm v3 بإزالة الحراثة ، لذا من ما فهمته ستكون الأذونات بواسطة المستخدم الذي يطبقها

@ اينوفيا أوه ... لم أكن أعرف ذلك. سأحاول التعجيل الآن بعد ذلك. شكرا!

ثم قم بتشغيل helm init --upgrade لاستبدالها

innovia أين يتم وضع ملف التكوين rbac؟

cjbottaro هل قرأت المنشور الذي كتبته

لا أتابع سؤالك ، هل يمكنك إعادة الشرح؟

inovia Nevermind ، لقد اكتشفت ذلك. فقط كان علي الركض

kubectl create -f tiller.yaml
helm init --upgrade --service-account tiller

هذا عمل لي:

kubectl - مساحة الأسماء kube-system إنشاء حراثة حساب خدمة
kubectl إنشاء الحراثة clusterrolebinding - إدارة الكتلة clusterrole --serviceaccount = kube- النظام: الحارث
محرك رأس - خدمة - حساب الحارث - ترقية

إنني أتابع وثائق Helm الرسمية لـ "Deploy Tiller في مساحة الاسم ، يقتصر على نشر الموارد فقط في مساحة الاسم تلك". إليكم نص bash الخاص بي:

Namespace="$1"

kubectl create namespace $Namespace
kubectl create serviceaccount "tiller-$Namespace" --namespace $Namespace
kubectl create role "tiller-role-$Namespace" /
    --namespace $Namespace /
    --verb=* /
    --resource=*.,*.apps,*.batch,*.extensions
kubectl create rolebinding "tiller-rolebinding-$Namespace" /
    --namespace $Namespace /
    --role="tiller-role-$Namespace" /
    --serviceaccount="$Namespace:tiller-$Namespace"

يعطيني تشغيل helm upgrade الخطأ التالي:

خطأ: فشل الترقية: تم حظر configmaps: المستخدم " system: serviceaccount : kube- system: default " لا يمكنه سرد خرائط التكوين في مساحة الاسم "kube-system"

هل يوجد خطأ في الوثائق الرسمية؟ هل قرأتها خاطئة؟

ما هو الأمر الكامل لـ helm init ؟ هل يمكنك من فضلك فتح تذكرة منفصلة لهذا؟

bacongobbler تم نقل المشكلة هنا https://github.com/helm/helm/issues/4933

ما ورد أعلاه لا يعمل لا يزال الحصول على

namespaces "default" is forbidden: User "system:serviceaccount:kube-system:default" cannot get namespaces in the namespace "default"

اتبع الأمر أدناه

helm init --service-accountILLer --upgrade -i Registry.cn-hangzhou.aliyuncs.com/google_containers/ الحارث: v2.14.0 --stable-repo-url https: //kubernetes.oss-cn-hangzhou.aliyuncs .com / الرسوم البيانية

ما عليك القيام به هو منح الحرث (عبر حساب الخدمة الافتراضي) الوصول لتثبيت الموارد في مساحة الاسم الافتراضية. راجع https://github.com/kubernetes/helm/blob/master/docs/service_accounts.md

اسم الملف الآن rbac.md والرابط موجود على https://github.com/helm/helm/blob/master/docs/rbac.md.

هذا لأنه ليس لديك إذن بنشر الحارث ، أضف حسابًا له:

kubectl --namespace kube-system create serviceaccount tiller

kubectl create clusterrolebinding tiller-cluster-rule \
 --clusterrole=cluster-admin --serviceaccount=kube-system:tiller

kubectl --namespace kube-system patch deploy tiller-deploy \
 -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}' 

إخراج وحدة التحكم:

serviceaccount "tiller" created
clusterrolebinding "tiller-cluster-rule" created
deployment "tiller-deploy" patched

ثم قم بتشغيل الأمر أدناه للتحقق منه:

helm list
helm repo update
helm install --name nginx-ingress stable/nginx-ingress

سيكون من الرائع أن يتم تحديث مستندات تثبيت الحارث بهذه التعليمات الدقيقة
كان لدي yaml التالية

apiVersion: v1
kind: ServiceAccount
metadata:
  name: tiller
  namespace: kube-system
---

apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: tiller
roleRef:
  apiGroup: ""
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: tiller
    namespace: kube-system

إذا كنت على حق ، فقد فقدت tiller deployment في هذا yaml؟

محرك رأس الحرف - ترقية - أداة الحرث لحساب الخدمة

يعمل الأمر أعلاه على إصلاح هذه المشكلة ، نوصي بشدة بهذه الخطوة في البداية :)

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات