K8S集群管理:用名字空间分隔系统资源

简介: 【8月更文挑战第12天】Kubernetes的名字空间是一种逻辑概念,用于将集群分割成多个独立区域,实现资源隔离,避免不同应用间的干扰。

Kubernetes 的名字空间并不是一个实体对象,只是一个逻辑上的概念。它可以把集群切分成一个个彼此独立的区域,然后我们把对象放到这些区域里,就实现了类似容器技术里 namespace 的隔离效果,应用只能在自己的名字空间里分配资源和运行,不会干扰到其他名字空间里的应用。

Kubernetes面对大规模集群、海量节点时的一种现实考虑。因为集群很大、计算资源充足,会有非常多的用户在 Kubernetes 里创建各式各样的应用,可能会有百万数量级别的 Pod,这就使得资源争抢和命名冲突的概率大大增加了,情形和单机 Linux 系统里是非常相似的。

把集群给适当地“局部化”,为每一类用户创建出只属于它自己的“工作空间”。

Kubernetes 初始化集群的时候也会预设 4 个名字空间:default、kube-system、kube-public、kube-node-lease。我们常用的是前两个,default 是用户对象默认的名字空间,kube-system 是系统组件所在的名字空间,相信你对它们已经很熟悉了。

名字空间的资源配额需要使用一个专门的 API 对象,叫做 ResourceQuota,简称是 quota,我们可以使用命令 kubectl create 创建一个它的样板文件:

export out="--dry-run=client -o yaml"
kubectl create quota dev-qt $out

image.gif

因为资源配额对象必须依附在某个名字空间上,所以在它的 metadata 字段里必须明确写出 namespace(否则就会应用到 default 名字空间)。

在 ResourceQuota 里可以设置各类资源配额,字段非常多。

  • CPU 和内存配额,使用 request.*、limits.*,这是和容器资源限制是一样的。
  • 存储容量配额,使 requests.storage 限制的是 PVC 的存储总量,也可以用 persistentvolumeclaims 限制 PVC 的个数。
  • 核心对象配额,使用对象的名字(英语复数形式),比如 pods、configmaps、secrets、services。
  • 其他 API 对象配额,使用 count/name.group 的形式,比如 count/jobs.batch、count/deployments.apps。

很小但很有用的辅助对象了—— LimitRange,简称是 limits,它能为 API 对象添加默认的资源配额限制。

  • spec.limits 是它的核心属性,描述了默认的资源限制。
  • type 是要限制的对象类型,可以是 Container、Pod、PersistentVolumeClaim。
  • default 是默认的资源上限,对应容器里的 resources.limits,只适用于 Container。
  • defaultRequest 默认申请的资源,对应容器里的 resources.requests,同样也只适用于 Container。
  • max、min 是对象能使用的资源的最大最小值。

备注:

1、名字空间是一个逻辑概念,没有实体,它的目标是为资源和对象划分出一个逻辑边界,避免冲突。

2、ResourceQuota 对象可以为名字空间添加资源配额,限制全局的 CPU、内存和 API 对象数量。

3、LimitRange 对象可以为容器或者 Pod 添加默认的资源配额,简化对象的创建工作。


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
3月前
|
Kubernetes 持续交付 开发者
探索并实践Kubernetes集群管理与自动化部署
探索并实践Kubernetes集群管理与自动化部署
129 4
|
4月前
|
Kubernetes 监控 前端开发
Kubernetes 集群管理
8月更文挑战第26天
49 2
|
4月前
|
Kubernetes 负载均衡 微服务
Kubernetes 生态系统中的微服务治理
【8月更文第29天】随着微服务架构的普及,管理分布式系统的复杂性也随之增加。Kubernetes 作为容器编排的事实标准,为微服务架构提供了强大的支持。结合像 Istio 这样的服务网格工具,Kubernetes 能够有效地解决微服务治理中的诸多挑战,如服务发现、负载均衡、流量管理和安全策略等。
66 1
|
1月前
|
Kubernetes 持续交付 开发者
探索并实践Kubernetes集群管理与自动化部署
探索并实践Kubernetes集群管理与自动化部署
44 1
|
1月前
|
存储 运维 Kubernetes
Kubernetes集群管理:从基础到进阶
Kubernetes集群管理:从基础到进阶
|
2月前
|
JSON 运维 Kubernetes
|
2月前
|
Kubernetes 监控 测试技术
k8s学习--基于Ingress-nginx实现灰度发布系统
k8s学习--基于Ingress-nginx实现灰度发布系统
130 2
k8s学习--基于Ingress-nginx实现灰度发布系统
|
1月前
|
存储 Kubernetes Devops
Kubernetes集群管理和服务部署实战
Kubernetes集群管理和服务部署实战
51 0
|
1月前
|
Kubernetes 负载均衡 调度
Kubernetes集群管理与编排实践
Kubernetes集群管理与编排实践
|
2月前
|
Kubernetes Cloud Native 持续交付
云原生之旅:Docker容器化与Kubernetes集群管理
【9月更文挑战第33天】在数字化转型的浪潮中,云原生技术如同一艘航船,带领企业乘风破浪。本篇文章将作为你的航海指南,从Docker容器化的基础讲起,直至Kubernetes集群的高级管理,我们将一起探索云原生的奥秘。你将学习到如何封装应用、实现环境隔离,以及如何在Kubernetes集群中部署、监控和扩展你的服务。让我们启航,驶向灵活、可伸缩的云原生未来。