Kubernetes: RBAC永続ボリュームが名前空間で機能していません

作成日 2016年12月19日  ·  3コメント  ·  ソース: kubernetes/kubernetes

バグレポート

Kubernetesバージョンkubectl version ):クライアントバージョン:version.Info {Major: "1"、Minor: "5"、GitVersion: "v1.5.1"、GitCommit: "82450d03cb057bab0950214ef122b67c83fb11df"、GitTreeState: "clean" 、BuildDate: "2016-12-14T00:57:05Z"、GoVersion: "go1.7.4"、コンパイラ: "gc"、プラットフォーム: "darwin / amd64"}
サーバーバージョン:version.Info {Major: "1"、Minor: "5 +"、GitVersion: "v1.5.1-3 + 10e41f22e4421c"、GitCommit: "10e41f22e4421c9a14e9e6782c6375c199a07a86"、GitTreeState: "clean"、BuildDate: "2016-12 -15T10:06:44Z "、GoVersion:" go1.7.4 "、コンパイラ:" gc "、プラットフォーム:" linux / amd64 "}

環境

  • クラウドプロバイダーまたはハードウェア構成:openstack
  • OS (例:/ etc / os-releaseから):centos7
  • カーネル(例: uname -a ):3.10.0-327.36.3.el7.x86_64

何が起こったのか:RBAC認証を有効にしました。 2つの異なるロールバインディングがあります。

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

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

したがって、2つの異なるユーザーがあります。kubeクラスター内のすべてにアクセスできるclusteradminと、デフォルトの名前空間内のすべてのリソースにアクセスできるdefaultadminです。 clusteradminでPVコマンドを実行すると、正常に機能します。デフォルトの名前空間でdefaultadminを使用すると、エラーが発生します。

kubectl get pv
サーバーからのエラー(禁止):サーバーは要求されたリソースへのアクセスを許可しません(persistentvolumesを取得します)

サーバーからのエラー(禁止):「db-pv.yaml」の作成時のエラー:サーバーは要求されたリソースへのアクセスを許可しません(永続ボリュームの後)

予想されること:cluster-admin clusterroleは次のように述べているため、defaultadminは定義済み(私の場合はdefault)名前空間のPVリソースにアクセスできる必要があります。

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

ここで重要なのはリソース*ですが、PVはワイルドカードの一部ではないように感じます。

それを再現する方法(可能な限り最小限かつ正確に):

  • RBACを有効にする
  • clusteradminとdefaultadminの2人のユーザーを作成します
  • このバグチケットで前述したclusterrolebindingとrolebindingを追加します
  • 両方のユーザーでデフォルトの名前空間でPVコマンドを実行する

最も参考になるコメント

PVはクラスタースコープのオブジェクトです。 それらは名前空間には存在しません。 RBACとPVのAPIを使用する許可を取得するには、ClusterRoleがClusterRoleBindingでクラスタスコープでバインドする必要があります。

全てのコメント3件

同様の問題が発生しており、 devdefaultなどの名前空間がいくつかあります。 「DEVユーザー」として、私は、内のリソースの束を作成することができますdev PVCを含む名前空間、しかしで「DEVユーザー」としてPVを作成するdevと同じで、名前空間の結果上記のエラー:

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

default名前空間でadminユーザーとしてPVを作成できれば、すべて問題ありません。

PVは名前空間に接続されていません

PVはクラスタースコープのオブジェクトです。 それらは名前空間には存在しません。 RBACとPVのAPIを使用する許可を取得するには、ClusterRoleがClusterRoleBindingでクラスタスコープでバインドする必要があります。

このページは役に立ちましたか?
0 / 5 - 0 評価