在一个组织内部,不同的工作组可以在同一个Kubernetes集群中工作,Kubernetes通过命名空间和Context的设置对不同的工作组进行区分,使得它们既可以共享同一个Kubernetes集群的服务,也能够互不干扰。
Namespace的创建
Kubernetes集群会帮我们创建一个名称为default的命名空间:
默认情况下,我们的pod、rc、service等Kubernetes资源都是使用这个命名空间,此外我们也可以创建自己的命名空间。
定义一个命名空间配置dev-namesapce.yml:
1 | apiVersion: v1 |
创建该命名空间:
使用Namespace
使用命名空间只需要在创建Kubernetes资源对象的时候指定即可,比如创建一个tomcat-rc.yml,并指定命名空间为dev:
1 | apiVersion: v1 |
创建该rc:
可以看到,defalut命名空间下并没有任何pod,而dev命名空间下则有两个tomcat pod实例。
命名空间只是名称上的隔离,不同命名空间下的pod,service等还是可以相互访问的。
Context的创建和使用
我们可以通过创建Context(上下文),指定使用的命名空间,然后使用该Context,来完成默认的命名空间切换。
在创建Context前,我们查看下Kubernetes默认的配置:
可以看到,当前默认的Context名称为kubernetes-admin@kubernetes,由此可以推断,它和defalut这个命名空间挂钩。
创建一个新的Context,名称为ctx-dev,命名空间使用上面创建的dev:
其中/root/.kube/config
为Kubernetes配置。
创建成功后,我们使用ctx-dev这个Context:
可以看到,现在不需要指定-n dev
就可以获取到dev命名空间下的pod了,也证实了Context的切换是成功的。
如果想要恢复默认的Context,将Context指定为kubernetes-admin@kubernetes: