kubernetes-namespace
namespace)
逻辑资源的划分,命名空间。逻辑划分,便于管理和权限分配。
使用kubectl api-resources 可以查看那些资源可以由namespace调度 true 为namespace管理的资源
物理资源调度没有边界,逻辑上可以通过namespace 隔离 资源配额。
初始名字空间
Kubernetes 启动时会创建四个初始名字空间:
default
Kubernetes 包含这个名字空间,以便于你无需创建新的名字空间即可开始使用新集群。
kube-node-lease
该名字空间包含用于与各个节点关联的 Lease(租约)对象。 节点租约允许 kubelet 发送心跳, 由此控制面能够检测到节点故障。
kube-public
所有的客户端(包括未经身份验证的客户端)都可以读取该名字空间。 该名字空间主要预留为集群使用,以便某些资源需要在整个集群中可见可读。 该名字空间的公共属性只是一种约定而非要求。
kube-system
该名字空间用于 Kubernetes 系统创建的对象。
创建名称空间
kubectl create namespace project1
修改用户的默认namesapce : 当前用户默认的namespace : default
[root@master01 ~]# kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* kubernetes-admin@kubernetes kubernetes kubernetes-admin default
命令修改
[root@master01 ~]# kubectl config set-context --namespace=project --current
Context "kubernetes-admin@kubernetes" modified.
[root@master01 ~]# kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* kubernetes-admin@kubernetes kubernetes kubernetes-admin project
更改配置文件修改
[root@master01 ~]# vim .kube/config
contexts:
- context:
cluster: kubernetes
namespace: default
user: kubernetes-admin
name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
并非所有对象都在名字空间中
大多数 kubernetes 资源(例如 Pod、Service、副本控制器等)都位于某些名字空间中。 但是名字空间资源本身并不在名字空间中。而且底层资源, 例如节点和持久化卷不属于任何名字空间。
查看哪些 Kubernetes 资源在名字空间中,哪些不在名字空间中:
位于名字空间中的资源
kubectl api-resources --namespaced=true
不在名字空间中的资源
kubectl api-resources --namespaced=false