---
title: 工作节点操作
description: "将工作节点加入到集群中。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/2400/armnative/kunpengcpsvideo_20_0081.html
sourcePath: /source/zh/kunpengboostkithistory/2400/armnative/kunpengcpsvideo_20_0081.html
indexId: 10c5906abb693921fd1046c307da3712bb686120cb6615778ce5892097c513e477
---
# 工作节点操作

将工作节点加入到集群中。

请参见视频流引擎获取DemoVideoEngine.tar.gz软件包，获取后将软件包上传至服务器的“/home/k8s”目录。

1. 容器存储隔离和大小设置。该步骤服务器重启后需重新执行。
```
cd /home/k8s
tar -xvf DemoVideoEngine.tar.gz k8s/
cd /home/k8s/k8s/DevicesPlugin
chmod +x storage_manager.sh
./storage_manager.sh $ACTION $STORAGE_START_INDEX $STORAGE_END_INDEX $STORAGE_SIZE_GB $IMG_BASE
```

命令参数说明如表1所示。

**表1 容器存储隔离和大小设置参数说明**

| 参数 | 说明 |
| --- | --- |
| ACTION | 参数值为create或delete，创建或者删除。 |
| STORAGE\_START\_INDEX | 数据卷删除或创建起始编号。 |
| STORAGE\_END\_INDEX | 数据卷删除或创建结束编号，结束编号必须大于或者等于起始编号。 |
| STORAGE\_SIZE\_GB | 存储大小，单位为GB。删除时可不传。 |
| IMG\_BASE | 基础数据卷img文件，若无基础数据卷可不传，基础数据卷img文件制作请参考制作基础数据卷。删除时可不传。参数STORAGE\_SIZE\_GB和IMG\_BASE只传其中一个。 |


例如：

  - 创建100个存储大小为32GB的存储隔离数据卷，名称为video1~video100。
    1 ./storage_manager.sh create 1 100 32

  - 如果在此基础上，要增加20个存储大小为32GB的存储隔离数据卷，名称为video101~video120。
    1 ./storage_manager.sh create 101 120 32

  - 删除名称为video1~video100数据卷。
    1 ./storage_manager.sh delete 1 100

  - 如果在此基础上，要删除名称为video101~video120这剩余20个数据卷。
    1 ./storage_manager.sh delete 101 120

  - 通过videobase.img为基础制作名为video1~video100的数据卷。
    1 ./storage_manager.sh create 1 100 /home/mount/img/videobase.img

若已执行该步骤命令，重新修改某个编号的数据卷存储大小时需先删除对应编号的数据卷再重新创建。


2. 执行在master初始化成功时保存的图1红框中加入集群的token命令。
  例如：

  1 2 kubeadm join xx.xx.xx.xx:xxxx --token 7h0hpd.1av4cdcb4fb0on5x \ --discovery-token-ca-cert-hash sha256:357c6d1dbefe6f7adf3c80987a90d3765965b1c43e1757b655ea8586c8ade10a

  工作节点重启后，重新加入集群时，需保证此工作节点可运行视频流云手机。 xx.xx.xx.xx为IP地址，xxxx为映射端口号。 加入集群的token命令若失效可重新在master节点执行如下命令重新生成。 1 kubeadm token create --print-join-command

3. 查看集群状态。

  a. 需在master节点查看状态。
    1 kubectl get nodes -A -o wide

    期望是此工作节点的状态（STATUS）列是Ready，运行时（CONTAINER-RUNTIME）列是containerd://x.x.x。

  b. 需在master节点查看pod状态。
    1 kubectl get pod -A -o wide

    期望是此工作节点上的pod的状态（STATUS）列都是Running。

  c. 在此工作节点查看容器状态。
    1 crictl ps

    期望是所有的容器状态（STATE）列都是Running。

4. （可选）配置NUMA亲和。为保证性能，需保证CPU和道客设备NUMA亲和。

  a. 停止kubelet。
    1 systemctl stop kubelet

  b. 删除旧的CPU管理状态文件，该文件的路径默认为“/var/lib/kubelet/cpu_manager_state”。
    1 rm -rf /var/lib/kubelet/cpu_manager_state

  c. 修改kubelet的配置文件config.yaml。

```
vi /var/lib/kubelet/config.yaml
```


  d. 按“i”键进入编辑模式，在文件末尾添加如下配置。配置参数说明如    表2
所示。

```
cpuManagerPolicy: "static"
topologyManagerPolicy: "single-numa-node"
reservedSystemCPUs: "0,1,32,33,64,65,96,97"
```


**表2 kubelet的配置文件参数说明**

| 参数 | 说明 |
| --- | --- |
| cpuManagerPolicy | 可配置为“none”和“static”。 none为默认选项，容器将不会绑核。 static容器将绑核，可以保证容器使用的CPU独占。 |
| topologyManagerPolicy | 设置拓扑管理器策略，建议使用“single\-numa\-node”，可保证不存在跨NUMA的情况。 |
| reservedSystemCPUs | 设置空余的CPU，这些空余的CPU可以用来绑系统进程，比如网络中断绑核，防止系统进程影响业务，可按照实际需求配置空余CPU。 |


  e. 按“Esc”键，输入:wq!并按“Enter”键保存并退出编辑。
  f. 重新启动kubelet并查看kubelet状态。
    1 2 systemctl start kubelet systemctl status kubelet
