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 "}
環境:
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はワイルドカードの一部ではないように感じます。
それを再現する方法(可能な限り最小限かつ正確に):
同様の問題が発生しており、 dev
やdefault
などの名前空間がいくつかあります。 「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でクラスタスコープでバインドする必要があります。
最も参考になるコメント
PVはクラスタースコープのオブジェクトです。 それらは名前空間には存在しません。 RBACとPVのAPIを使用する許可を取得するには、ClusterRoleがClusterRoleBindingでクラスタスコープでバインドする必要があります。