使用命名空间切分集群的实验

需求描述

假设企业使用同一个集群作为开发环境和生产环境(注意:通常开发环境和生产环境是物理隔绝的):

开发团队期望有一个集群中的命名空间,以便他们可以查看查看和使用他们创建的Pod、Service、Deployment等。在此命名空间中,Kubernetes对象被创建又被删除,为了适应敏捷开发的过程,团队中的许多人都可以在此命名空间内做他们想做的事情。

运维团队也期望有一个集群中的命名空间,在这里,将有严格的流程控制谁可以操作Pod、Service、Deployment等对象,因为这些对象都直接服务于生产环境。

实验过程

  1. 创建development、production命名空间
1
2
3
4
5
6
7
8

apiVersion: v1
kind: Namespace
metadata:
  name: development
  labels:
    name: development

1
2
3
4
5
6
7
8

apiVersion: v1
kind: Namespace
metadata:
  name: production
  labels:
    name: production

  1. 查看集群信息,并为kubectl定义上下文,以便在不同的名称空间中工作。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14

kubectl config view

# cluster、user均来自kubectl config view
kubectl config set-context development \
  --namespace=development \
  --cluster kubernetes \
  --user=kubernetes-admin

kubectl config set-context production \
  --namespace=production \
  --cluster kubernetes \
  --user=kubernetes-admin

  1. 切换到不同的命名空间

kubectl config use-context development
kubectl config current-context

参考资料

  1. 命名空间