Namespace(命名空间)
命名空间(Namespace)
命名空间(Namespace)是一种资源隔离机制,将同一集群中的资源划分为相互隔离的组。
命名空间可以在多个用户之间划分集群资源(通过资源配额)。
例如 我们可以设置开发、测试、生产等多个命名空间。
同一命名空间内的资源名称要唯一,但跨命名空间时没有这个要求。
命名空间作用域仅针对带有名字空间的对象,例如 Deployment、Service 等。
这种作用域对集群访问的对象不适用,例如 StorageClass、Node、PersistentVolume 等。
Kubernetes 会创建四个初始命名空间
default
默认的命名空间,不可删除,未指定命名空间的对象都会被分配到default
中。kube-system Kubernetes
系统对象(控制平面和Node
组件)所使用的命名空间。kube-public
自动创建的公共命名空间,所有用户(包括未经过身份验证的用户)都可以读取它。通常我们约定,将整个集群中公用的可见和可读的资源放在这个空间中。kube-node-lease
租约(Lease
)对象使用的命名空间。每个节点都有一个关联的lease
对象,lease
是一种轻量级资源。lease
对象通过发送心跳,检测集群中的每个节点是否发生故障。
使用 kubectl get lease -A
查看 lease
对象
#创建命名空间
kubectl create namespace dev
kubectl create ns dev # namespace 可以简写为 ns
#查看命名空间
kubectl get ns
#在命名空间内运行Pod
kubectl run nginx --image=nginx --namespace=dev
kubectl run my-nginx --image=nginx -n=dev
#查看命名空间内的Pod
kubectl get pods -n=dev
#查看命名空间内所有对象
kubectl get all
# 删除命名空间会删除命名空间下的所有内容
kubectl delete ns dev
#查看当前上下文
kubectl config current-context
#将dev设为当前命名空间,后续所有操作都在此命名空间下执行。
kubectl config set-context $(kubectl config current-context) --namespace=dev
# 切换回到default
# kubectl config set-context $(kubectl config current-context) --namespace=default
# 查看指定空间下的pod
kubectl get pod -n default
安装 ns 插件
kubectl krew install ns
查看命名空间
k get ns
[docker@haima root]$ k get ns
NAME STATUS AGE
default Active 6d1h
kube-node-lease Active 6d1h
kube-public Active 6d1h
kube-system Active 6d1h
kubernetes-dashboard Active 178m
您在 /var/spool/mail/root 中有新邮件
切换命名空间
k ns kube-system
[docker@haima root]$ k ns kube-system
Context "minikube" modified.
Active namespace is "kube-system".
帮助
[docker@haima root]$ k ns --help
USAGE:
kubectl ns : list the namespaces in the current context
kubectl ns <NAME> : change the active namespace of current context
kubectl ns - : switch to the previous namespace in this context
kubectl ns -c, --current : show the current namespace
kubectl ns -h,--help : show this message
作者:海马 创建时间:2023-07-13 07:34
最后编辑:海马 更新时间:2024-08-03 21:41
最后编辑:海马 更新时间:2024-08-03 21:41