---
title: 无状态资源调度和扩缩容
description: "K8s中的Pod扩缩容与调度是管理和优化应用运行的重要机制。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengrag/bestpractice/kunpengrag_21_0065.html
sourcePath: /source/zh/kunpengrag/bestpractice/kunpengrag_21_0065.html
indexId: 87dde8943969ee35d934d0e68e955fbad7ae3a418a8e10e0f76fdf55cba4bba358
---
# 无状态资源调度和扩缩容

K8s中的Pod扩缩容与调度是管理和优化应用运行的重要机制。

#### 可扩容调度资源Pod列表

- Dify：sandbox, web, proxy
- RAGFlow：ragflow
- AnythingLLM：anythingllm（对AnythingLLM进行调度时需要在对应节点创建AnythingLLM落盘目录，请参见  KunpengRAG开源社区部署指导(https://gitee.com/kunpeng_compute/KunpengRAG/blob/master/deployment/kubernetes/single-instance-deploy-anythingllm.md)
中的先决条件3。）


#### K8s资源Pod调度

1. 克隆项目到本地。

```
git clone --branch v2.0.0 https://gitee.com/kunpeng_compute/KunpengRAG.git
cd KunpengRAG/deployment/kubernetes/scheduling-scaler
```


2. 执行调度脚本。

```
chmod +x scheduling.sh
./scheduling.sh
```

脚本将引导您完成以下配置：

  a. 输入RAG服务部署命名空间，脚本将会列出该命名空间下所有的deployment服务。
  b. 选择需要调度的deployment服务，输入对应服务前序号（可调度服务参考可扩容调度资源Pod列表）。
  c. 输入节点亲和性key和value，包含两种调度节点选择逻辑：

    - key = kubernetes.io/node, value = 需要调度的目标node。
      node为用户部署RAG服务时，为node打的标签。可以通过kubectl get nodes --show-labels | grep kubernetes.io/node查看节点的node value。

    - key = kubernetes.io/hostname, value = 需要调度的目标hostname。
      K8s集群部署时配置的节点名字（服务器名字）。可以通过kubectl get nodes --show-labels | grep kubernetes.io/hostname查看节点的hostname value。

  d. 脚本更新deployment信息。
  e. 根据脚本提示的kubectl语句查询资源调度Pod是否成功。


#### K8s资源Pod扩缩容

1. 克隆项目到本地。

```
git clone --branch v2.0.0 https://gitee.com/kunpeng_compute/KunpengRAG.git
cd KunpengRAG/deployment/kubernetes/scheduling-scaler
```


2. 执行调度脚本。

```
chmod +x scheduling.sh
./scheduling.sh
```

脚本将引导您完成以下配置：

  a. 输入RAG服务部署命名空间，脚本将会列出该命名空间下所有的deployment服务。
  b. 选择需要扩缩容的deployment服务，输入对应服务序号（可调度服务参考可扩容调度资源Pod列表）。
  c. 输入需要扩缩容Pod资源的副本数量，副本数量必须大于等于1。
  d. 选择是否将扩容的Pod资源，运行在不同的node节点，输入扩容后运行Pod的节点。
  e. 脚本更新deployment信息。
  f. 根据脚本提示的kubectl语句查询资源扩缩容Pod是否成功。
