Namespace

在 Kubernetes 集群中,Namespace 提供了一种机制来创建多个"虚拟集群"。通过 Namespace,可以实现资源的逻辑分组和隔离,同时也支持跨 Namespace 的服务访问。

什么是 Namespace

Namespace 是 Kubernetes 中的一个抽象概念,用于在同一个物理集群中创建多个虚拟的集群环境。它为资源对象提供了作用域,使得不同 Namespace 中的资源可以使用相同的名称而不会产生冲突。

使用场景

以下情况适合使用多个 Namespace:

  • 环境隔离:将开发、测试、预生产和生产环境部署在不同的 Namespace 中
  • 团队隔离:为不同的团队或项目分配独立的 Namespace
  • 资源配额管理:对不同 Namespace 设置资源使用限制
  • 权限控制:基于 Namespace 实现细粒度的访问控制

基本操作

查看 Namespace

# 查看所有 namespace
kubectl get namespaces

# 简写形式
kubectl get ns

创建 Namespace

# 使用命令创建
kubectl create namespace <namespace-name>

# 使用 YAML 文件创建
kubectl apply -f namespace.yaml

指定 Namespace 操作

# 在特定 namespace 中操作资源
kubectl get pods -n <namespace-name>

# 设置默认 namespace
kubectl config set-context --current --namespace=<namespace-name>

默认 Namespace

Kubernetes 集群默认包含以下 Namespace:

  • default:用户应用的默认部署位置
  • kube-system:Kubernetes 系统组件的部署位置
  • kube-public:所有用户都可以访问的公共资源
  • kube-node-lease:用于节点心跳检测的租约对象

资源作用域

需要注意的是,并非所有 Kubernetes 资源都属于 Namespace 作用域:

Namespace 作用域的资源

  • Pod、Service、Deployment
  • ConfigMap、Secret
  • PersistentVolumeClaim

集群作用域的资源

  • Node、PersistentVolume
  • StorageClass、ClusterRole
  • Namespace 本身

最佳实践

  1. 命名规范:使用有意义的命名约定,如 project-environment 格式
  2. 资源配额:为每个 Namespace 设置适当的资源限制
  3. 网络策略:根据需要配置 Namespace 间的网络访问控制
  4. 标签管理:使用标签来组织和管理 Namespace
  5. 权限控制:结合 RBAC 实现基于 Namespace 的权限管理

文章导航

章节内容

这是章节的内容页面。

章节概览

评论区