首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
安装 kubeadm
kubeadm故障排查方法
通过Kubeadm 创建集群
Kubernetes组件介绍
Kubernetes中的API
Kubernetes对象
Kubernetes对象管理
Kubernetes对象名称和 ID
Kubernetes对象标签和选择算符
Kubernetes对象名字空间
Kubernetes对象注解
Kubernetes对象字段选择器
Kubernetes对象Finalizers
Kubernetes对象属主与附属
Kubernetes对象推荐使用的标签
Kubernetes节点
Kubernetes节点与控制面之间的通信
Kubernetes控制器
Kubernetes云控制器管理器
Kubernetes关于 cgroup v2
Kubernetes容器运行时接口(CRI)
Kubernetes垃圾收集
当前位置:
首页>>
技术小册>>
Kubernetes中文教程(一)
小册名称:Kubernetes中文教程(一)
在 Kubernetes 中,名字空间(Namespace) 提供一种机制,将同一集群中的资源划分为相互隔离的组。 同一名字空间内的资源名称要唯一,但跨名字空间时没有这个要求。 名字空间作用域仅针对带有名字空间的对象,例如 Deployment、Service 等, 这种作用域对集群访问的对象不适用,例如 StorageClass、Node、PersistentVolume 等。 **何时使用多个名字空间** 名字空间适用于存在很多跨多个团队或项目的用户的场景。对于只有几到几十个用户的集群,根本不需要创建或考虑名字空间。当需要名字空间提供的功能时,请开始使用它们。 名字空间为名称提供了一个范围。资源的名称需要在名字空间内是唯一的,但不能跨名字空间。 名字空间不能相互嵌套,每个 Kubernetes 资源只能在一个名字空间中。 名字空间是在多个用户之间划分集群资源的一种方法(通过资源配额)。 不必使用多个名字空间来分隔仅仅轻微不同的资源,例如同一软件的不同版本: 应该使用标签 来区分同一名字空间中的不同资源。 **查看名字空间** 你可以使用以下命令列出集群中现存的名字空间: ```asp kubectl get namespace NAME STATUS AGE default Active 1d kube-node-lease Active 1d kube-public Active 1d kube-system Active 1d ``` Kubernetes 会创建四个初始名字空间: - default 没有指明使用其它名字空间的对象所使用的默认名字空间 - kube-system Kubernetes 系统创建对象所使用的名字空间 - kube-public 这个名字空间是自动创建的,所有用户(包括未经过身份验证的用户)都可以读取它。 这个名字空间主要用于集群使用,以防某些资源在整个集群中应该是可见和可读的。 这个名字空间的公共方面只是一种约定,而不是要求。 - kube-node-lease 此名字空间用于与各个节点相关的 租约(Lease)对象。 节点租期允许 kubelet 发送心跳,由此控制面能够检测到节点故障。 **为请求设置名字空间** 要为当前请求设置名字空间,请使用 --namespace 参数。 例如: ```asp kubectl run nginx --image=nginx --namespace=<名字空间名称> kubectl get pods --namespace=<名字空间名称> ``` **设置名字空间偏好** 你可以永久保存名字空间,以用于对应上下文中所有后续 kubectl 命令。 ```asp kubectl config set-context --current --namespace=<名字空间名称> ``` **验证** ```asp kubectl config view --minify | grep namespace: ``` **名字空间和 DNS** 当你创建一个服务时, Kubernetes 会创建一个相应的 DNS 条目。 该条目的形式是 <服务名称>.<名字空间名称>.svc.cluster.local,这意味着如果容器只使用 <服务名称>,它将被解析到本地名字空间的服务。这对于跨多个名字空间(如开发、测试和生产) 使用相同的配置非常有用。如果你希望跨名字空间访问,则需要使用完全限定域名(FQDN)。 因此,所有的名字空间名称都必须是合法的 RFC 1123 DNS 标签。 并非所有对象都在名字空间中 大多数 kubernetes 资源(例如 Pod、Service、副本控制器等)都位于某些名字空间中。 但是名字空间资源本身并不在名字空间中。而且底层资源, 例如节点和持久化卷不属于任何名字空间。 查看哪些 Kubernetes 资源在名字空间中,哪些不在名字空间中: **位于名字空间中的资源** ```asp kubectl api-resources --namespaced=true ``` **不在名字空间中的资源** ```asp kubectl api-resources --namespaced=false ``` **自动打标签** 特性状态: Kubernetes 1.21 [beta] Kubernetes 控制面会为所有名字空间设置一个不可变更的 标签 kubernetes.io/metadata.name,只要 NamespaceDefaultLabelName 这一特性门控被启用。 标签的值是名字空间的名称。
上一篇:
Kubernetes对象标签和选择算符
下一篇:
Kubernetes对象注解
该分类下的相关小册推荐:
Kubernetes中文教程(三)
Kubernetes中文教程(二)
Kubernets合辑10-网络
Kubernetes合辑1-安装Kubernetes
Kubernetes中文教程(六)
Kubernets合辑13-集群监控
Kubernets合辑5-Pod控制器
Kubernets合辑12-配置中心
Kubernets合辑14-日志收集
Kubernets合辑3-kubernetes介绍
Kubernetes中文教程(五)
Kubernets合辑15-持续部署