参考 https://kubernetes.io/zh/docs/tasks/run-application/access-api-from-pod/
某些情况下,我们会希望在一个 pod 中能够使用 kubectl 对本集群进行操作,例如
argo workflow 中,需要一个 task 可以调用 kubectl 来修改某些资源
方法一、
最笨的方式是,mount kubeconfig yaml 文件,这种情况下你使用的是 config 文件中的 user ,这里就不讨论了,因为这个方式实在是太笨了
方法二、
使用 kubectl 镜像,然后赋给 pod 对应的 RBAC 权限,这样 pod 就可以通过 RBAC 绑定的 service account 对集群进行操作
使用的镜像是 bitnami/kubectl
使用的 entrypoint 是 /bin/bash
通过 kubectl get nodes 尝试获取集群信息
直接给 Namespace 的 default sa添加一个 cluster级的 admin role
kubectl create clusterrolebinding permissive-binding --clusterrole=cluster-admin --group=system:serviceaccounts:lizhe
clusterrolebinding.rbac.authorization.k8s.io/permissive-binding created
然后我们来尝试一下