Kubernetes基本概念之Namespace

在学习本节内容前,希望你已经对Kubernetes对象的Names有了基本的了解,具体请参考这篇文章:

  • Kubernetes基本概念之Name

Namespace类似于Linux系统中用户的概念,通过将系统内部的对象分配到不同的Namespace中,形成逻辑上的分,便于不同的分组在共享集群资源的同时还能被分别管理。同一Namespace下的Kubenetes对象的Name必须唯一。

常见的 pod, service, replication controller 和 deployment 等都是属于某一个 namespace 的(默认是 default),而 node, persistent volume,namespace 等资源则不属于任何 namespace。

1. Namespace操作

1.1 查看

$ kubectl get namespaces
NAME          STATUS    AGE
default       Active    1d
kube-system   Active    1d
kube-public   Active    1d

通过上述命令,可以查看到Kubernetes为我们初始化的三个Namespace:

  • default:所有未指定Namespace的对象都会被分配在default命名空间。
  • kube-system:所有由Kubernetes系统创建的资源都处于这个命名空间。
  • kube-public:此命名空间下的资源可以被所有人访问(包括未认证用户)。

1.2 设置Namespace

通过--namespace参数可以在一条命令中指定Namespace,只对单条命令有效。

$ kubectl --namespace= run nginx --image=nginx
$ kubectl --namespace= get pods

还可以绑定一个Namespace到特定的上下文,这样在此上下文中执行的kubectl命令都处于绑定的Namespace下。

$ kubectl config set-context $(kubectl config current-context) --namespace=
# Validate it
$ kubectl config view | grep namespace:

1.3 Namespace和DNS

当你创建一个Service时,Kubernetes会自动创建一个形如..svc.cluster.local的DNS项。如果集群中另一个服务调用这个服务时,仅仅指定了,那么Kubernetes会使用调用方所在的Namespace将补全。因此如果调用方和被调用方不处于同一个Namespace,你必须使用包含Namespace的service name(fully qualified domain name (FQDN))。

参考文章

https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/

你可能感兴趣的:(Kubernetes基本概念之Namespace)