Namespaces 的范围

大多数k8s资源(例如pod、services、replication controllers或其他)都在某些Namespace中,但Namespace资源本身并不在Namespace中。而低级别资源(如Node和persistentVolumes)不在任何Namespace中。Events是一个例外:它们可能有也可能没有Namespace,具体取决于Events的对象。

命令操作

创建

kubectl create namespace new-namespace  # 创建namespace
kubectl create -f ./my-namespace.yaml  # 通过文件创建
# file: my-namespace.yaml
apiVersion: v1
kind: Namespace
metadata:
  name: new-namespace

<aside> 💡 命名空间名称满足正则表达式a-z0-9?,最大长度为63位

</aside>

删除

kubectl delete namespaces new-namespace
  1. 删除一个namespace会自动删除所有属于该namespace的资源。
  2. default和kube-system命名空间不可删除。
  3. PersistentVolumes是不属于任何namespace的,但PersistentVolumeClaim是属于某个特定namespace的。
  4. Events是否属于namespace取决于产生events的对象。

查看

kubectl get namespaces

在请求中指定 namespace

kubectl --namespace=<insert-namespace-name-here> run nginx --image=nginx

kubectl --namespace=<insert-namespace-name-here> get pods

保存

# 将namespace永久保存在context中
kubectl config set-context $(kubectl config current-context) --namespace=<insert-namespace-name-here>