Kubernetets Namespace
# 1. 命名空间简介
Kubernetes 中命名空间(Namespace)是用来隔离 Kubernetes 集群内的不同资源对象的一种方式。每个 Kubernetes
对象都必须被分配到一个命名空间中,而且默认情况下,一个对象只能被同一命名空间内的其他对象访问。Kubernetes
可以帮助用户在同一集群内部部署多个独立的应用程序,每个应用程序都在自己的命名空间内运行。
同一名字空间内的资源名称要唯一,但跨名字空间时没有这个要求。 名字空间作用域仅针对带有名字空间的对象,
(例如 Deployment、Service 等),这种作用域对集群范围的对象 (例如 StorageClass、Node、PersistentVolume 等)不适用
# 1.1 初始名字空间
Kubernetes 启动时会创建四个初始名字空间:
default:Kubernetes 包含这个名字空间,以便于你无需创建新的名字空间即可开始使用新集群。kube-node-lease:该名字空间包含用于与各个节点关联的 Lease(租约)对象。 节点租约允许 kubelet 发送心跳, 由此控制面能够检测到节点故障。kube-public:所有的客户端(包括未经身份验证的客户端)都可以读取该名字空间。 该名字空间主要预留为集群使用,以便某些资源需要在整个集群中可见可读。 该名字空间的公共属性只是一种约定而非要求。kube-system:该名字空间用于 Kubernetes 系统创建的对象。
# 2. 命名空间操作
# 2.1 创建命名空间
命令创建
$ kubectl create namespace|ns <namespace-name>
1
YAML 文件创建
# ems-namespace.yml
apiVersion: v1
kind: Namespace
metadata:
name: ems
1
2
3
4
5
2
3
4
5
$ kubectl apply -f ems-namespace.yml
1
# 2.2 查看命名空间
# 查看所有命名空间
$ kubectl get namespace
# 查看指定命名空间 Pod
$ kubectl get pod --namespace <namespace-name>
1
2
3
4
5
2
3
4
5
# 2.3 部署应用到指定的命名空间
$ kubectl apply -f app.yml --namespace <namespace-name>
1
# 2.4 切换命名空间
可以用 kubens (opens new window) 快速切换 namespace。
# 列出所有命名空间
$ kubens
# 切换命名空间
$ kubens kube-system
# 回到上个命名空间
$ kubens -
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 3. 命名空间说明
# 3.1 可以跨命名空间的资源对象
下面是一些常见的可以跨命名空间的资源对象:
NodeNamespaceClusterRoleClusterRoleBindingCustomResourceDefinition
# 3.2 不可以跨命名空间的资源对象
下面是一些不能跨命名空间的资源对象:
PodReplicaSetDeploymentServiceConfigMapSecretIngressPersistentVolumePersistentVolumeClaimRoleRoleBindingServiceAccount
最近更新: 2025/04/11, 14:29:15