一 命名空间的介绍以及作用
1 概念
为了方便不同部门之间对kubernets集群的使用,并且对其进行有效的隔离,kubernets提供了一种资源隔离手段,通过将各种不同资源分组到
一个区域,并且统一管理,这个区域的名称叫做命名空间
2 使用
查询kubernets集群内部的所有命名空间
[root@node01 ~]# k get ns
NAME STATUS AGE
default Active 26h
kube-node-lease Active 26h
kube-public Active 26h
kube-system Active 26h
3 查询kube-system空间的pod资源
[root@node01 ~]# k get po -n kube-system NAME READY STATUS RESTARTS AGE coredns-fb8b8dccf-gfkss 1/1 Running 1 26h coredns-fb8b8dccf-tjr6m 1/1 Running 1 26h etcd-master 1/1 Running 1 26h kube-apiserver-master 1/1 Running 0 26h kube-controller-manager-master 1/1 Running 1 26h kube-flannel-ds-b95br 1/1 Running 0 26h kube-flannel-ds-mwlgl 1/1 Running 0 26h kube-flannel-ds-w4mvw 1/1 Running 0 26h kube-proxy-2h9ck 1/1 Running 0 26h kube-proxy-qprh7 1/1 Running 0 26h kube-proxy-z6nwk 1/1 Running 0 26h kube-scheduler-master 1/1 Running 1 26h
4 创建一个命名空间
[root@node01 pod]# k create -f custom-namespace.yml
namespace/custom-namespace created
[root@node01 pod]# cat custom-namespace.yml
apiVersion: v1
kind: Namespace
metadata:
name: custom-namespace
5 如何在刚创建的命名空间创建资源
5.1 通过在资源的ym文件的metadata的属性里面的namesapce里面指定
apiVersion: v1 kind: Pod metadata: name: kubia-manual-namespace namespace: custom-namespace spec: containers: - image: luksa/kubia name: kubia ports: - containerPort: 8080 protocol: TCP
在集群查询该pod的信息,在default没查到,在custom-namespace里面查询到该pod信息
[root@node01 pod]# k get po NAME READY STATUS RESTARTS AGE kubia-manual 1/1 Running 0 21h kubia-manual-gpu 1/1 Running 0 172m kubia-manual-with-labels 1/1 Running 0 4h14m [root@node01 pod]# k get po -n custom-namespace NAME READY STATUS RESTARTS AGE kubia-manual-namespace 0/1 ContainerCreating 0 17s
5.2 也可通过创建时指定参数 -n和命名空间来指定
kubectl create -f kubia-manual.yam1 -n custom-namespaces
pod ”kubia-manual" created
5.3 如何修改目前的命名空间
export namespace=XXXX kubectl config set-context $(kubectl config current-context) --namespace=${namespace} unset namespace
6 命名空间提供的隔离
命名空间很大程度上提供了不同命名空间之间的资源隔离,但是却不是绝对的隔离,例如,不同的命名空间之间的pod是否可以互相通信
取决于集群内部使用的网络插件,当使用的网络插件允许的情况下,不同命名空间之间的pod仍然可以互相通信