在 Kubernetes 中,Namespace(名称空间) 可以帮助用户将不同的资源组织到不同的逻辑组中,从而实现更好的资源隔离和管理。
本文将介绍 Kubernetes Namespace 的相关概念和使用方法。
01
—
什么是Namespace
Namespace 是 Kubernetes 中的一种逻辑隔离机制,它将一组资源(如 Pod、Service、Deployment 等)组织到一个逻辑组中。
不同的 Namespace 之间彼此隔离,这适合于对组织内不同项目或团队的应用进行分开管理。这种隔离机制可以使得用户更加方便地进行资源管理,并提高应用程序的安全性和稳定性。
使用 Namespace 可以带来以下好处:
1. 隔离资源
通过将资源划分到不同的 Namespace 中,可以更好地隔离应用程序和服务之间的资源,从而避免资源冲突和资源竞争的问题。
2. 简化资源管理
使用 Namespace 可以将相关的资源放在一起,从而更方便地进行管理和维护。通过 Namespace,用户可以更快地定位到特定的资源,并对其进行操作。
3. 安全管理
使用 Namespace 可以实现资源的安全管理,通过为不同的 Namespace 分配不同的权限,可以控制用户对资源的访问权限,从而保护应用程序的安全性。
02
—
内置Namespace
默认情况下,Kubernetes会内置四个的Namespace,分别是default、kube-system、kube-public和kube-node-lease。
$ kubectl get namespace
NAME STATUS AGE
default Active 20d
kube-node-lease Active 20d
kube-public Active 20d
kube-system Active 20d
它们的用途如下:
default:如果您没有指定namespace,Kubernetes会将资源分配到此namespace中。
kube-system:用于放置Kubernetes的系统组件(如kube-apiserver、kube-proxy、CoreDNS等)。这些组件用于支持集群的基本功能,因此不建议在此namespace放置其他无关资源。
kube-public:此namespace中的资源可以被任何人(包括匿名用户)查看。通常用于存储公共信息,以供集群内部和外部使用。
kube-node-lease :此namespace用于存储每个节点的租约信息,这些信息指示节点是否处于活动状态,并在集群中进行调度和管理时使用。
03
—
管理Namespace
1. 创建Namespace
需要创建 Namespace ,可以使用 kubectl create namespace命令操作,也可以基于配置列表的方式来创建。
如下:创建一个名为 demo 的 Namespace:
$ kubectl create namespace demo
namespace/demo created
注:名称只能包含小写字母、数字和 “-”,必须以字母或数字开头和结尾,最长 63 个字符,并且名称不能与现有的重复。
2. 查看namespace
kubectl get namespace可查看集群的namespace资源信息,如果要单独查看某个namespace,则在后面加上名称即可。
如下:
$ kubectl get namespace demo
NAME STATUS AGE
demo Active 24s
使用kubectl describe namespace,可以获取该对象的详细信息。
$ kubectl describe namespace demo
Name: demo
Labels: kubernetes.io/metadata.name=demo
Annotations: <none>
Status: Active
No resource quota.
No LimitRange resource.
3. 删除namespace
使用kubectl delete namespace命令可删除指定的namespace对象。
如下:
$ kubectl delete ns demo
namespace "demo" deleted
当namespace被删除后,该namespace中的所有资源也会跟着一起清除,所以使用该命令时务必要小心谨慎。