k8s 如果只提供图形化管理界面,可以安装 bitnami/kubectl 用于执行命令。
kubectl-commands 官方文档:https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands
部署
创建一个 Deployment,镜像地址为 bitnami/kubectl:latest
或指定具体版本 bitnami/kubectl:1.32.4
。
长期运行
bitnami/kubectl 镜像是一次性运行的,如希望这个镜像可以长期运行,则加上命令:command: ["/bin/sh", "-c", "sleep infinity"]
,图像界面则填入 "/bin/sh" "-c" "sleep infinity"
。
权限设置
Deployment 默认关联到 default
服务账号(ServiceAccount),这个账号没有足够的权限运行 kubectl 命令。如果希望镜像里管理整个集群,可以创建一个 ServiceAccount关联自带的集群管理员角色 cluster-admin
,拥有整个集群的管理权限。
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: kubectl-tool-sa
namespace: kube-controller # 替换为自己的 namespace
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: kubectl-tool-role-binding
subjects:
- kind: ServiceAccount
name: kubectl-tool-sa
namespace: kube-controller # 替换为自己的 namespace
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
或
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: ujcms-kubectl-sa
namespace: ujcms # 替换为自己的 namespace
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: ujcms-kubectl-role-binding
subjects:
- kind: ServiceAccount
name: ujcms-kubectl-sa
namespace: ujcms # 替换为自己的 namespace
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
然后在 Deployment 高级设置中,设置 ServiceAcountName 为上面创建的 ServiceAccount kubectl-tool-sa
或 ujcms-kubectl-sa
。