Saat memasang paket helm, saya mendapat error berikut seperti ini:
[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"
Ini adalah versi helm saya:
[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"}
Dan versi kubectl saya:
[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"}
Bantuan apa pun akan dihargai, terima kasih banyak!
Tampaknya Anda mengalami masalah terkait hak istimewa.
Anda dapat mengaktifkan rbac di saat menerapkan bagan:
$ helm install --name nginx --set rbac.create=true stable/nginx-ingress
@ pamflet3
Ini masih tidak bisa bekerja.
Masalah yang sama disini. Mengaktifkan rbac tidak membantu.
$ 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"
Bantuan akan sangat dihargai!
Yang perlu Anda lakukan adalah memberikan akses kepada tiller (melalui akun layanan default) untuk menginstal sumber daya di namespace default. Lihat https://github.com/kubernetes/helm/blob/master/docs/service_accounts.md
Hai, @bacongobbler
Terimakasih atas bantuannya. Saya mengikuti instruksi Anda yang disebutkan di atas, dan saya telah melakukan hal-hal berikut:
Pertama-tama, saya mengatur ulang anakan:
helm reset --force
Setelah melakukan ini, saya membuat file yaml RBAC:
[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
Dan kemudian init anakan saya:
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
Namun, anakan tidak berhasil dipasang:
[root@k8s-master3 ~]# helm version
Client: &version.Version{SemVer:"v2.7.0", GitCommit:"08c1144f5eb3e3b636d9775617287cc26e53dba4", GitTreeState:"clean"}
Error: cannot connect to Tiller
Dan saya menjahit penerapan di namespace kube-system
seperti ini:
[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
Ada ide tentang bagaimana mengatasi masalah ini?
Terima kasih sebelumnya!
@noprom coba ini
hapus penyebaran anakan secara manual
buat konfigurasi rbac ini untuk anakan
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: ""
jalankan delete (yes delete) pada konfigurasi rbac itu
jalankan buat lagi
kemudian jalankan helm init --upgrade untuk mengganti
Anda seharusnya tidak memiliki kesalahan lagi.
@innovia
Bagus! Terima kasih, saya telah menyelesaikan masalah ini.
Terima kasih banyak!
Senang bisa membantu :)
@noprom silakan periksa posting saya tentang cara mengatur helm dan anakan dengan rbac per namespace
@innovia
Pos yang fantastis! 😄
Terima kasih!
di atas tidak berhasil Masih mendapatkan
namespaces "default" is forbidden: User "system:serviceaccount:kube-system:default" cannot get namespaces in the namespace "default"
Itu karena Anda tidak memiliki izin untuk menyebarkan anakan, tambahkan akun untuk itu:
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"}}}}'
Keluaran konsol:
serviceaccount "tiller" created
clusterrolebinding "tiller-cluster-rule" created
deployment "tiller-deploy" patched
Kemudian jalankan perintah di bawah ini untuk memeriksanya:
helm list
helm repo update
helm install --name nginx-ingress stable/nginx-ingress
@ykfq Terima kasih banyak, berhasil! Tetapi setiap kali, kami menerapkan pada cluster baru, kami perlu melakukan ini? Benar-benar merepotkan!
@ antran89
Jika Anda menggunakan instruksi pemasangan anakan resmi, Anda harus melakukannya:
helm init
Nah, ada cara lain untuk membuatnya lebih mudah - install via file 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: ""
Kemudian buat sumber:
kubectl create -f tiller.yaml
Pastikan untuk memeriksa layanan Anda.
konten yaml di atas diekspor dari cluster yang sedang berjalan, menggunakan perintah:
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 ini belum diuji, jika ada pertanyaan, beri komentar.
@ykfq Saya tidak suka ide memberikan hak istimewa admin cluster penuh Tiller, tetapi tidak ada yang berhasil untuk saya. Saya mencoba mengikuti contoh ini. Saya mencoba membatasi Tiller untuk bertindak hanya pada ruang nama, saya membiarkannya bertindak.
Tetapi selalu mengalami masalah ini (sedang menerapkan Concourse):
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"
Adakah ide tentang bagaimana membuat contoh spesifik itu bekerja? Saya mengubah beberapa parameter di sekitar, seluruh YAML dengan RBAC adalah yang ini:
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
helm init --upgrade --service-account tiller
@brunoban helm v3 akan menghapus anakan jadi dari apa yang saya pahami izinnya adalah oleh pengguna yang menerapkannya
@innovia Oh ... Saya tidak tahu itu. Akan mencoba untuk mempercepat sekarang. Terima kasih!
kemudian jalankan helm init --upgrade untuk mengganti
@innovia Di mana harus meletakkan file konfigurasi rbac?
@cjbottaro apakah Anda membaca posting yang saya tulis Hwo untuk mengatur helm dan anakan per namespace ?
Saya tidak mengikuti pertanyaan Anda, dapatkah Anda menjelaskan kembali?
@innovia Nevermind, saya menemukan
kubectl create -f tiller.yaml
helm init --upgrade --service-account tiller
ini berhasil untuk saya:
kubectl --namespace kube-system membuat layanan akun tiller
kubectl buat clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount = kube- system: tiller
helm init --service-account tiller --upgrade
Saya mengikuti dokumentasi Helm resmi untuk "Menyebarkan Tiller di namespace, dibatasi untuk menerapkan sumber daya hanya di namespace itu". Ini skrip bash saya:
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"
Menjalankan helm upgrade
memberi saya kesalahan berikut:
Kesalahan: UPGRADE GAGAL: configmaps dilarang: Pengguna " system: serviceaccount : kube- system: default " tidak dapat mencantumkan configmaps di namespace "kube-system"
Apakah ada bug di dokumentasi resmi? Apakah saya salah membacanya?
Apa perintah lengkap untuk helm init
? Bisakah Anda membuka tiket terpisah untuk ini?
@bacongobbler Memindahkan masalah ke sini https://github.com/helm/helm/issues/4933
di atas tidak berhasil Masih mendapatkan
namespaces "default" is forbidden: User "system:serviceaccount:kube-system:default" cannot get namespaces in the namespace "default"
Ikuti di bawah Perintah: -
helm init --service-account tiller --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/ tiller: v2.14.0 --stable-repo-url https: //kubernetes.oss-cn-hangzhou.aliyuncs .com / grafik
Yang perlu Anda lakukan adalah memberikan akses kepada tiller (melalui akun layanan default) untuk menginstal sumber daya di namespace default. Lihat https://github.com/kubernetes/helm/blob/master/docs/service_accounts.md
Nama file sekarang rbac.md
dan tautannya ada di https://github.com/helm/helm/blob/master/docs/rbac.md.
Itu karena Anda tidak memiliki izin untuk menyebarkan anakan, tambahkan akun untuk itu:
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"}}}}'
Keluaran konsol:
serviceaccount "tiller" created clusterrolebinding "tiller-cluster-rule" created deployment "tiller-deploy" patched
Kemudian jalankan perintah di bawah ini untuk memeriksanya:
helm list helm repo update helm install --name nginx-ingress stable/nginx-ingress
Akan sangat bagus jika dokumen instalasi anakan diperbarui dengan instruksi yang tepat ini
Saya makan yaml berikut
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
Jika saya benar, saya kehilangan tiller deployment
di yaml ini?
helm init --upgrade --service-account tiller
Perintah di atas memperbaiki masalah ini, sangat merekomendasikan langkah ini pada awalnya :)
Komentar yang paling membantu
Itu karena Anda tidak memiliki izin untuk menyebarkan anakan, tambahkan akun untuk itu:
Keluaran konsol:
Kemudian jalankan perintah di bawah ini untuk memeriksanya: