好久没写和K8s相关的了,今天就开始继续写!!!

目录

一、Namespace 核心概念

系统默认 4 个初始命名空间

二、Namespace 两种创建方式

1. 命令行快速创建(适合临时场景)

2. YAML 文件创建(适合生产环境,可复用)

三、Namespace 核心用例与实操

1. 为资源指定命名空间

2. 设置默认命名空间

四、关键注意事项与避坑指南

1. 删除风险警示

2. 默认命名空间删除限制

五、高频面试题解答

Q1:什么是 K8s 的 namespace?

Q2:系统默认创建了哪几个 namespace?


一、Namespace 核心概念

Namespace 是 Kubernetes 提供的资源分组隔离方案,底层依赖同一个物理集群,为资源名称提供独立作用域:

  • 资源名称仅需在命名空间内唯一,无需跨命名空间保证唯一
  • 命名空间不可嵌套,每个 Kubernetes 资源只能归属一个命名空间
  • 核心作用:通过资源配额,在多用户 / 多团队间划分集群资源
  • 作用域限制:仅对命名空间级资源(如 Pod、Deployment、Service 等)生效,对集群级资源(如 Node、StorageClass、PersistentVolume 等)不适用

系统默认 4 个初始命名空间

Kubernetes 启动时会自动创建 4 个核心命名空间,各司其职:

表格

命名空间 核心作用
default 默认命名空间,未指定命名空间的资源会自动创建于此,是新手入门的默认操作环境
kube-node-lease 存储节点租约(Lease)对象,用于 kubelet 向 apiserver 发送心跳,实现节点故障检测
kube-public 全可读命名空间,所有客户端(含未认证用户)均可读取,预留为集群全局公共资源使用
kube-system 系统命名空间,存储 Kubernetes 核心组件的运行资源,是集群正常运行的核心

二、Namespace 两种创建方式

1. 命令行快速创建(适合临时场景)

# 创建名为 mynamespace 的命名空间
kubectl create namespace mynamespace

# 查看所有命名空间(ns 是 namespace 的简写)
kubectl get namespaces

执行后可看到新创建的命名空间状态为 Active,与 4 个默认命名空间并列。

2. YAML 文件创建(适合生产环境,可复用)

编写 namespace.yml 配置文件:

apiVersion: v1
kind: Namespace
metadata:
  name: nobody

执行创建命令:

# 从 YAML 文件创建命名空间
kubectl create -f namespace.yml

创建完成后,可通过 kubectl get ns 验证命名空间已成功创建。

三、Namespace 核心用例与实操

1. 为资源指定命名空间

创建资源时通过 --namespace(简写 -n)指定归属,实现资源分组:

# 在 mynamespace 命名空间中创建 nginx Pod
kubectl run nginx --image=nginx --namespace=mynamespace

# 查看指定命名空间下的 Pod
kubectl get pod -n mynamespace

2. 设置默认命名空间

通过配置上下文,省略每次操作的 -n 参数,提升操作效率:

# 将当前上下文的默认命名空间设为 mynamespace
kubectl config set-context --current --namespace=mynamespace

# 验证配置是否生效
kubectl config view | grep namespace:

# 直接查看 Pod,自动匹配默认命名空间
kubectl get pod

四、关键注意事项与避坑指南

1. 删除风险警示

删除命名空间会级联删除其下所有资源(包括 Pod、Deployment、Service 等),操作前务必确认,避免误删业务资源。

2. 默认命名空间删除限制

若已将某命名空间设为默认,需先切换回其他命名空间(如 default),再执行删除操作:

# 切换默认命名空间回 default
kubectl config set-context --current --namespace=default

# 批量删除命名空间
kubectl delete namespaces mynamespace nobody

五、高频题解答

Q1:什么是 K8s 的 namespace?

A:Namespace 是 Kubernetes 提供的资源分组隔离机制,将同一物理集群划分为多个逻辑独立的虚拟集群,用于多用户、多项目间的资源划分,仅对命名空间级资源生效,对集群级资源不适用。

Q2:系统默认创建了哪几个 namespace?

A:共 4 个,分别是 default(用户默认命名空间)、kube-node-lease(节点心跳租约)、kube-public(全局可读公共资源)、kube-system(系统核心组件资源)。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐