在一个组织内部,不同的工作组可以在同一个 Kubernetes 集群中工作,Kubernetes 通过命名空间和 Context 的设置来实现对不同工作组进行区分,使得它们既可以共享同一个 Kubernetes 集群的服务,也能够互不干扰。
假设在我们的组织中有两个工作组:开发组和生产运维组。开发组在 Kubernetes 集群中需要不断创建、修改、删除各种 Pod、RC、Service 等资源对象,以便实现敏捷开发的过程。而生产运维组则需要使用严格的权限设置来确保生产系统中的 Pod、RC、Service 处于正常运行状态且不会被误操作。
创建 namespace
为了在 Kubernetes 集群中实现这两个分组,首先需要创建两个命名空间。
namespace-development.yaml
|
|
namespace-production.yaml
|
|
使用 kubectl create 命令完成命名空间的创建:
|
|
查看系统中的命名空间:
|
|
定义 Context(运行环境)
接下来,需要为这两个工作组分别定义一个 Context,即运行环境。这个运行环境将属于某个特定的命名空间。
通过 kubectl config set-context 命令定义 Context,并将 Context 置于之前创建的命名空间中:
|
|
使用 kubectl config view 命令查看已定义的 Context:
|
|
注意,通过 kubectl config 命令在 ${HOME}/.kube 目录下生成了一个名为 config 的文件,文件内容即 kubectl config view 命令看到的内容。所以,也可以通过手工编辑该文件的方式来设置 Context。
设置工作组在特定 Context 环境中工作
使用 kubectl config use-context
下面的命令把当前运行环境设置为 ”ctx-dev“:
|
|
通过这个命令,当前的运行环境即被设置为开发组所需的环境。之后的所有操作都将在名为 “development” 的命名空间中完成。
各工作组之间的工作将不会相互干扰,并且它们都能够在同一个 Kubernetes 集群中同时工作。