K8s集群节点调度禁用

应用的场景:当k8s集群的某些节点压力过高时,可以暂时将这些节点禁用,使新启动的pod不再分配到这些节点上来(不会影响该节点上已存在的pod)

1.查看k8s的集群节点
[root@node74 ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
10.10.55.71 Ready node 126d v1.20.1
10.10.55.72 Ready node 126d v1.20.1
10.10.55.73 Ready node 126d v1.20.1
10.10.55.74 Ready master 126d v1.20.1
10.10.55.84 Ready node 126d v1.20.1

2.将某个节点调度禁用
[root@node74 ~]# kubectl cordon 10.10.55.84
node/10.10.55.84 cordoned
[root@node74 ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
10.10.55.71 Ready node 126d v1.20.1
10.10.55.72 Ready node 126d v1.20.1
10.10.55.73 Ready node 126d v1.20.1
10.10.55.74 Ready master 126d v1.20.1
10.10.55.84 Ready,SchedulingDisabled node 126d v1.20.1

3.结束调度禁用
[root@node74 ~]# kubectl uncordon 10.10.55.84
node/10.10.55.84 uncordoned
[root@node74 ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
10.10.55.71 Ready node 126d v1.20.1
10.10.55.72 Ready node 126d v1.20.1
10.10.55.73 Ready node 126d v1.20.1
10.10.55.74 Ready master 126d v1.20.1
10.10.55.84 Ready node 126d v1.20.1

4.怎么查看pod被调度到哪个k8s节点
可以使用kubectl get all -n namespace -o wide命令
[root@node74 ~]# kubectl get all -n songyanlingn2 -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
pod/coordinator-1-0 1/1 Running 0 20h 172.20.42.19 10.10.55.84
pod/coordinator-2-0 1/1 Running 0 20h 172.20.95.193 10.10.55.73
pod/gcware-0 1/1 Running 0 20h 172.20.42.48 10.10.55.84
pod/gcware-1 1/1 Running 0 20h 172.20.95.247 10.10.55.73
pod/gcware-2 1/1 Running 0 20h 172.20.232.155 10.10.55.71
pod/wh1-c1-0 1/1 Running 0 20h 172.20.42.40 10.10.55.84
pod/wh1-c1-1 1/1 Running 0 20h 172.20.95.236 10.10.55.73
pod/wh1-c1-2 1/1 Running 0 20h 172.20.232.143 10.10.55.71
pod/wh1-c1-3 1/1 Running 0 20h 172.20.42.30 10.10.55.84
node这一列显示每个pod被分配到哪个k8s集群节点上

也可以用kubectl describe pod pod_name -n namespace去查看,这个命令显示的信息更加详细一些,除了显示被分配到哪个节点,还会显示该pod的配置、状态及event等。如果pod异常,event会显示异常的原因。

Kubernetes 1.20.0提供了GPU调度的支持,通过添加节点标签和调度器配置,可以将GPU资源分配给特定的容器。下面是实现GPU调度的步骤: 1. 在节点上安装GPU驱动程序和CUDA运行时环境,并确保它们可以正常工作。 2. 为GPU节点添加标签。例如,可以为节点添加一个名为“gpu”的标签: ``` kubectl label nodes <node-name> gpu=true ``` 3. 在Pod定义中添加GPU资源请求和限制。例如,可以使用以下定义: ``` apiVersion: v1 kind: Pod metadata: name: gpu-pod spec: containers: - name: gpu-container image: nvidia/cuda:11.1-base resources: requests: nvidia.com/gpu: 1 limits: nvidia.com/gpu: 2 ``` 这将请求1个GPU资源,并将限制设置为2个GPU资源。 4. 使用GPU调度器配置来调度Pod。可以使用以下配置: ``` apiVersion: kubescheduler.config.k8s.io/v1beta1 kind: KubeSchedulerConfiguration schedulerName: default-scheduler plugins: score: enabled: - name: nvidia-gpu disabled: - name: pod-nodelabel ``` 这将启用“nvidia-gpu”插件并禁用“pod-nodelabel”插件。 5. 将调度器配置文件添加到Kubernetes集群中: ``` kubectl apply -f scheduler-config.yaml ``` 其中,scheduler-config.yaml是调度器配置文件的名称。 6. 将Pod调度到GPU节点: ``` kubectl create -f gpu-pod.yaml ``` 其中,gpu-pod.yaml是包含GPU资源请求和调度器配置的Pod定义文件。 7. 确认Pod已经分配了GPU资源: ``` kubectl describe pod gpu-pod ``` 在输出中,应该可以看到GPU资源的分配情况。 通过这些步骤,就可以在Kubernetes 1.20.0中实现GPU调度
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值