Kubernetes命名空间的应用

在实际应用中存在一个Kubernetes集群中多个部署环境的问题,比如存在dev,qa,stage等.

如果部署在一个集群会省去不少运维成本且节省资源占用.

通常这会用到命名空间的特性.

Namespaces 命名空间

命名空间可以被看做virtual cluster/虚拟集群.

默认存在default和kube-system两个命名空间.

用户的普通应用默认是在default下,与集群管理相关的为整个集群提供服务的应用一般部署在kube-system的namespace下.

创建新的命名空间

namespace-dev.yml

kind: Namespace
apiVersion: v1
metadata:
 name: dev-space
 labels:
   name: dev-space

kubectl create -f namespace-dev.yml

kubectl get ns
# 指定命名空间
kubectl -n <namespace>
kubectl get services —namespace=<my-space>

给命名空间指派context/上下文

一旦切换上下文, kubectl命令的执行(增改删)会在该命名空间运行.

# 绑定命名空间和上下文的关系
kubectl config set-context dev --namespace=dev --cluster=minikube --user=minukube


# 切换到Dev context
kubectl config use-context dev

# 核实当前context
kubectl config current-context

# Delete dev namespace
kubectl delete namespaces dev

扩展阅读