美文网首页Kubernetes
Kubernetes基本概念之Namespace

Kubernetes基本概念之Namespace

作者: 伊凡的一天 | 来源:发表于2018-03-21 09:09 被阅读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:

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

    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/

    相关文章

      网友评论

        本文标题:Kubernetes基本概念之Namespace

        本文链接:https://www.haomeiwen.com/subject/blmvqftx.html