Kubernetes

Kubernetes基本概念之Namespace

2018-03-21  本文已影响1549人  伊凡的一天

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

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:

1.2 设置Namespace

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

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

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

$ kubectl config set-context $(kubectl config current-context) --namespace=<insert-namespace-name-here>
# Validate it
$ kubectl config view | grep namespace:

1.3 Namespace和DNS

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

参考文章

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

上一篇 下一篇

猜你喜欢

热点阅读