节点资源预留 Node Allocatable

本文介绍了Kubernetes中节点资源预留Node Allocatable的概念,包括启用QoS和Pod级别的cgroups管理,以及kube reserved和system reserved的设置。Node Allocatable确保了对节点资源的合理分配,避免过度订阅。文章强调了kubelet和容器运行时的cgroup驱动一致性,并推荐了cgroups的配置策略,以保证系统服务和Kubernetes组件的稳定运行。
摘要由CSDN通过智能技术生成

 锦瑟无端五十弦,一弦一柱思华年

备注:由于外文不便于阅读,该文引用官方文档解读资源限额,作为学习资源供需要的人参考。

如有不对的地方可以指出,交流进步。

Reserve Compute Resources for System Daemons | Kubernetes

'Allocatable' on a Kubernetes node is defined as the amount of compute resources that are available for pods. The scheduler does not over-subscribe 'Allocatable'. 'CPU', 'memory' and 'ephemeral-storage' are supported as of now.

Node Allocatable is exposed as part of v1.Node object in the API and as part of kubectl describe node in the CLI.

Resources can be reserved for two categories of system daemons in the kubelet.

1 Enabling QoS and Pod level cgroups (启动QoS和Pod级别cgroups管理功能)

 To properly enforce node allocatable constraints on the node, you must enable the new cgroup hierarchy via the --cgroups-per-qos flag. This flag is enabled by default. When enabled, the kubelet will parent all end-user pods under a cgroup hierarchy managed by the kubelet.

大致意思:使用节点限资源预留功能的前提是开启cgroups-per-qos 功能,使用--cgroups-per-qos开启并且默认是开启的。

确保cgroups-per-qos 是开启的后,pod资源将处于cgroup资源管理体系下,然后kubelet通过cgroups来管理所有终端用户pod的资源分配。

这里需要了解cgroup这个系统组件的作用,根据百度百科所说:

cgroups,其名称源自控制组群(control groups)的简写,是Linux内核的一个功能,用来限制、控制与分离一个进程组资源(如CPU

### 回答1: 好的,我可以为您提供一个k8s集群中布置node节点资源配置文件,如下所示: apiVersion: v1 kind: Pod metadata: name: node spec: containers: - name: node image: your-image resources: requests: cpu: 500m memory: 512Mi limits: cpu: 100m memory: 1Gi 您需要将上述配置文件保存为yaml格式,然后使用kubectl apply命令将其应用到您的k8s集群中的每个node节点上。如果您的node节点数量不止5台,您需要将该配置文件复制并修改节点名称,以适应您的实际情况。 ### 回答2: 在Kubernetes集群中,每个节点Node)代表一台物理或虚拟机器,用于运行应用程序和容器。每个节点都需要通过资源配置文件(Node配置文件)进行相关的配置。 为了布置5台node节点资源配置文件,需要按照以下步骤进行: 1. 创建一个主机名列表:将5台node节点的主机名按顺序写入一个文本文件,例如: ``` node1 node2 node3 node4 node5 ``` 2. 创建每个节点资源配置文件:对于每台节点,创建一个YAML格式的资源配置文件,例如node1.yaml,node2.yaml,以此类推。示例内容如下: ```yaml apiVersion: v1 kind: Node metadata: name: node1 labels: type: worker spec: capacity: cpu: "4" memory: 8Gi allocatable: cpu: "4" memory: 8Gi # 可根据实际情况配置其他资源,例如磁盘空间、GPU等 ``` 在每个配置文件中,可以根据实际情况设置节点资源容量(capacity)和可分配资源allocatable)。可以根据需求配置CPU核心数、内存大小等,也可以添加其他自定义的资源。 3. 应用资源配置文件:通过Kubernetes的API Server将每个节点资源配置文件应用到集群中。使用kubectl工具执行如下命令: ``` kubectl apply -f node1.yaml kubectl apply -f node2.yaml kubectl apply -f node3.yaml kubectl apply -f node4.yaml kubectl apply -f node5.yaml ``` 以上命令将会依次应用每个节点资源配置文件,并将相应的资源配置信息存储在Kubernetes集群的etcd中。 通过以上步骤,您就可以成功布置5台node节点资源配置文件。根据实际需求可以根据上述示例调整配置文件中的资源参数。 ### 回答3: 在Kubernetes(K8s)集群中为5个节点配置资源文件,可以按照以下步骤进行: 1. 首先,创建一个空的资源配置文件,并设置一个高级别的API版本和类型: ```yaml apiVersion: v1 kind: ConfigMap ``` 2. 为每个节点创建一个配置块,配置块的名称根据节点的名称进行命名,例如: ```yaml data: node1.yaml: | --- apiVersion: v1 kind: Node metadata: name: node1 spec: capacity: cpu: "4" memory: 8Gi storage: 50Gi node2.yaml: | --- apiVersion: v1 kind: Node metadata: name: node2 spec: capacity: cpu: "2" memory: 4Gi storage: 100Gi node3.yaml: | --- apiVersion: v1 kind: Node metadata: name: node3 spec: capacity: cpu: "8" memory: 16Gi storage: 200Gi node4.yaml: | --- apiVersion: v1 kind: Node metadata: name: node4 spec: capacity: cpu: "4" memory: 8Gi storage: 100Gi node5.yaml: | --- apiVersion: v1 kind: Node metadata: name: node5 spec: capacity: cpu: "2" memory: 4Gi storage: 50Gi ``` 以上是一个示例,您可以根据需求调整每个节点资源配置如cpu、memory和storage的值。 3. 将每个配置块的内容保存为独立的YAML文件,并将其作为data字段的值进行配置。 4. 将所有节点的配置块添加到资源配置文件中: ```yaml apiVersion: v1 kind: ConfigMap data: node1.yaml: | ... node2.yaml: | ... node3.yaml: | ... node4.yaml: | ... node5.yaml: | ... ``` 将每个节点的配置块使用正确的缩进添加到data字段下。 5. 保存和应用资源配置文件: ```bash $ kubectl apply -f node_config.yml ``` 经过上述步骤,您就能成功在K8s集群中为5个节点配置资源文件。请注意根据实际需求自行调整每个节点资源配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值