1

1 つの k8s ポッドで k8s API を呼び出そうとしています。ただし、次の権限の問題が発生します。

User "system:serviceaccount:default:flink" cannot list resource "nodes" in API group "" at the cluster scope.

私の yaml ファイルでは、既にRole&を指定していますRoleBinding。ここで何が恋しいですか?

---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: flink
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: zeppelin-server-role
rules:
- apiGroups: [""]
  resources: ["pods", "services", "configmaps", "deployments", "nodes"]
  verbs: ["create", "get", "update", "patch", "list", "delete", "watch"]
- apiGroups: ["rbac.authorization.k8s.io"]
  resources: ["roles", "rolebindings"]
  verbs: ["bind", "create", "get", "update", "patch", "list", "delete", "watch"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: zeppelin-server-role-binding
  namespace: default
subjects:
- kind: ServiceAccount
  name: flink
roleRef:
  kind: ClusterRole
  name: zeppelin-server-role
  apiGroup: rbac.authorization.k8s.io
4

1 に答える 1

1

Kubernetes に zeppelin-server をデプロイしていますね。サービス アカウントを含む yaml ファイルは問題ないように見えますが、これが機能することを確認するには、次の手順に従う必要があります。

  • kubectl get clusterrole

zeppelin-server-role役割を取得する必要があります。

  • アカウント ' flink ' が clusterrole "zeppelin-server-role" にバインドされているかどうかを確認してください

kubectl get clusterrole clusterrolebinding

存在しない場合は、次のコマンドで作成できます。

kubectl create clusterrolebinding zeppelin-server-role-binding --clusterrole=zeppelin-server-role --serviceaccount=default:flink

  • 最後に、あなたが本当にこのアカウントとして行動しているかどうかを確認してください:

kubectl get deploy flink-deploy -o yaml

出力から「serviceAccount」と「serviceAccountName」の設定が表示されない場合は、次のようになります。

...
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
...

次に、flink で使用するこのアカウントを追加します。

kubectl patch deploy flink-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'

于 2021-10-12T13:12:31.960 に答える