驱除pod 移除节点
参考文章:https://www.jianshu/p/752be98e9077
# drain 移除同时驱逐 cordon 不可调度 uncordon 可调度
kubectl cordon nodename
kubectl drain nodename
kubectl uncordon nodename
深入分散部署案例:
https://blog.csdn/dkfajsldfsdfsd/article/details/81173207
示例1:用反亲和特性实现pod位置协商
假设集群有五个工作节点,部署一个web应用,假设其用redis作内存缓存,共需要三个副本,通过反亲和将三个redis副本分别部署在三个不同的节点上,提高可用性,Deployment配置如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis-cache
spec:
selector:
matchLabels:
app: store
replicas: 3
template:
metadata:
labels:
app: store
spec:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: app
operator: In
values:
- store
topologyKey: "kubernetes.io/hostname"
containers:
- name: redis-server
image: redis:3.2-alpine
设置标签污点文章:
https://cloud.tencent/developer/article/1762009
Ⅰ、 污点 ( Taint ) 的组成
使用kubectl taint命令可以给某个Node节点设置污点,Node被设置上污点之后就和Pod之间存在了一种相斥的关系,可以让Node拒绝Pod的调度执行,甚至将Node已经存在的Pod驱逐出去
每个污点的组成如下:
key=value:effect
每个污点有一个 key 和 value 作为污点的标签,其中 value 可以为空,effect 描述污点的作用。
当前 taint effect 支持如下三个选项:
NoSchedule :表示k8s将不会将Pod调度到具有该污点的Node上
PreferNoSchedule :表示k8s将尽量避免将Pod调度到具有该污点的Node上
NoExecute :表示k8s将不会将Pod调度到具有该污点的Node上,同时会将Node上已经存在的Pod驱逐出去
Ⅱ、污点的设置、查看和去除
设置污点
kubectl taint nodes k8s-node2 check=yuanzhang:NoExecute
节点说明中,查找Taints字段
kubectl describe nodes k8s-node2
去除污点
kubectl taint nodes k8s-node2 check:NoExecute-
本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。
三 基础知识
1 为什么K8s的master节点不允许我们的业务Pod呢?
NoSchedule : 一定不被调度 但是不会驱逐已有的 这个部署 ingress-controller 的时候 有用
PreferNoSchedule : 尽量不被调度
NoExecute : 不会调度,并且还会驱逐Node已有Pod 这个很坏
kubectl describe nodes k8s-master | grep Taints
2 如何去除调度呢
#添加 尽量不调度 PreferNoSchedule
kubectl taint nodes k8s-master02 node-role.kubernetes.io/master:PreferNoSchedule
#去除污点NoSchedule,最后一个"-"代表删除
kubectl taint nodes k8s-master02 node-role.kubernetes.io/master:NoSchedule-
3 `#添加 尽量不调度 NoExecute 这一条策略有坑 会移除已经部署的 daementset的 pod
kubectl taint nodes 10.71.8.11 node-role.kubernetes.io/master:NoExecute
kubectl taint nodes 10.71.8.12 node-role.kubernetes.io/master:NoExecute-
kubectl taint nodes 10.71.8.13 node-role.kubernetes.io/master:NoExecute-
#去除污点NoSchedule,最后一个"-"代表删除
kubectl taint nodes 10.71.8.13 node-role.kubernetes.io/master:NoSchedule-
`
更多推荐
k8s NoSchedule k8s 设置污点 NoExecute有点复杂 移除节点 drain和不可调度cordon
发布评论