## 概述
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
```
### 步骤二:更新调度器配置
更新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节点上调度。希朼对你有所帮助!