عند تثبيت حزمة خوذة ، حصلت على الخطأ التالي مثل هذا:
[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"}
سيكون موضع تقدير أي مساعدة ، شكرا جزيلا!
يبدو أنك واجهت مشكلة تتعلق بالامتيازات.
يمكنك تمكين rbac عند نشر المخطط:
$ helm install --name nginx --set rbac.create=true stable/nginx-ingress
@ flyer103
لا يزال لا يمكن أن تعمل.
نفس المشكلة هنا. لا يساعد تمكين 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 لاستبدالها
يجب ألا يكون لديك المزيد من الأخطاء.
تضمين التغريدة
رائعة! شكرًا ، لقد حللت هذه المشكلة.
شكرا جزيلا!
سررت بالمساعدة :)
noprom ، يرجى التحقق من رسالتي حول كيفية إعداد خوذة وجرافة باستخدام rbac لكل مساحة اسم
تضمين التغريدة
وظيفة رائعة!
شكرا!
ما ورد أعلاه لا يعمل لا يزال الحصول على
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 شكرًا جزيلاً ، إنه يعمل! لكن في كل مرة ننتشر في كتلة جديدة ، نحتاج إلى القيام بذلك؟ يا له من إزعاج!
تضمين التغريدة
إذا كنت تستخدم تعليمات التثبيت الرسمية فسيتعين عليك القيام بذلك:
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؟
محرك رأس الحرف - ترقية - أداة الحرث لحساب الخدمة
يعمل الأمر أعلاه على إصلاح هذه المشكلة ، نوصي بشدة بهذه الخطوة في البداية :)
التعليق الأكثر فائدة
هذا لأنه ليس لديك إذن بنشر الحارث ، أضف حسابًا له:
إخراج وحدة التحكم:
ثم قم بتشغيل الأمر أدناه للتحقق منه: