
Kubernetes 命名空间(Namespaces)是一种将集群资源划分为多个独立的部分的机制。它们允许在同一个物理集群中运行多个逻辑上分隔的组。
使用场景
- 环境隔离:例如,将开发、测试和生产环境分隔开。
- 资源管理:通过命名空间对资源(如CPU和内存)进行配额管理。
- 访问控制:为不同的团队或项目设置不同的访问权限。
- 服务组织:逻辑上组织不同的服务和应用。
使用技巧
- 规划命名空间:根据项目和团队的结构合理规划命名空间。
- 资源配额:使用资源配额限制每个命名空间的资源使用。
- 角色基础访问控制(RBAC):结合RBAC实现细粒度的访问控制。
- 命名空间特定的配置:使用ConfigMaps和Secrets为不同的命名空间配置不同的设置。
- 标签和选择器:使用标签和选择器管理跨命名空间的资源。
使用案例
案例 1: 创建和使用命名空间
创建命名空间:
- 使用命令行:
kubectl create namespace dev - 使用YAML文件:
apiVersion:v1kind:Namespacemetadata:name:dev
在命名空间中创建资源:
- 在命名空间
dev中创建部署:apiVersion:apps/v1kind:Deploymentmetadata:name:example-deploymentnamespace:devspec:replicas:2selector:matchLabels:app:exampletemplate:metadata:labels:app:examplespec:containers:-name:example-containerimage:example-image
指定命名空间执行命令:
代码语言:javascript复制kubectl get pods --namespace dev
案例 2: 设置资源配额
创建资源配额:
- 在命名空间
dev中设置CPU和内存的配额:apiVersion:v1kind:ResourceQuotametadata:name:dev-quotanamespace:devspec:hard:requests.cpu:"1"requests.memory:1Gilimits.cpu:"2"limits.memory:2Gi
应用资源配额:
代码语言:javascript复制kubectl apply -f <quota-file.yaml>
案例 3: 使用命名空间进行访问控制
创建角色和角色绑定:
- 为命名空间
dev创建一个角色和角色绑定,允许用户执行特定操作:apiVersion:rbac.authorization.k8s.io/v1kind:Rolemetadata:namespace:devname:dev-rolerules:-apiGroups:[""]resources:["pods"]verbs:["get","watch","list"]---apiVersion:rbac.authorization.k8s.io/v1kind:RoleBindingmetadata:name:dev-role-bindingnamespace:devsubjects:-kind:Username:<username>apiGroup:rbac.authorization.k8s.ioroleRef:kind:Rolename:dev-roleapiGroup:rbac.authorization.k8s.io
应用角色和角色绑定:
代码语言:javascript复制kubectl apply -f <role-and-rolebinding-file.yaml>
这些案例展示了如何使用命名空间进行环境隔离、资源管理和访问控制。在实际应用中,可以根据项目的具体需求和规模,灵活地应用和调整这些策略。


