Skip to main content

🛡️ 管理测试环境手册 | Admin Test Environment Guide

本手册面向集群管理员,提供测试环境的创建、权限管理、资源监控和故障处理等完整操作指南。
本环境采用多租户隔离设计,通过 RBAC 和 ResourceQuota 实现严格的权限控制和资源隔离。

📋 目录 | Table of Contents

创建新的开发环境命名空间
生成开发人员 kubeconfig 配置
配置和管理资源限制
检查环境状态和权限隔离
在线扩容和环境清理

🏗️ 环境创建 | Environment Creation

创建新的开发环境

1

创建命名空间

kubectl create namespace dev-1
替换 dev-1 为对应的环境编号(dev-2, dev-3, dev-4 等)。
2

应用资源配额

kubectl apply -f manifests/dev/admin/dev-1/quota.yaml
kubectl apply -f manifests/dev/admin/dev-1/limits.yaml
这将为环境设置 CPU、内存、存储等资源限制。
3

验证创建

# 查看命名空间
kubectl get ns dev-1

# 查看配额
kubectl describe quota dev-quota -n dev-1

资源配额配置示例

apiVersion: v1
kind: ResourceQuota
metadata:
  name: dev-quota
  namespace: dev-1
spec:
  hard:
    requests.cpu: "4"
    requests.memory: 8Gi
    limits.cpu: "4"
    limits.memory: 8Gi
    persistentvolumeclaims: "5"
    requests.storage: 20Gi
    pods: "20"
apiVersion: v1
kind: LimitRange
metadata:
  name: dev-limits
  namespace: dev-1
spec:
  limits:
  - default:
      cpu: "100m"
      memory: "256Mi"
    defaultRequest:
      cpu: "100m"
      memory: "256Mi"
    type: Container

🔐 权限管理 | Permission Management

生成开发人员 kubeconfig

生成的 kubeconfig 文件包含敏感 Token,请妥善保管,严禁泄露。
1

准备脚本

cd manifests/dev/admin
chmod +x create-dev-kubeconfig.sh
2

编辑脚本(如需要)

如需修改命名空间,编辑脚本中的 NAMESPACE 变量。
3

执行脚本

./create-dev-kubeconfig.sh dev-1
脚本会自动执行:
  • 创建 ServiceAccount (dev-user)
  • 创建 RoleBinding(绑定 edit 角色)
  • 生成 Token 并导出为 kubeconfig 格式
4

获取配置文件

执行成功后,会在当前目录生成 dev-1-kubeconfig.yaml

脚本工作原理

创建 ServiceAccount

在目标 Namespace 创建 dev-user ServiceAccount

绑定角色

将 K8s 原生的 edit 角色绑定给 ServiceAccount(仅限该 Namespace)

生成 Token

创建 Secret 并提取 Token,生成标准 kubeconfig 格式

分发给开发人员

1

安全传输

通过安全渠道(加密邮件、安全聊天工具等)将 dev-1-kubeconfig.yaml 发送给对应的开发人员。
2

使用指导

指导开发人员:
  • 保存文件到本地安全位置
  • 设置 KUBECONFIG 环境变量
  • 验证连接:kubectl get pods -n dev-1

📊 资源配额管理 | Resource Quota Management

查看配额使用情况

# 查看所有开发环境的配额
for ns in dev-1 dev-2 dev-3 dev-4; do
  echo "=== $ns ==="
  kubectl describe quota dev-quota -n $ns
done

在线扩容环境

更新 ResourceQuota热更新,不会影响正在运行的 Pod,只会影响新创建或重启后的 Pod 调度。
1

修改配额文件

编辑 manifests/dev/admin/dev-1/quota.yaml,调大 hard 部分的数值:
spec:
  hard:
    requests.cpu: "8"        # 从 4 增加到 8
    requests.memory: 16Gi    # 从 8Gi 增加到 16Gi
    limits.cpu: "8"
    limits.memory: 16Gi
2

应用更改

kubectl apply -f manifests/dev/admin/dev-1/quota.yaml
3

验证生效

kubectl describe quota dev-quota -n dev-1
查看 UsedHard 列,确认新限制已生效。
如果新限制调小了且当前已用量超标,现有 Pod 仍会运行,但无法再启动任何新 Pod。

🔍 监控与验证 | Monitoring & Verification

检查命名空间状态

# 查看所有开发相关的命名空间
kubectl get ns | grep dev

# 查看特定环境的资源
kubectl get pods,svc,sa -n dev-1

验证权限隔离

利用 kubectl auth can-i 模拟开发用户身份验证权限隔离:
# 验证 dev-user 可以在其所属 namespace 获取 Pod (应返回 yes)
kubectl auth can-i get pods -n dev-1 --as=system:serviceaccount:dev-1:dev-user

管理员验证方法

直接指定 kubeconfig 文件运行命令:
kubectl --kubeconfig=./dev-1-kubeconfig.yaml get pods
无需切换终端,可以同时管理生产环境和验证开发环境。
如果您希望在同一个 kubectl 中自由切换上下文:
  1. 合并配置文件(仅当前终端生效):
    export KUBECONFIG=$HOME/.kube/config:$(pwd)/dev-1-kubeconfig.yaml
    
  2. 查看所有上下文
    kubectl config get-contexts
    
    您会看到 dev-user-dev-1-context 和原来的 default 上下文。
  3. 切换上下文
    kubectl config use-context dev-user-dev-1-context
    

🛠️ 常用管理命令 | Common Admin Commands

批量检查资源

for ns in dev-1 dev-2 dev-3 dev-4; do
  echo "=== $ns ==="
  kubectl get pods,svc -n $ns
done

快速清理

如果需要删除并重建测试环境:
# 删除 namespace 会自动清理其下的所有 sa, secret 和 rolebinding
kubectl delete ns dev-1

# 重新创建
kubectl create namespace dev-1
kubectl apply -f manifests/dev/admin/dev-1/quota.yaml
kubectl apply -f manifests/dev/admin/dev-1/limits.yaml
删除命名空间会永久删除该环境下的所有资源,包括持久化存储(PVC)。请谨慎操作!

📈 资源监控 | Resource Monitoring

实时监控面板

访问 Grafana 监控面板 查看:
  • 集群整体资源使用情况
  • 各命名空间的资源消耗
  • Pod 运行状态和健康度

命令行监控

# 查看节点资源
kubectl top nodes

# 查看所有命名空间的资源使用
kubectl top pods --all-namespaces

# 查看特定环境的资源使用
kubectl top pods -n dev-1

🔧 故障处理 | Troubleshooting

常见问题

检查步骤
  1. 验证 ServiceAccount 是否存在:kubectl get sa -n dev-1
  2. 检查 RoleBinding:kubectl get rolebinding -n dev-1
  3. 验证 Token Secret:kubectl get secret -n dev-1 | grep dev-user
  4. 重新生成 kubeconfig
解决方法
  1. 查看当前使用:kubectl describe quota dev-quota -n dev-1
  2. 评估是否需要扩容
  3. 修改配额文件并应用
  4. 通知开发人员资源已扩容
验证隔离
# 验证 dev-1 用户无法访问 dev-2
kubectl auth can-i get pods -n dev-2 --as=system:serviceaccount:dev-1:dev-user
如果返回 yes,说明权限配置有误,需要检查 RoleBinding。

测试环境使用手册

开发人员操作指南

基础设施概览

了解集群架构

部署指南

生产环境部署操作

YAML 规范

配置文件标准格式
定期检查各环境的资源使用情况,及时响应开发人员的资源需求,确保环境稳定运行。