K8SNamespace命名空间

Posted lqbyz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了K8SNamespace命名空间相关的知识,希望对你有一定的参考价值。

(一)、Namespace概述

你可以认为namespaces是你kubernetes集群中的虚拟化集群。在一个Kubernetes集群中可以拥有多个命名空间,它们在逻辑上彼此隔离。 他们可以为您和您的团队提供组织,安全甚至性能方面的帮助!
大多数的Kubernetes中的集群默认会有一个叫default的namespace。实际上,应该是3个:

这个默认(default)的namespace并没什么特别,但你不能删除它。这很适合刚刚开始使用kubernetes和一些小的产品系统。但不建议应用于大型生产系统。因为,这种复杂系统中,团队会非常容易意外地或者无意识地重写或者中断其他服务service。相反,请创建多个命名空间来把你的服务service分割成更容易管理的块。

(二)、创建Namespace

不要害怕创建namespace。它不会降低服务的性能,反而大多情况下会提升你的工作效率。目前创建namespace时通过命令和yaml文件来进行创建的

2.1、通过命令创建命名空间

[root@k8s-master k8s]# kubectl create namespace test123
namespace/test123 created
[root@k8s-master k8s]# kubectl get namespace -owide
NAME              STATUS   AGE
default           Active   55d
kube-node-lease   Active   55d
kube-public       Active   55d
kube-system       Active   55d
test              Active   21d
test123           Active   9s

2.2、通过yaml来进行创建

[root@k8s-master k8s]# kubectl apply -f namespace.yaml
namespace/test321 created
[root@k8s-master k8s]# cat namespace.yaml
apiVersion: v1
kind: Namespace
metadata:
  name: test321
  labels:
    name: test
[root@k8s-master k8s]# kubectl get namespace -owide
NAME              STATUS   AGE
default           Active   55d
kube-node-lease   Active   55d
kube-public       Active   55d
kube-system       Active   55d
test              Active   21d
test123           Active   7m6s
test321           Active   17s

(三)、在namespace中创建资源

3.1、创建一个pod没有指定命名空间的

[root@k8s-master namespace]# cat pod-ns.yml
apiVersion: v1
kind: Pod
metadata:
  name: ns-pod
  labels:
    name: ns-pod
spec:
  containers:
  - name: ns-pod
    image: nginx
[root@k8s-master namespace]# kubectl apply -f pod-ns.yml
pod/ns-pod created
[root@k8s-master namespace]# kubectl get pod/ns-pod
NAME     READY   STATUS    RESTARTS   AGE
ns-pod   1/1     Running   0          21s

3.2、创建一个pod指定命名空间的

[root@k8s-master namespace]# cat pod-ns2.yml
apiVersion: v1
kind: Pod
metadata:
  name: ns-pod2
  namespace: test
  labels:
    name: ns-pod2
spec:
  containers:
  - name: ns-pod2
    image: nginx
[root@k8s-master namespace]# kubectl apply -f pod-ns2.yml
pod/ns-pod2 created
[root@k8s-master namespace]# kubectl get pod  -ntest -owide
NAME      READY   STATUS    RESTARTS   AGE   IP            NODE         NOMINATED NODE   READINESS GATES
ns-pod2   1/1     Running   0          94s   10.244.1.62   k8s-node01   <none>           <none>

以上是关于K8SNamespace命名空间的主要内容,如果未能解决你的问题,请参考以下文章

xml 中的 Android 谷歌地图片段。我得到“意外的命名空间前缀”

模棱两可的类命名空间问题

如何在C ++中将枚举导入不同的命名空间?

为什么原始数据类型在不包含System命名空间的情况下工作

有没有办法关闭代码片段中的命名建议?

XML 属性未获取命名空间前缀