文章目录

  • 【成功排水展示】
    • 初始状态
    • 排水命令
    • 正确排水的输出
    • 排水后结果
    • 恢复节点
  • 【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集群排水报错)相关推荐

  1. 管理pod的nat策略

    关闭docker及flannel的snat策略 关闭dockersnat docker默认开启masq,可以通过 --ip-masq=false参数关闭masq 关闭flannel snat策略 fl ...

  2. k8s资源限制——资源的配额管理(Resource Quotas)

    简介 在k8s集群中为了能够使系统正常稳定运行,通常会限制Pod的资源使用情况,在k8s集群中如果有一个程序出现异常,并占用大量的系统资源.如果未对该Pod进行资源限制的话,可能会影响其他的Pod. ...

  3. CKA考试习题:K8S日志、监控与应用管理

    所有命令都验证过,有更好的方式,欢迎留言~~~ CKA 习题和真题汇总 CKA考试经验:报考和考纲 CKA :2019年12月英文原题和分值 CKA考试习题:K8S基础概念--API 对象 CKA考试 ...

  4. Kubernetes如何使用ReplicationController、Replica Set、Deployment管理Pod

    https://blog.csdn.net/yjk13703623757/article/details/53746273 https://www.cnblogs.com/ilinuxer/p/663 ...

  5. [转帖] Kubernetes如何使用ReplicationController、Replica Set、Deployment管理Pod ----文章很好 但是还没具体操作实践 也还没记住....

    Kubernetes如何使用ReplicationController.Replica Set.Deployment管理Pod https://blog.csdn.net/yjk13703623757 ...

  6. 云原生|kubernetes部署和运行维护中的错误汇总(不定时更新)

    一, 安装的etcd版本是3.4,如果是安装的etcd3下面的配置应该不会报错. 查询etcd状态报错: conflicting environment variable "ETCD_NAM ...

  7. k8s调度之node的亲和性以及pod的亲和性/反亲和性

    k8s调度之node的亲和性以及pod的亲和性/反亲和性 通常情况下,使用的都是k8s默认的调度调度方式,但是在有些情况下,我们需要将pod运行在具有特定的标签的node上才能都运行,这个时候,pod ...

  8. Kubernetes(k8s)常用资源的使用、Pod的常用操作

    1.K8s是如何运行容器的. 答:k8s是通过定义一个Pod的资源,然后在Pod里面运行容器的.K8s最小的资源单位Pod. 2.如何创建一个Pod资源呢? 答:在K8s中,所有的资源单位都可以使用一 ...

  9. 11. K8S资源限制,多账户管理及网络实现

    1. Kubernetes pod.container与namespace资源限制 CPU 以核心(毫核,1核=1000毫核,500m=0.5核)为单位. memory 以字节为单位. request ...

最新文章

  1. 消息队列—经典5连问—你能抗几道?
  2. 年薪25-50w| 虚拟现实创新中心三维重建算法高级研究员招聘
  3. 大话中文文本分类之Transformers
  4. 如何才能写出好的软件设计文档?
  5. 【Paper】2020_GrHDP Solution for Optimal Consensus Control of Multiagent Discrete-Time Systems
  6. Crawler:利用Beautifulsoup库+find_all方法实现下载在线书架小说《星祖的电影世界》
  7. SpringBoot Admin2.0 集成 Java 诊断神器 Arthas 实践
  8. IntelliJ IDEA2017 修改缓存文件的路径(转载:https://www.cnblogs.com/acm-bingzi/p/ideaCachePath.html)
  9. 工作多年,怀才不遇你该怎么办?
  10. WPF实现实现圆形菜单
  11. oracle 11203 ora32701,11G RAC ORA-32701 参考学习
  12. Kubernetes 小白学习笔记(7)--kubernetes的架构与组件-Node组件
  13. POJ 1088 滑雪 记忆化搜索
  14. 《穷查理宝典》的读后感作文4000字
  15. Drupal笔记之字体配置
  16. Centos7 搭建JDK/Mysql8/redis/Nginx全套傻瓜指令
  17. 如何配置 Cilium 和 BGP 协同工作?
  18. 针对Informer中时序数据ETT油温数据分析
  19. STM32脱机烧录器源文件、离线烧录器 制作资料 源文件
  20. android获取多媒体库的视频、音频、图片

热门文章

  1. 分析优酷2016.04最新视频加密算法
  2. Google的bigquery gis初学者指南
  3. 【高效复习】C语言——模拟题(uestc)
  4. android 9.0 c7Pro,三星C7 Pro和C9 Pro哪个好?三星C9 Pro和C7 Pro区别对比
  5. HTML5 -- canvas实现简易画板
  6. 音视频开发---ffmpeg rtmp拉流
  7. 路由器和交换机文件维护
  8. DM 数据迁移工具——DTS(MySQL数据迁移到DM8数据库 Windows环境)
  9. 关于C的表达式未定义行为
  10. 10个极品智能车方案合辑,夏日避暑进阶两不误