层次概念¶
名字空间¶
简介¶
在 Kubernetes 中,名字空间(Namespace) 提供一种机制,将同一集群中的资源划分为相互隔离的组。
同一名字空间内的资源名称要唯一,但跨名字空间时没有这个要求。
名字空间作用域仅针对带有名字空间的对象(例如 Deployment、Service 等),这种作用域对集群范围的对象 (例如 StorageClass、Node、PersistentVolume 等)不适用。
使用场景¶
名字空间适用于存在很多跨多个团队或项目的用户的场景。对于只有几到几十个用户的集群,根本不需要创建或考虑名字空间。当需要名字空间提供的功能时,请开始使用它们。
名字空间为名称提供了一个范围。资源的名称需要在名字空间内是唯一的,但不能跨名字空间。 名字空间不能相互嵌套,每个 Kubernetes 资源只能在一个名字空间中。
不必使用多个名字空间来分隔仅仅轻微不同的资源,例如同一软件的不同版本: 应该使用来区分同一名字空间中的不同资源。
对于生产集群,请考虑不要使用
default
名字空间,而是创建其他名字空间来使用
初始名字空间¶
default
: 系统默认,无需创建新的名字空间即可开始使用新集群kube-node-lease
: 包含用于与各个节点关联的 Lease(租约)对象。 节点租约允许 kubelet 发送, 由此控制面能够检测到节点故障,常用于Log场景kube-public
: 所有的客户端(包括未经身份验证的客户端)都可以读取该名字空间。 该名字空间主要预留为集群使用,以便某些资源需要在整个集群中可见可读kube-system
: 用于 Kubernetes 系统创建的对象
使用名字空间¶
避免使用前缀
kube-
创建名字空间,因为它是为 Kubernetes 系统名字空间保留的
format
Bash | |
---|---|
1 2 3 4 5 6 |
|
为请求设置名字空间¶
要为当前请求设置名字空间,请使用 --namespace
参数
创建 Pod 并指定命名空间:
Bash | |
---|---|
1 |
|
kubectl run
: 创建一个新的 Podnginx
: Pod 的名称--image=nginx
: 使用nginx
镜像来创建容器--namespace=<名字空间名称>
: 指定 Pod 所属的命名空间`
查询特定命名空间中的 Pods:
Bash | |
---|---|
1 |
|
用来获取特定命名空间中的所有 Pods 的信息