# K8S取消Master调度实现教程

## 概述

Kubernetes(K8S)是一个开源的容器编排系统,用于自动化容器部署、扩展和运维。在K8S中,Master节点负责集群管理和控制,而Node节点负责运行用户的应用程序。有时候我们希望取消Master节点上的调度,只让Node节点上调度应用。本文将教你如何实现这一目标。

## 取消Master调度步骤

| 步骤 | 内容 |
|---------------------|----------------------------|
| 步骤一:编辑调度策略 | 修改调度策略,取消Master节点调度 |
| 步骤二:更新调度器配置 | 更新调度器配置文件,使调度器生效 |

## 具体步骤及代码示例

### 步骤一:编辑调度策略

在Master节点上编辑调度策略,修改调度器的配置文件,取消Master节点的调度。

```bash
# 进入Master节点
kubectl ssh master-node

# 编辑调度策略
vi /etc/kubernetes/scheduler.conf
```

修改scheduler.conf文件,找到以下配置:

```yaml
apiVersion: kubescheduler.config.k8s.io/v1alpha1
kind: KubeSchedulerConfiguration
profiles:
- schedulerName: default-scheduler
plugins:
preFilter:
enabled:
- name: NodeResourcesFit
...
```

在plugins中添加excludeMaster字段,将Master节点排除在调度范围之外:

```yaml
plugins:
preFilter:
enabled:
- name: NodeResourcesFit
...
excludeMaster:
enabled: true
```

保存并退出编辑器。然后重新加载调度器配置。

```bash
# 重新加载调度器配置
kubectl get pods -n kube-system | grep kube-scheduler
kubectl delete pod -n kube-system
```

### 步骤二:更新调度器配置

更新Node节点的调度器配置,确保应用只被调度到Node节点上。

```bash
# 编辑kubelet配置文件
vi /etc/kubernetes/kubelet.conf
```

如下修改kubelet.conf配置文件,指定只允许调度到Node节点:

```yaml
kind: KubeletConfiguration
...
featureGates:
...

# 添加以下配置
scheduler: false
```

保存并退出编辑器。然后重启kubelet服务使配置生效。

```bash
# 重启kubelet服务
systemctl restart kubelet
```

完成以上步骤后,Master节点将不再参与应用的调度过程,只有Node节点会被调度器考虑。

通过以上教程,你已经学会如何取消Master调度,让应用只在Node节点上调度。希朼对你有所帮助!