商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 系统应用 > 如何创建和管理 Kubernetes 命名空间

如何创建和管理 Kubernetes 命名空间

  发布于2026-08-15 阅读(0)

扫一扫,手机访问

{"position":0,"title":"简介","layout":"doc-fullscreen","text":"## 简介nn本全面指南探讨了Kubernetes命名空间,为开发人员和DevOps专业人员提供了有效组织和管理集群资源的基本策略。通过了解命名空间的基本原理,你将学习如何创建逻辑资源边界、改善集群组织并增强整体容器基础设施管理。n","need_verify":false,"has_solution":false},{"position":1,"title":"Kubernetes 命名空间基础","layout":"doc-workbench-split","text":"## Kubernetes 命名空间基础nn### 什么是 Kubernetes 命名空间?nnKubernetes 命名空间是一种虚拟集群机制,它为命名和组织集群资源提供了一个作用域。它能够在 Kubernetes 集群内实现逻辑隔离和资源分割,使团队能够有效地管理和划分资源。nn```mermaidngraph TDn A[Kubernetes 集群] --> B[命名空间 1]n A --> C[命名空间 2]n A --> D[命名空间 3]n B --> E[Pod]n B --> F[服务]n C --> G[部署]n C --> H[配置映射]n```nn### 核心命名空间特性nn| 特性 | 描述 |n| ------------ | -------------------------------------- |n| 资源隔离 | 在资源之间提供逻辑隔离 |n| 名称唯一性 | 资源名称在一个命名空间内必须唯一 |n| 默认命名空间 | 包括 default、kube-system、kube-public |nn### 创建命名空间nn要创建一个 Kubernetes 命名空间,请使用以下 kubectl 命令:nn```bashn## 创建一个命名空间nkubectl create namespace developmentnn## 验证命名空间创建nkubectl get namespacesn```nn### 命名空间资源管理nn创建资源时,可以指定命名空间:nn```yamlnapiVersion: v1nkind: Podnmetadata:n name: example-podn namespace: developmentnspec:n containers:n - name: nginxn image: nginx:latestn```nn### 命名空间选择与切换nn```bashn## 设置默认命名空间nkubectl config set-context --current --namespace=developmentnn## 查看当前命名空间nkubectl config view | grep namespacen```n","need_verify":false,"has_solution":false},{"position":2,"title":"命名空间生命周期管理","layout":"doc-workbench-split","text":"## 命名空间生命周期管理nn### 命名空间创建策略nn创建命名空间可以通过多种方法实现:nn```bashn## 声明式方法nkubectl create namespace productionnn## YAML 文件方法nkubectl appl-f namespace.yaml ```yaml apiVersion: v1 kind: Namespace metadata: name: staging ``` ### 命名空间资源跟踪 ```mermaid stateDiagram-v2 [*] --> Created Created --> Active Active --> Terminating Terminating --> [*] ``` ### 命名空间删除过程 删除命名空间时,其中包含的所有资源也会一并被清理掉: ```bash ## 删除命名空间 kubectl delete namespace staging ## 如果删除过程卡住,可强制删除 kubectl delete namespace staging --grace-period=0 --force ``` ### 命名空间删除场景 | 场景 | 操作 | 命令 | | -------- | -------- | --------------------------------------------------------------- | | 正常删除 | 优雅终止 | `kubectl delete ns ` |n| 卡住的命名空间 | 强制删除 | `kubectl delete ns --force` |n| 终结器问题 | 手动干预 | `kubectl patch ns 处理卡住的命名空间 当命名空间一直停留在删除状态、迟迟退不出去时,通常要先看它当前的状态,再手动清理终结器: ```bash ## 检查命名空间状态 kubectl get namespace staging -o yaml ## 手动移除终结器 kubectl patch namespace staging -p '{"metadata":{"finalizers":null}}' ``` 资源清理策略 要避免资源越堆越多,比较稳妥的做法是落实命名空间生命周期管理: ```bash ## 列出所有命名空间 ## 删除未使用的命名空间 ``` 命名空间高级策略 多租户配置 借助命名空间隔离,可以更好地实现多租户能力: ```yaml apiVersion: v1 kind: ResourceQuota metadata: name: team-quota namespace: development spec: hard: pods: "10" requests.cpu: "4" requests.memory: 8Gi limits.cpu: "8" limits.memory: 16Gi ``` 命名空间资源分配 ```mermaid graph TD A[集群资源] --> B[命名空间 1] A --> C[命名空间 2] B --> D[资源配额] C --> E[资源限制范围] ```# 访问控制策略nn| 策略 | 实现方式 | 目的 |n| -------------------------- | ------------------------- | ---------------------- |n| RBAC(基于角色的访问控制) | Role-Based Access Control | 限制对命名空间的访问 |n| 网络策略 | 流量控制 | 管理命名空间之间的通信 |n| 资源配额 | 计算限制 | 控制资源消耗 |nn### 网络策略示例nn```yamlnapiVersion: networking.k8s.io/v1nkind: NetworkPolicynmetadata:n name: deny-external-accessn namespace: productionnspec:n podSelector: {}n policyTypes:n - Ingressn - Egressn```nn### 高级命名空间隔离nn创建全面的命名空间隔离:nn```bashn## 创建具有严格隔离的命名空间nkubectl create namespace secure-namespacenn## 应用网络策略nkubectl apply -f network-policy.yamlnn## 设置资源配额nkubectl apply -f resource-quota.yamln```nn### 命名空间标签与选择nn```bashn## 为命名空间添加自定义标签nkubectl label namespace development team=backendnkubectl label namespace production team=frontendnn## 使用标签选择命名空间nkubectl get namespaces -l team=backendn```nn### 动态资源管理nn```yamlnapiVersion: v1nkind: LimitRangenmetadata:n name: default-limitsn namespace: developmentnspec:n limits:n - default:n cpu: 500mn memory: 512Min defaultRequest:n cpu: 250mn memory: 256Min type: Containern```n","need_verify":false,"has_solution":false},{"position":4,"title":"总结","layout":"doc-fullscreen","text":"## 总结nnKubernetes 命名空间提供了一种强大的机制,用于对集群资源进行逻辑分割和隔离。通过掌握命名空间的创建、管理和生命周期策略,团队可以实现更好的资源组织,提高安全性,并简化跨不同环境和项目的复杂容器部署。n","need_verify":false,"has_solution":false}
本文转载于:https://labex.io/zh/tutorials/kubernetes-how-to-create-and-manage-kubernetes-namespaces-392977 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注