Kubernetes Namespace

命名空间

Kubernetes支持由同一物理集群支持的多个虚拟集群。这些虚拟集群称为名称空间。

何时使用多个命名空间

命名空间旨在用于多个用户分布在多个团队或项目中的环境中。对于具有几个到几十个用户的集群,您根本不需要创建或考虑名称空间。当您需要它们提供的功能时,请开始使用命名空间。

命名空间提供名称范围。资源名称在名称空间中必须是唯一的,而不是跨名称空间。

命名空间是一种在多个用户之间划分群集资源的方法(通过资源配额)。

在Kubernetes的未来版本中,默认情况下,同一名称空间中的对象将具有相同的访问控制策略。

没有必要使用多个名称空间来分隔略有不同的资源,例如同一软件的不同版本:使用标签来区分同一名称空间中的资源。

使用命名空间

名称空间的管理指南文档中描述了名称空间的创建和删除。

查看名称空间

您可以使用以下命令列出集群中的当前名称空间:

kubectl get namespaces

NAME          STATUS    AGE
default       Active    1d
kube-system   Active    1d
kube-public   Active    1d

Kubernetes以三个初始名称空间开头:

  • default 没有其他命名空间的对象的默认命名空间
  • kube-system Kubernetes系统创建的对象的命名空间
  • kube-public此命名空间是自动创建的,并且所有用户(包括未经过身份验证的用户)都可以读取。此命名空间主要用于群集使用,以防某些资源在整个群集中可见且可公开读取。此命名空间的公共方面只是一个约定,而不是一个要求。

设置请求的命名空间

要临时设置请求的命名空间,请使用该--namespace标志。

例如:

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

设置命名空间首选项

您可以在该上下文中为所有后续kubectl命令永久保存命名空间。

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

命名空间和DNS

创建服务时,它会创建相应的DNS条目。此条目是表单<service-name>.<namespace-name>.svc.cluster.local,这意味着如果容器只是使用<service-name>,它将解析为命名空间本地的服务。这对于在多个名称空间(如开发,分段和生产)中使用相同的配置非常有用。如果要跨命名空间访问,则需要使用完全限定的域名(FQDN)。

并非所有对象都在命名空间中

大多数Kubernetes资源(例如pod,服务,复制控制器等)都在某些名称空间中。但是,命名空间资源本身并不在命名空间中。并且低级资源(例如节点和persistentVolumes)不在任何名称空间中。

要查看哪些Kubernetes资源在命名空间中,哪些不在:

# In a namespace
kubectl api-resources --namespaced=true
# Not in a namespace
kubectl api-resources --namespaced=false

本文翻译Kubernetes官方文档

本文分享自微信公众号 - kubernetes中文社区(DailyDev),作者:Kubernetes

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-03-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 在 Kubernetes 中,如何动态配置本地存储?

    Kubernetes 中使用节点的本地存储资源有 emptyDir、hostPath、Local PV 等几种方式。这之中,emptyDir 无法持久化数据,h...

    kubernetes中文社区
  • kubernetes从懵圈到熟练 – 集群伸缩原理

    阿里云K8S集群的一个重要特性,是集群的节点可以动态的增加或减少。有了这个特性,集群才能在计算资源不足的情况下扩容新的节点,同时也可以在资源利用率降低的时候,释...

    kubernetes中文社区
  • 基于 Kubernetes 的 GPU 类型调度实现

    3 月 27 日,ACM 宣布深度学习的三位缔造者——Yoshua Bengio、Yann LeCun 及 Geoffrey Hinton 获得了 2018 年...

    kubernetes中文社区
  • K8s多租户场景下的多层级namespace规则解析

    在单个 Kubernetes 集群上安全托管大量用户一直是一个棘手问题,其中最大的麻烦就是 不同的组织以不同的方式使用 Kubernetes,很难找到一种租户模...

    灵雀云
  • 第 18 章 用于大型程序的工具

    用户1653704
  • 【笔记】《C++Primer》—— 第18章:用于大型程序的工具

    这一章介绍了写大型程序中可能用到的工具,读起来也不困难,内容也不算多。其中18.2的命名空间的介绍解释了一开始书中建议我们不要随便using names...

    ZifengHuang
  • 第 18 章 用于大型程序的工具

    用户1653704
  • 从零开始学C++之STL(二):实现简单容器模

    首先,vector 在VC 2008 中的实现比较复杂,虽然vector 的声明跟VC6.0 是一致的,如下:

    s1mba
  • 从零开始学C++之STL(二):实现简单容器模板类Vec(vector capacity 增长问题、allocator 内存分配器)

    首先,vector 在VC 2008 中的实现比较复杂,虽然vector 的声明跟VC6.0 是一致的,如下: template < class _Ty, cl...

    s1mba
  • 2020年的云计算发展趋势预测

    SnapLogic公司首席技术官Craig Stewart表示,企业需要为不同的目的使用多个云平台,这将意味着多云应用的普及率将上升。

    静一

扫码关注云+社区

领取腾讯云代金券