Versi Kubernetes (gunakan kubectl version
): Versi Klien: version.Info{Mayor:"1", Minor:"5", GitVersion:"v1.5.1", GitCommit:"82450d03cb057bab0950214ef122b67c83fb11df", GitTreeState:"clean" , BuildDate:"2016-12-14T00:57:05Z", GoVersion:"go1.7.4", Kompilator:"gc", Platform:"darwin/amd64"}
Versi Server: version.Info{Mayor:"1", Minor:"5+", GitVersion:"v1.5.1-3+10e41f22e4421c", GitCommit:"10e41f22e4421c9a14e9e6782c6375c199a07a86", GitTreeState:"clean", BuildDate:"2016-12 -15T10:06:44Z", GoVersion:"go1.7.4", Kompilator:"gc", Platform:"linux/amd64"}
Lingkungan :
uname -a
): 3.10.0-327.36.3.el7.x86_64Apa yang terjadi : Kami telah mengaktifkan otentikasi RBAC. Kami memiliki dua ikatan peran yang berbeda:
apiVersion: rbac.authorization.k8s.io/v1alpha1
kind: ClusterRoleBinding
metadata:
name: cluster-admin-custom
subjects:
- kind: ServiceAccount
name: default
namespace: kube-system
- kind: User
name: kubelet
namespace: kube-system
- kind: User
name: clusteradmin
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
dan
apiVersion: rbac.authorization.k8s.io/v1alpha1
kind: RoleBinding
metadata:
name: default-admin
namespace: default
subjects:
- kind: ServiceAccount
name: default
- kind: User
name: defaultadmin
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
Jadi kami memiliki dua pengguna yang berbeda: clusteradmin, yang memiliki akses ke semua yang ada di kube cluster dan defaultadmin, yang seharusnya memiliki akses ke semua sumber daya di namespace default. Menjalankan perintah PV dengan clusteradmin berfungsi dengan baik, saat menggunakan defaultadmin di namespace default memberikan kesalahan:
kubectl dapatkan pv
Kesalahan dari server (Terlarang): server tidak mengizinkan akses ke sumber daya yang diminta (dapatkan volume persisten)
Kesalahan dari server (Terlarang): kesalahan saat membuat "db-pv.yaml": server tidak mengizinkan akses ke sumber daya yang diminta (post persistentvolumes)
Apa yang Anda harapkan terjadi : defaultadmin harus memiliki akses ke sumber daya PV di namespace yang ditentukan (dalam kasus saya default), karena clusterrole cluster-admin mengatakan berikut:
- apiGroups:
- '*'
attributeRestrictions: null
resources:
- '*'
verbs:
- '*'
- attributeRestrictions: null
nonResourceURLs:
- '*'
verbs:
- '*'
Yang penting disini adalah resources *, tapi rasanya PV bukan bagian dari wildcard.
Cara memperbanyaknya (seminimal dan setepat mungkin):
Saya mengalami masalah serupa, di mana saya memiliki beberapa ruang nama termasuk dev
dan default
. Sebagai "pengguna dev" saya dapat membuat banyak sumber daya di ruang nama dev
, termasuk PVC, tetapi membuat PV sebagai "pengguna dev" di ruang nama dev
menghasilkan hal yang sama kesalahan seperti di atas:
Error from server (Forbidden): error when creating "db-pv.yaml": the server does not allow access to the requested resource (post persistentvolumes)
Saya dapat membuat PV sebagai pengguna admin di ruang nama default
, dan kemudian semuanya baik-baik saja.
PV tidak terhubung ke namespace
PV adalah objek lingkup cluster. Mereka tidak ada di namespace. Untuk mendapatkan izin menggunakan PV API dengan RBAC, Anda memerlukan ClusterRole yang terikat pada cakupan cluster dengan ClusterRoleBinding .
Komentar yang paling membantu
PV adalah objek lingkup cluster. Mereka tidak ada di namespace. Untuk mendapatkan izin menggunakan PV API dengan RBAC, Anda memerlukan ClusterRole yang terikat pada cakupan cluster dengan ClusterRoleBinding .