K8S排水错误汇总(忽略DaemonSet管理Pod、Mysql集群排水报错、Mongo集群排水报错)
文章目录
- 【成功排水展示】
- 初始状态
- 排水命令
- 正确排水的输出
- 排水后结果
- 恢复节点
- 【FAQ】
- 1. 忽略DaemonSet管理的Pod
- 语法
- 报错示例
- 2. 删除本地数据
- 语法
- 报错示例(mysql集群节点删除失败)
- 3. mongo集群排水报错
- 【报错】
- 【分析】
- 【解决】
【成功排水展示】
初始状态
[root@DoM01 ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
dom01 Ready master 579d v1.15.2
dom02 Ready master 579d v1.15.2
dom03 Ready master 579d v1.15.2
don01 Ready <none> 579d v1.15.2
don02 Ready <none> 579d v1.15.2
don03 Ready <none> 579d v1.15.2
don04 Ready <none> 579d v1.15.2
don05 Ready <none> 579d v1.15.2
don06 Ready <none> 349d v1.15.2
don07 Ready <none> 292d v1.15.2
don08 Ready <none> 292d v1.15.2
排水命令
kubectl drain don02 --ignore-daemonsets --delete-local-data
正确排水的输出
[root@DoM01 mongodb]# kubectl drain don02 --ignore-daemonsets --delete-local-data
node/don02 already cordoned
WARNING: ignoring DaemonSet-managed Pods: kube-admin/k8s-mon-daemonset-ggz45, kube-system/kube-flannel-ds-amd64-lbt5l, kube-system/kube-proxy-w2dfg
node/don02 drained
排水后结果
[root@DoM01 mongodb]# kubectl get node
NAME STATUS ROLES AGE VERSION
dom01 Ready master 580d v1.15.2
dom02 Ready master 580d v1.15.2
dom03 Ready master 580d v1.15.2
don01 Ready <none> 580d v1.15.2
don02 Ready,SchedulingDisabled <none> 580d v1.15.2
don03 Ready <none> 580d v1.15.2
don04 Ready <none> 580d v1.15.2
don05 Ready <none> 580d v1.15.2
don06 Ready <none> 350d v1.15.2
don07 Ready <none> 293d v1.15.2
don08 Ready <none> 293d v1.15.2
恢复节点
[root@DoM01 mongodb]# kubectl uncordon don02
node/don02 uncordoned
[root@DoM01 mongodb]# kubectl get node
NAME STATUS ROLES AGE VERSION
dom01 Ready master 580d v1.15.2
dom02 Ready master 580d v1.15.2
dom03 Ready master 580d v1.15.2
don01 Ready <none> 580d v1.15.2
don02 Ready <none> 580d v1.15.2
don03 Ready <none> 580d v1.15.2
don04 Ready <none> 580d v1.15.2
don05 Ready <none> 580d v1.15.2
don06 Ready <none> 350d v1.15.2
don07 Ready <none> 293d v1.15.2
don08 Ready <none> 293d v1.15.2
【FAQ】
1. 忽略DaemonSet管理的Pod
语法
kubectl drain don02 --ignore-daemonsets
报错示例
[root@DoM01 ~]# kubectl drain don02
node/don02 cordoned
error: unable to drain node "don02", aborting command...There are pending nodes to be drained:don02
cannot delete DaemonSet-managed Pods (use --ignore-daemonsets to ignore): kube-admin/k8s-mon-daemonset-ggz45, kube-system/kube-flannel-ds-amd64-lbt5l, kube-system/kube-proxy-w2dfg
2. 删除本地数据
语法
kubectl drain don02 --delete-local-data
报错示例(mysql集群节点删除失败)
[root@DoM01 ~]# kubectl drain don02
node/don02 already cordoned
error: unable to drain node "don02", aborting command...There are pending nodes to be drained:don02
error: cannot delete Pods with local storage (use --delete-local-data to override): mysql/mysqlha-2
3. mongo集群排水报错
【报错】
[root@DoM01 ~]# kubectl drain don02 --ignore-daemonsets --delete-local-data
node/don02 already cordoned
WARNING: ignoring DaemonSet-managed Pods: kube-admin/k8s-mon-daemonset-ggz45, kube-system/kube-flannel-ds-amd64-lbt5l, kube-system/kube-proxy-w2dfg
……
error when evicting pod "mongodb-secondary-0" (will retry after 5s): Cannot evict pod as it would violate the pod's disruption budget.
evicting pod "mongodb-secondary-0"
【分析】
报错说违反了pod的中断预算,说明我们对"mongodb-secondary-0"的删除不合法。我们看一下helm的设置。
replicaSet:## Whether to create a MongoDB replica set for high availability or notenabled: trueuseHostnames: true## Name of the replica set##name: rs0## Key used for replica set authentication### key: key## Number of replicas per each node type##replicas:secondary: 2arbiter: 1## Pod Disruption Budget## ref: https://kubernetes.io/docs/concepts/workloads/pods/disruptions/pdb:enabled: trueminAvailable:secondary: 2arbiter: 1
如上可见,启动2个从节点,1个仲裁节点。最低保存2个从节点,1个仲裁节点。
果然我们删除其中一个从节点会不合规。
我们看一下namespace中的情况:
[root@DoM01 mongodb]# kubectl get pod -n mongodb
NAME READY STATUS RESTARTS AGE
mongodb-arbiter-0 1/1 Running 0 63d
mongodb-primary-0 2/2 Running 4 41d
mongodb-secondary-0 2/2 Running 0 123d
mongodb-secondary-1 2/2 Running 1 181d
和helm中设置一致。
【解决】
修改values.yml文件如下
## Number of replicas per each node type##replicas:secondary: 2arbiter: 1## Pod Disruption Budget## ref: https://kubernetes.io/docs/concepts/workloads/pods/disruptions/pdb:enabled: trueminAvailable:secondary: 1arbiter: 1
- 更新helm
[root@DoM01 mongodb]# helm upgrade mongodb -n mongodb ./
K8S排水错误汇总(忽略DaemonSet管理Pod、Mysql集群排水报错、Mongo集群排水报错)相关推荐
- 管理pod的nat策略
关闭docker及flannel的snat策略 关闭dockersnat docker默认开启masq,可以通过 --ip-masq=false参数关闭masq 关闭flannel snat策略 fl ...
- k8s资源限制——资源的配额管理(Resource Quotas)
简介 在k8s集群中为了能够使系统正常稳定运行,通常会限制Pod的资源使用情况,在k8s集群中如果有一个程序出现异常,并占用大量的系统资源.如果未对该Pod进行资源限制的话,可能会影响其他的Pod. ...
- CKA考试习题:K8S日志、监控与应用管理
所有命令都验证过,有更好的方式,欢迎留言~~~ CKA 习题和真题汇总 CKA考试经验:报考和考纲 CKA :2019年12月英文原题和分值 CKA考试习题:K8S基础概念--API 对象 CKA考试 ...
- Kubernetes如何使用ReplicationController、Replica Set、Deployment管理Pod
https://blog.csdn.net/yjk13703623757/article/details/53746273 https://www.cnblogs.com/ilinuxer/p/663 ...
- [转帖] Kubernetes如何使用ReplicationController、Replica Set、Deployment管理Pod ----文章很好 但是还没具体操作实践 也还没记住....
Kubernetes如何使用ReplicationController.Replica Set.Deployment管理Pod https://blog.csdn.net/yjk13703623757 ...
- 云原生|kubernetes部署和运行维护中的错误汇总(不定时更新)
一, 安装的etcd版本是3.4,如果是安装的etcd3下面的配置应该不会报错. 查询etcd状态报错: conflicting environment variable "ETCD_NAM ...
- k8s调度之node的亲和性以及pod的亲和性/反亲和性
k8s调度之node的亲和性以及pod的亲和性/反亲和性 通常情况下,使用的都是k8s默认的调度调度方式,但是在有些情况下,我们需要将pod运行在具有特定的标签的node上才能都运行,这个时候,pod ...
- Kubernetes(k8s)常用资源的使用、Pod的常用操作
1.K8s是如何运行容器的. 答:k8s是通过定义一个Pod的资源,然后在Pod里面运行容器的.K8s最小的资源单位Pod. 2.如何创建一个Pod资源呢? 答:在K8s中,所有的资源单位都可以使用一 ...
- 11. K8S资源限制,多账户管理及网络实现
1. Kubernetes pod.container与namespace资源限制 CPU 以核心(毫核,1核=1000毫核,500m=0.5核)为单位. memory 以字节为单位. request ...
最新文章
- 消息队列—经典5连问—你能抗几道?
- 年薪25-50w| 虚拟现实创新中心三维重建算法高级研究员招聘
- 大话中文文本分类之Transformers
- 如何才能写出好的软件设计文档?
- 【Paper】2020_GrHDP Solution for Optimal Consensus Control of Multiagent Discrete-Time Systems
- Crawler:利用Beautifulsoup库+find_all方法实现下载在线书架小说《星祖的电影世界》
- SpringBoot Admin2.0 集成 Java 诊断神器 Arthas 实践
- IntelliJ IDEA2017 修改缓存文件的路径(转载:https://www.cnblogs.com/acm-bingzi/p/ideaCachePath.html)
- 工作多年,怀才不遇你该怎么办?
- WPF实现实现圆形菜单
- oracle 11203 ora32701,11G RAC ORA-32701 参考学习
- Kubernetes 小白学习笔记(7)--kubernetes的架构与组件-Node组件
- POJ 1088 滑雪 记忆化搜索
- 《穷查理宝典》的读后感作文4000字
- Drupal笔记之字体配置
- Centos7 搭建JDK/Mysql8/redis/Nginx全套傻瓜指令
- 如何配置 Cilium 和 BGP 协同工作?
- 针对Informer中时序数据ETT油温数据分析
- STM32脱机烧录器源文件、离线烧录器 制作资料 源文件
- android获取多媒体库的视频、音频、图片