Kubernetes: Los volúmenes persistentes de RBAC no funcionan con espacios de nombres

Creado en 19 dic. 2016  ·  3Comentarios  ·  Fuente: kubernetes/kubernetes

INFORME DE ERROR

Versión de Kubernetes (use kubectl version ): Versión del cliente: version.Info {Major: "1", Minor: "5", GitVersion: "v1.5.1", GitCommit: "82450d03cb057bab0950214ef122b67c83fb11df", GitTreeState: "clean" , BuildDate: "2016-12-14T00: 57: 05Z", GoVersion: "go1.7.4", Compilador: "gc", Plataforma: "darwin / amd64"}
Versión del servidor: version.Info {Major: "1", Minor: "5+", GitVersion: "v1.5.1-3 + 10e41f22e4421c", GitCommit: "10e41f22e4421c9a14e9e6782c6375c199a07a86", GitTreeState: "clean" 2016-12 -15T10: 06: 44Z ", GoVersion:" go1.7.4 ", Compilador:" gc ", Plataforma:" linux / amd64 "}

Medio ambiente :

  • Proveedor de nube o configuración de hardware : openstack
  • SO (por ejemplo, de / etc / os-release): centos7
  • Kernel (por ejemplo, uname -a ): 3.10.0-327.36.3.el7.x86_64

Qué sucedió : Hemos habilitado la autenticación RBAC. Tenemos dos enlaces de roles diferentes:

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

y

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

Entonces tenemos dos usuarios diferentes: clusteradmin, que tiene acceso a todo en el clúster de kube y defaultadmin, que debería tener acceso a todos los recursos en el espacio de nombres predeterminado. La ejecución de comandos PV con clusteradmin funciona bien, cuando se usa defaultadmin en el espacio de nombres predeterminado, da error:

kubectl obtener pv
Error del servidor (prohibido): el servidor no permite el acceso al recurso solicitado (obtener volúmenes persistentes)

Error del servidor (prohibido): error al crear "db-pv.yaml": el servidor no permite el acceso al recurso solicitado (publicar volúmenes persistentes)

Lo que esperaba que sucediera : defaultadmin debería tener acceso a los recursos PV en el espacio de nombres definido (en mi caso predeterminado), porque cluster-admin clusterrole dice lo siguiente:

- apiGroups:
  - '*'
  attributeRestrictions: null
  resources:
  - '*'
  verbs:
  - '*'
- attributeRestrictions: null
  nonResourceURLs:
  - '*'
  verbs:
  - '*'

Lo importante aquí son los recursos *, pero parece que PV no es parte del comodín.

Cómo reproducirlo (de la forma más mínima y precisa posible):

  • habilitar RBAC
  • crear dos usuarios, clusteradmin y defaultadmin
  • agregue clusterrolebinding y rolebinding que se mencionó anteriormente en este ticket de error
  • ejecutar comandos PV en el espacio de nombres predeterminado con ambos usuarios

Comentario más útil

Los PV son objetos con ámbito de clúster. No existen en un espacio de nombres. Para obtener permiso para usar la API de PV con RBAC, necesita un enlace ClusterRole en el alcance del clúster con un ClusterRoleBinding .

Todos 3 comentarios

Tengo un problema similar, donde tengo algunos espacios de nombres, incluidos dev y default . Como "usuario dev" puedo crear un montón de recursos en el espacio dev nombres dev nombres

Error from server (Forbidden): error when creating "db-pv.yaml": the server does not allow access to the requested resource (post persistentvolumes)

Puedo crear el PV como usuario administrador en el espacio default nombres

Los PV no están conectados a un espacio de nombres

Los PV son objetos con ámbito de clúster. No existen en un espacio de nombres. Para obtener permiso para usar la API de PV con RBAC, necesita un enlace ClusterRole en el alcance del clúster con un ClusterRoleBinding .

¿Fue útil esta página
0 / 5 - 0 calificaciones