K8S 是一种用于自动化容器部署、扩展和管理的开源平台,它提供了一种将容器组织成组的方式,并提供了自动化扩展、负载平衡和高可用性等特性。在使用 K8S 进行容器部署时,我们经常需要对节点的内存和 CPU 进行管理和配置。本文将介绍如何通过 K8S 实现节点内存和 CPU 的配置。

整体流程如下:

| 步骤 | 描述 |
| ---------------------- | ------------------------------------------------------------ |
| 1. 配置节点标签 | 为节点添加标签,以便后续对节点进行选择和调度。 |
| 2. 创建资源限制配置文件 | 创建描述节点的资源限制的配置文件。 |
| 3. 部署容器 | 在节点上部署容器,并通过配置文件限制容器的资源使用。 |
| 4. 监控和调整资源 | 监控节点的资源使用情况,并根据需要调整资源限制配置。 |

下面将逐步介绍每个步骤需要做什么,并提供相应的代码示例。

### 步骤一:配置节点标签

首先,我们需要为节点添加标签,以便后续对节点进行选择和调度。可以使用以下命令为节点添加标签:

```shell
kubectl label nodes =
```

其中,`` 是节点的名称,`` 和 `` 是自定义的键值对。

### 步骤二:创建资源限制配置文件

接下来,我们需要创建一个描述节点资源限制的配置文件。该文件定义了节点的内存和 CPU 使用限制,以确保不会因为某个容器的资源需求过高而影响其他容器。配置文件示例如下:

```yaml
apiVersion: v1
kind: ResourceQuota
metadata:
name: node-resource-quota
spec:
hard:
cpu: "4"
memory: "16Gi"
```

上述配置文件指定了节点的硬限制,最大可用的 CPU 为 4 个核心,最大可用的内存为 16G。

### 步骤三:部署容器

在创建并配置资源限制配置文件后,我们可以使用 K8S 部署容器,并通过配置文件限制容器的资源使用。可以使用以下命令部署容器:

```bash
kubectl run --image= --limits= --env=
```

其中,`` 是容器的名称,`` 是容器的镜像名称,`` 是资源限制的配置,`` 是容器的环境变量。

例如,我们要部署一个名为 `my-app` 的容器,使用镜像为 `my-app:v1`,限制容器的 CPU 使用为 1 个核心,内存为 4G,可以使用以下命令:

```bash
kubectl run my-app --image=my-app:v1 --limits=cpu=1,memory=4G --env=ENV=prod
```

### 步骤四:监控和调整资源

为了监控节点的资源使用情况并根据需要调整资源限制配置,我们可以使用 K8S 提供的 `metrics-server` 组件进行资源监控。

首先,需要安装 `metrics-server` 组件,可以使用以下命令进行安装:

```shell
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
```

安装完成后,可以使用以下命令查看节点资源使用情况:

```shell
kubectl top nodes
```

该命令会显示每个节点的 CPU 和内存使用情况。

根据监控结果,我们可以根据需要调整资源限制配置,使用以下命令修改资源限制配置:

```shell
kubectl edit resourcequota node-resource-quota
```

其中,`node-resource-quota` 是之前创建的资源限制配置文件的名称。

如果需要修改容器的资源限制,可以使用以下命令修改容器的配置:

```shell
kubectl edit pod
```

其中,`` 是容器的名称。

综上所述,通过以上四个步骤,我们可以完成 K8S 节点的内存和 CPU 的配置。通过为节点添加标签、创建资源限制配置文件、部署容器和监控调整资源,我们可以灵活地管理和配置节点的资源使用,提高应用的可用性和性能。

希望本文对刚入行的小白在实现“k8s 节点内存 CPU”方面有所帮助。