《 Kubernetes进阶实战》一3.4管理名称空间资源

举报
华章计算机 发表于 2019/05/29 20:29:42 2019/05/29
【摘要】 本书摘自《 Kubernetes进阶实战》一第三章,第3.4节,作者是马永亮

3.4 管理名称空间资源

       名称空间(Namespace)是Kubernetes集群级别的资源,用于将集群分隔为多个隔离的逻辑分区以配置给不同的用户、租户、环境或项目使用,例如,可以为development、qa和production应用环境分别创建各自的名称空间。
       Kubernetes的绝大多数资源都隶属于名称空间级别(另一个是全局级别或集群级别),名称空间资源为这类的资源名称提供了隔离的作用域,同一名称空间内的同一类型资源名必须是唯一的,但跨名称空间时并无此限制。不过,Kubernetes还是有一些资源隶属于集群级别的,如Node、Namespace和PersistentVolume等资源,它们不属于任何名称空间,因此资源对象的名称必须全局唯一。
Kubernetes的名称空间资源不同于Linux系统的名称空间,它们是各自独立的概念。另外,Kubernetes名称空间并不能实现Pod间的通信隔离,它仅用于限制资源对象名称的作用域。

3.4.1 查看名称空间及其资源对象 

       Kubernetes集群默认提供了几个名称空间用于特定的目的,例如,kube-system主要用于运行系统级资源,而default则为那些未指定名称空间的资源操作提供一个默认值,前面章节中的绝大多数资源管理操作都在default名称空间中进行。“kubectl get namespaces”命令则可以查看namespaces资源:
                   ~]$ kubectl get namespaces
                   NAME          STATUS    AGE
                   default       Active    6d
                   kube-public   Active    6d
                   kube-system   Active    6d
       也可以使用“kubectl describe namespaces”命令查看特定名称空间的详细信息,例如:
                        ~]$ kubectl describe namespaces default
       kubectl的资源查看命令在多数情况下应该针对特定的名称空间来进行,为其使用“-n”或“--namespace”选项即可,例如,查看kube-system下的所有Pod资源:
                   ~]$ kubectl get pods -n kube-system
                   NAME                                 READY    STATUS     RESTARTS    AGE
                   etcd-master.ikubernetes.io           1/1      Running    1           6d
                   kube-apiserver-master.ikubernetes.io 1/1      Running    1           6d
                   ……
       命令结果显示出kube-system与default名称空间的Pod资源对象并不相同,这正是Namespace资源的名称隔离功能的体现。有了Namespace对象,用户再也不必精心安排资源名称,也不用担心误操作了其他用户的资源。

3.4.2 管理Namespace资源

       Namespace是Kubernetes API的标准资源类型之一,如3.2.1节中所述,它的配置主要有kind、apiVersion、metadata和spec等一级字段组成。将3.2.1节中的名称空间配置清单保存于配置文件中,使用陈述式对象配置命令create或声明式对象配置命令apply便能完成创建:
                ~]$ kubectl apply -f namespace-example.yaml
                namespace/dev created
       名称空间资源属性较少(通常只需要指定名称即可),简单起见,kubectl为其提供了一个封装的专用陈述式命令“kubectl create namespace”。Namespace资源的名称仅能由字母、数字、连接线、下划线等字符组成。例如,下面的命令可用于创建名为qa的Namespace对象:
             ~]$ kubectl create namespace qa
             namespace/qa created
    namespace资源的名称仅能由字母、数字、连接线、下划线等字符组成。
       实践中,不建议混用不同类别的管理方式。考虑到声明式对象配置管理机制的强大功能,强烈推荐用户使用apply和patch等命令进行资源创建及修改一类的管理操作。
       使用kubectl管理资源时,如果一并提供了名称空间选项,就表示此管理操作仅针对指定名称空间进行,而删除Namespace资源会级联删除其包含的所有其他资源对象。表3-3给出了几个常用的命令格式。

image.png

       需要再次指出的是,Namespace对象仅用于资源对象名称的隔离,它自身并不能隔绝跨名称空间的Pod间通信,那是网络策略(network policy)资源的功能。

  

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。