k8s的namespace

k8s的namespace

Kubernetes可以使用Namespaces(命名空间)创建多个虚拟集群。

一、何时使用多个Namespaces

当团队或项目中具有许多用户时,可以考虑使用Namespace来区分,a如果是少量用户集群,可以不需要考虑使用Namespace,如果需要它们提供特殊性质时,可以开始使用Namespace。

Namespace为名称提供了一个范围。资源的Names在Namespace中具有唯一性。

Namespace是一种将集群资源划分为多个用途(通过 resource quota)的方法。

在未来的Kubernetes版本中,默认情况下,相同Namespace中的对象将具有相同的访问控制策略。

对于稍微不同的资源没必要使用多个Namespace来划分,例如同意软件的不同版本,可以使用labels(标签)来区分同一Namespace中的资源。

二、Namespace的创建、删除和查看。

1.创建namespace
手动创建删除查看

[root@iZbp16ke9g4qwtz7gw25fnZ ~]# kubectl create namespace my-namespace
namespace/my-namespace created
[root@iZbp16ke9g4qwtz7gw25fnZ ~]# kubectl get ns | grep my-namespace
my-namespace       Active   29s
[root@iZbp16ke9g4qwtz7gw25fnZ ~]# kubectl delete namespace my-namespace
namespace "my-namespace" deleted

创建yaml文件

apiVersion: v1
kind: Namespace
metadata:
  name: my-namespace

使用yaml文件创建删除查看namespace

[root@iZbp16ke9g4qwtz7gw25fnZ ~]# kubectl create -f namespace.yaml 
namespace/my-namespace created
[root@iZbp16ke9g4qwtz7gw25fnZ ~]# kubectl get ns | grep my-namespace
my-namespace       Active   5s
[root@iZbp16ke9g4qwtz7gw25fnZ ~]# kubectl delete -f namespace.yaml 
namespace "my-namespace" deleted

注意:
1.删除一个namespace会自动删除所有属于该namespace的资源。
2.default和kube-system命名空间不可删除。
3.PersistentVolumes是不属于任何namespace的,但PersistentVolumeClaim是属于某个特定namespace的。
4.Events是否属于namespace取决于产生events的对象。
5.Kubernetes从两个初始的Namespace开始:
default
kube-system 由Kubernetes系统创建的对象的Namespace

三、为请求创建单独的namespace

1.要临时设置Request的Namespace,请使用–namespace 标志

[root@iZbp16ke9g4qwtz7gw25fnZ ~]# kubectl run nginx-test --image=hlqlinux/hlq-test:nginx-v3 --namespace=my-namespace
kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.
deployment.apps/nginx-test created
[root@iZbp16ke9g4qwtz7gw25fnZ ~]# kubectl get pod -n=my-namespace -owide
NAME                          READY   STATUS    RESTARTS   AGE     IP            NODE                      NOMINATED NODE   READINESS GATES
nginx-test-6fd86cb7bc-qlqsq   1/1     Running   0          5m14s   10.244.5.26   izbp1hmezfxg8nhvitxlsyz   <none>           <none>
[root@iZbp16ke9g4qwtz7gw25fnZ ~]# curl 10.244.5.26:80
this is hlqlinux's test-nginx

2.可以使用kubectl命令创建的Namespace可以永久保存在context中。

[root@iZbp16ke9g4qwtz7gw25fnZ ~]# kubectl config set-context $(kubectl config current-context) --namespace=my-namespace
Context "kubernetes-admin@kubernetes" modified.
[root@iZbp16ke9g4qwtz7gw25fnZ ~]# kubectl config view | grep namespace:
    namespace: my-namespace

参考文件:http://docs.kubernetes.org.cn/242.html

上一篇:Obama


下一篇:js闭包是什么?