本文档风哥主要介绍Rancher项目与命名空间多租户隔离实战,包括Rancher数据库多租户概念、Rancher数据库项目管理、Rancher数据库命名空间管理、Rancher数据库多租户准备、Rancher数据库多租户要求、Rancher数据库多租户规划、Rancher数据库创建项目、Rancher数据库创建命名空间、Rancher数据库配置多租户隔离、Rancher数据库多租户管理、Rancher数据库多租户测试、Rancher数据库多租户监控等内容,风哥教程参考Rancher官方文档项目管理、命名空间管理、多租户等内容,适合运维人员在学习和测试中使用,如果要应用于生产环境则需要自行确认。
Part01-基础概念与理论知识
1.1 Rancher数据库多租户概念
Rancher数据库多租户是指在一个Rancher集群中为多个租户(团队、部门或客户)提供隔离的资源管理环境。多租户隔离包括资源隔离、网络隔离、权限隔离等多个层面。Rancher通过项目和命名空间实现多租户隔离,每个项目可以包含多个命名空间,每个命名空间可以包含多个资源。多租户隔离可以确保不同租户之间的资源互不干扰,提高资源利用率和安全性。更多视频教程www.fgedu.net.cn
- 资源隔离:不同租户使用不同的资源
- 网络隔离:不同租户使用不同的网络
- 权限隔离:不同租户拥有不同的权限
- 配额管理:限制租户资源使用量
- 独立管理:每个租户独立管理自己的资源
1.2 Rancher数据库项目管理
Rancher数据库项目是Rancher中用于组织和管理资源的逻辑单元。一个项目可以包含多个命名空间,每个命名空间可以包含多个资源。项目可以用于实现多租户隔离,每个项目代表一个租户。项目可以配置资源配额、网络策略、权限等。项目管理包括项目的创建、删除、配置等操作。学习交流加群风哥微信: itpux-com
- 逻辑单元:用于组织和管理资源
- 多租户隔离:每个项目代表一个租户
- 资源配额:限制租户资源使用量
- 网络策略:配置租户网络隔离
- 权限管理:配置租户访问权限
1.3 Rancher数据库命名空间管理
Rancher数据库命名空间是Kubernetes中用于隔离资源的机制。命名空间可以将一个物理集群划分为多个虚拟集群,每个命名空间拥有独立的资源集合。命名空间可以用于实现多租户隔离,每个命名空间代表一个租户的一个环境(如开发、测试、生产)。命名空间可以配置资源配额、网络策略、权限等。命名空间管理包括命名空间的创建、删除、配置等操作。学习交流加群风哥QQ113257174
- 资源隔离:隔离不同租户的资源
- 环境隔离:隔离不同环境的资源
- 资源配额:限制命名空间资源使用量
- 网络策略:配置命名空间网络隔离
- 权限管理:配置命名空间访问权限
Part02-生产环境规划与建议
2.1 Rancher数据库多租户准备
Rancher数据库多租户准备:
# 1. Rancher Server准备
– Rancher Server已部署
– Rancher Server可访问
– Rancher Server配置正确
# 2. 租户需求分析
– 确定租户数量
– 确定租户类型
– 确定租户资源需求
– 确定租户权限需求
# 3. 项目需求分析
– 确定项目数量
– 确定项目类型
– 确定项目资源配额
– 确定项目网络策略
# 4. 命名空间需求分析
– 确定命名空间数量
– 确定命名空间类型
– 确定命名空间资源配额
– 确定命名空间网络策略
# 5. 权限需求分析
– 确定租户用户
– 确定租户角色
– 确定租户权限
– 确定租户访问范围
2.2 Rancher数据库多租户要求
Rancher数据库多租户要求:
# 项目要求
– 项目名称:唯一标识
– 项目描述:清晰易懂
– 项目配额:明确具体
– 项目策略:明确具体
# 命名空间要求
– 命名空间名称:唯一标识
– 命名空间描述:清晰易懂
– 命名空间配额:明确具体
– 命名空间策略:明确具体
# 资源配额要求
– CPU配额:明确具体
– 内存配额:明确具体
– 存储配额:明确具体
– Pod配额:明确具体
# 网络策略要求
– 网络隔离:明确具体
– 网络访问:明确具体
– 网络规则:明确具体
– 网络监控:明确具体
2.3 Rancher数据库多租户规划
Rancher数据库多租户规划:
# 租户规划
租户1:fgedu-team1(开发团队1)
租户2:fgedu-team2(开发团队2)
租户3:fgedu-team3(开发团队3)
# 项目规划
项目1:fgedu-project1(开发团队1项目)
项目2:fgedu-project2(开发团队2项目)
项目3:fgedu-project3(开发团队3项目)
# 命名空间规划
项目1:
命名空间1:fgedu-project1-dev(开发环境)
命名空间2:fgedu-project1-test(测试环境)
命名空间3:fgedu-project1-prod(生产环境)
项目2:
命名空间1:fgedu-project2-dev(开发环境)
命名空间2:fgedu-project2-test(测试环境)
命名空间3:fgedu-project2-prod(生产环境)
项目3:
命名空间1:fgedu-project3-dev(开发环境)
命名空间2:fgedu-project3-test(测试环境)
命名空间3:fgedu-project3-prod(生产环境)
# 资源配额规划
项目1:
CPU配额:10核
内存配额:20GB
存储配额:100GB
Pod配额:100个
项目2:
CPU配额:10核
内存配额:20GB
存储配额:100GB
Pod配额:100个
项目3:
CPU配额:10核
内存配额:20GB
存储配额:100GB
Pod配额:100个
Part03-生产环境项目实施方案
3.1 Rancher数据库创建项目
3.1.1 Rancher数据库通过Web界面创建项目
# 步骤1:登录Rancher管理界面
# 步骤2:点击”集群” – 选择集群 – 点击”项目/命名空间”
# 步骤3:点击”创建项目”按钮
# 步骤4:填写项目信息:
# 项目名称:fgedu-project1
# 项目描述:Rancher数据库开发团队1项目
# 集群:fgedu-rke2-cluster
# 步骤5:配置项目配额:
# CPU配额:10核
# 内存配额:20GB
# 存储配额:100GB
# Pod配额:100个
# 步骤6:点击”创建”按钮
# 通过API创建项目
[root@rancher ~]# curl -k -X POST \
-H “Content-Type: application/json” \
-u “admin:password” \
https://192.168.1.100/v3/projects \
-d ‘{
“name”: “fgedu-project1”,
“description”: “Rancher数据库开发团队1项目”,
“clusterId”: “c-1234567890”,
“resourceQuota”: {
“limit”: {
“cpu”: “10”,
“memory”: “20Gi”,
“storage”: “100Gi”,
“pods”: “100”
}
}
}’
{
“id”: “p-1234567890”,
“type”: “project”,
“name”: “fgedu-project1”,
“description”: “Rancher数据库开发团队1项目”,
“clusterId”: “c-1234567890”,
“resourceQuota”: {
“limit”: {
“cpu”: “10”,
“memory”: “20Gi”,
“storage”: “100Gi”,
“pods”: “100”
}
}
}
# 查看项目列表
[root@rancher ~]# curl -k -u “admin:password” \
https://192.168.1.100/v3/projects
{
“data”: [
{
“id”: “p-1234567890”,
“type”: “project”,
“name”: “fgedu-project1”,
“description”: “Rancher数据库开发团队1项目”
},
{
“id”: “p-2345678901”,
“type”: “project”,
“name”: “fgedu-project2”,
“description”: “Rancher数据库开发团队2项目”
}
]
}
3.2 Rancher数据库创建命名空间
3.2.1 Rancher数据库通过kubectl创建命名空间
[root@rancher ~]# kubectl create namespace fgedu-project1-dev
namespace/fgedu-project1-dev created
[root@rancher ~]# kubectl create namespace fgedu-project1-test
namespace/fgedu-project1-test created
[root@rancher ~]# kubectl create namespace fgedu-project1-prod
namespace/fgedu-project1-prod created
# 查看命名空间列表
[root@rancher ~]# kubectl get namespaces
NAME STATUS AGE
cattle-system Active 10d
cattle-monitoring-system Active 10d
default Active 10d
fgedu-project1-dev Active 1m
fgedu-project1-test Active 1m
fgedu-project1-prod Active 1m
kube-system Active 10d
# 查看命名空间详情
[root@rancher ~]# kubectl describe namespace fgedu-project1-dev
Name: fgedu-project1-dev
Labels:
Annotations:
Status: Active
Resource Quotas
Name:
Limit Ranges
Name:
No resource quota.
No LimitRange resource.
# 配置命名空间资源配额 # 查看网络策略详情 # 配置命名空间标签 [root@rancher ~]# kubectl label namespace kube-system name=kube-system # 查看命名空间标签 # 通过API管理项目 # 删除项目 # 在fgedu-project1-test命名空间中创建Pod # 查看Pod列表 [root@rancher ~]# kubectl get pods -n fgedu-project1-test # 测试跨命名空间访问 # 测试同命名空间访问 If you see this page, the nginx web server is successfully installed and # 测试资源配额 # 查看命名空间Pod资源使用情况 # 查看命名空间资源配额使用情况 # 通过Web界面监控租户资源使用 Rancher数据库多租户最佳实践: Rancher数据库多租户问题排查: # 问题1:命名空间无法访问 # 问题2:资源配额超限 # 问题3:权限不足 # 问题4:网络策略不生效 Rancher数据库多租户维护: # 1. 定期检查 # 2. 定期审计 # 3. 定期更新 # 4. 定期清理 # 5. 定期备份 本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
[root@rancher ~]# cat <3.3 Rancher数据库配置多租户隔离
3.3.1 Rancher数据库配置网络策略
[root@rancher ~]# cat <
[root@rancher ~]# kubectl describe networkpolicy fgedu-project1-dev-network-policy -n fgedu-project1-dev
Name: fgedu-project1-dev-network-policy
Namespace: fgedu-project1-dev
Created on: 2026-04-10 10:00:00 +0000 UTC
Labels:
Annotations:
Spec:
PodSelector:
Allowing ingress traffic:
To Port:
From:
NamespaceSelector: name=fgedu-project1-dev
Allowing egress traffic:
To Port:
To:
NamespaceSelector: name=fgedu-project1-dev
To:
NamespaceSelector: name=kube-system
Policy Types: Ingress, Egress
[root@rancher ~]# kubectl label namespace fgedu-project1-dev name=fgedu-project1-dev
namespace/fgedu-project1-dev labeled
namespace/kube-system labeled
[root@rancher ~]# kubectl get namespaces –show-labels
NAME STATUS AGE LABELS
cattle-system Active 10d
cattle-monitoring-system Active 10d
default Active 10d
fgedu-project1-dev Active 5m name=fgedu-project1-dev
fgedu-project1-test Active 5m
fgedu-project1-prod Active 5m
kube-system Active 10d name=kube-system
Part04-生产案例与实战讲解
4.1 Rancher数据库多租户管理
4.1.1 Rancher数据库管理项目
# 步骤1:登录Rancher管理界面
# 步骤2:点击”集群” – 选择集群 – 点击”项目/命名空间”
# 步骤3:查看项目列表
# 步骤4:选择项目进行操作:
# 编辑项目信息
# 配置项目配额
# 配置项目权限
# 删除项目
# 更新项目配额
[root@rancher ~]# curl -k -X PUT \
-H “Content-Type: application/json” \
-u “admin:password” \
https://192.168.1.100/v3/projects/p-1234567890 \
-d ‘{
“resourceQuota”: {
“limit”: {
“cpu”: “20”,
“memory”: “40Gi”,
“storage”: “200Gi”,
“pods”: “200”
}
}
}’
[root@rancher ~]# curl -k -X DELETE \
-u “admin:password” \
https://192.168.1.100/v3/projects/p-2345678901
4.2 Rancher数据库多租户测试
4.2.1 Rancher数据库测试命名空间隔离
# 在fgedu-project1-dev命名空间中创建Pod
[root@rancher ~]# kubectl run fgedu-pod1 –image=nginx -n fgedu-project1-dev
pod/fgedu-pod1 created
[root@rancher ~]# kubectl run fgedu-pod2 –image=nginx -n fgedu-project1-test
pod/fgedu-pod2 created
[root@rancher ~]# kubectl get pods -n fgedu-project1-dev
NAME READY STATUS RESTARTS AGE
fgedu-pod1 1/1 Running 0 1m
NAME READY STATUS RESTARTS AGE
fgedu-pod2 1/1 Running 0 1m
[root@rancher ~]# kubectl exec -n fgedu-project1-dev fgedu-pod1 — curl http://fgedu-pod2.fgedu-project1-test
curl: (6) Could not resolve host: fgedu-pod2.fgedu-project1-test
[root@rancher ~]# kubectl exec -n fgedu-project1-dev fgedu-pod1 — curl http://fgedu-pod1Welcome to nginx!
working. Further configuration is required.
[root@rancher ~]# kubectl describe resourcequota fgedu-project1-dev-quota -n fgedu-project1-dev
Name: fgedu-project1-dev-quota
Namespace: fgedu-project1-dev
Resource Used Hard
——– —- —-
limits.cpu 500m 5
limits.memory 256Mi 10Gi
pods 1 50
persistentvolumeclaims 0 10
requests.cpu 250m 5
requests.memory 256Mi 10Gi
services 0 10
4.3 Rancher数据库多租户监控
4.3.1 Rancher数据库监控租户资源使用
# 查看命名空间资源使用情况
[root@rancher ~]# kubectl top nodes
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
rke2-server1 500m 12% 2Gi 25%
rke2-server2 500m 12% 2Gi 25%
rke2-server3 500m 12% 2Gi 25%
rke2-worker1 500m 25% 1Gi 25%
[root@rancher ~]# kubectl top pods -n fgedu-project1-dev
NAME CPU(cores) MEMORY(bytes)
fgedu-pod1 250m 256Mi
[root@rancher ~]# kubectl describe resourcequota fgedu-project1-dev-quota -n fgedu-project1-dev
Name: fgedu-project1-dev-quota
Namespace: fgedu-project1-dev
Resource Used Hard
——– —- —-
limits.cpu 500m 5
limits.memory 256Mi 10Gi
pods 1 50
persistentvolumeclaims 0 10
requests.cpu 250m 5
requests.memory 256Mi 10Gi
services 0 10
# 步骤1:登录Rancher管理界面
# 步骤2:点击”集群” – 选择集群 – 点击”监控”
# 步骤3:查看命名空间资源使用情况
# 步骤4:查看资源配额使用情况
# 步骤5:查看资源使用趋势
Part05-风哥经验总结与分享
5.1 Rancher数据库多租户最佳实践
5.2 Rancher数据库多租户问题排查
# 现象:Pod无法跨命名空间访问
# 原因:网络策略配置错误、DNS配置错误
# 解决:
[root@rancher ~]# kubectl get networkpolicies -n fgedu-project1-dev
[root@rancher ~]# kubectl describe networkpolicy fgedu-project1-dev-network-policy -n fgedu-project1-dev
[root@rancher ~]# kubectl get svc -n kube-system | grep dns
[root@rancher ~]# kubectl exec -n fgedu-project1-dev fgedu-pod1 — nslookup fgedu-pod2.fgedu-project1-test
# 现象:Pod无法创建,提示资源配额超限
# 原因:资源配额配置过小、资源使用过多
# 解决:
[root@rancher ~]# kubectl describe resourcequota fgedu-project1-dev-quota -n fgedu-project1-dev
[root@rancher ~]# kubectl get pods -n fgedu-project1-dev
[root@rancher ~]# kubectl top pods -n fgedu-project1-dev
[root@rancher ~]# kubectl edit resourcequota fgedu-project1-dev-quota -n fgedu-project1-dev
# 现象:用户无法访问命名空间
# 原因:权限配置错误、角色绑定错误
# 解决:
[root@rancher ~]# kubectl auth can-i get pods -n fgedu-project1-dev –as=fgedu-dev
[root@rancher ~]# kubectl get rolebindings -n fgedu-project1-dev
[root@rancher ~]# kubectl describe rolebinding fgedu-dev-binding -n fgedu-project1-dev
[root@rancher ~]# kubectl edit rolebinding fgedu-dev-binding -n fgedu-project1-dev
# 现象:网络策略配置后不生效
# 原因:网络策略配置错误、CNI插件不支持
# 解决:
[root@rancher ~]# kubectl get networkpolicies -n fgedu-project1-dev
[root@rancher ~]# kubectl describe networkpolicy fgedu-project1-dev-network-policy -n fgedu-project1-dev
[root@rancher ~]# kubectl get pods -n kube-system | grep canal
[root@rancher ~]# kubectl logs -n kube-system 5.3 Rancher数据库多租户维护
– 检查项目状态
– 检查命名空间状态
– 检查资源配额使用情况
– 检查网络策略状态
– 审计资源使用情况
– 审计权限配置
– 审计网络策略
– 审计操作日志
– 更新资源配额
– 更新网络策略
– 更新权限配置
– 更新项目配置
– 清理无用项目
– 清理无用命名空间
– 清理无用资源
– 清理过期日志
– 备份项目配置
– 备份命名空间配置
– 备份资源配额
– 备份网络策略
