K111ubernetes 的 ~/.kube/config 文件中可以包含多个:

  • Clusters(集群地址)
  • Users(用户凭证)
  • Contexts(上下文:绑定 cluster + user + namespace)

你当前有:

  • 上下文 internal(管理员)
  • 上下文 xsx@internalCluster(受限用户)

你想 删掉 internal,只留 xsx@internalCluster


✅ 正确操作步骤

📌 第一步:确认当前所有上下文

kubectl config get-contexts

输出示例:            

CURRENT   NAME                  CLUSTER          AUTHINFO     NAMESPACE
*         xsx@internalCluster   internalCluster  xsx          ydgt-captcha
          internal              internalCluster  user

为 xsx 添加 RBAC 权限

✅ 第一步:创建 Role(权限定义)


Yaml

编辑

# role-xsx.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: xsx-role
  namespace: ydgt-captcha  # 限定在该命名空间
rules:
- apiGroups: [""]
  resources: ["pods", "services"]
  verbs: ["get", "list", "watch"]
- apiGroups: ["apps"]
  resources: ["deployments", "replicasets"]
  verbs: ["get", "list", "watch"]

应用:

kubectl apply -f role-xsx.yaml

✅ 第二步:创建 RoleBinding(绑定角色到用户)

yaml

# rolebinding-xsx.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: xsx-rolebinding
  namespace: ydgt-captcha
subjects:
- kind: ServiceAccount
  name: xsx
  namespace: ydgt-captcha
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: xsx-role
kubectl apply -f rolebinding-xsx.yaml

✅ 第三步:验证是否生效

切换到 xsx 用户上下文:

kubectl config use-context xsx@internalCluster

然后测试:

kubectl get pods
kubectl get services
kubectl get deployments

✅ 应该都能成功!


💡 常见错误排查

错误原因解决
cannot list resource "pods"没有 Role 或 RoleBinding创建 RBAC
no permissions to accessRole 中未包含对应资源修改 rules
namespace not found上下文配置错误检查 kubectl config get-contexts

📄 完整操作流程总结


Bash

编辑

# 1. 创建 ServiceAccount(已做)
kubectl create serviceaccount xsx -n ydgt-captcha

# 2. 创建 token secret(已做)
kubectl apply -f xsx-token.yaml

# 3. 创建 Role(新增)
kubectl apply -f role-xsx.yaml

# 4. 创建 RoleBinding(新增)
kubectl apply -f rolebinding-xsx.yaml

# 5. 切换上下文
kubectl config use-context xsx@internalCluster

# 6. 测试
kubectl get pods
kubectl get deployments

📌 第二步:删除不需要的上下文

kubectl config delete-context internal

✅ 成功后,该上下文会从 ~/.kube/config 中移除。

更多推荐