k8s主节点部署pod状态一直是pending原因排除,并彻底删除pod技巧

这篇具有很好参考价值的文章主要介绍了k8s主节点部署pod状态一直是pending原因排除,并彻底删除pod技巧。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

一般来说,master节点是会产生一个污点,不允许部署pod的。

命令检测pod处于pending原因

如果其他原因也可以使用这个命令检查状态原因

# 查看节点状态原因
kubectl -n <namespace> describe pod <pod-name>

# 也可以查看日记
kubectl logs <pod-name> -n <namespace> --previous
这个命令打印前一个容器的错误消息

当出现类似这样问题
问题描述:
Warning FailedScheduling 40s (x28 over 28m) default-scheduler 0/1 nodes are available: 1 node(s) had untolerated taint {node-role.kubernetes.io/master: }, that the pod didn’t tolerate.
这是master节点上部署pod会出现的报错:说明当前pod不被mester污点所容忍

也可以查看当前节点的污点:

# 查看名为node-name节点所纯在污点
kubectl describe node <node-name> | grep Taints

# 或者查看所有节点,包括master、node节点
kubectl get no -o yaml | grep taint -A 5

使用yaml创建的pod pending无法删除,kubernetes,容器,云原生
key:node-role.kubernetes.io/master就是kubeadm集群时污点,出于安全考虑Pod不会被调度到Master Node上,默认情况下,master打了污点,不参与工作负载

关于污点和容忍度推荐看下官方解读《污点和容忍度》

解决办法

  • 最直接可以删除这个污点:
kubectl taint nodes --all node-role.kubernetes.io/master-

之后你就发现之前部署的pod就会处于running

  • 当然再次开启master节点污点,可以执行:
kubectl taint nodes k8s node-role.kubernetes.io/master=true:NoSchedule

正确删除pod

在日常的k8s运维过程中,避免不了会对某些pod进行剔除,那么如何才能正确的剔除不需要的pod呢

  • 首先,需要查出想要删除的pod
kubectl get pods -A |grep <podname>
kubectl get pods -n <namespace>
kubectl get pods --all-namespaces |grep <podname> 
  • kubectl 删除pod命令
kubectl delete pod <podname> -n <namespace>

例如:kubectl delete pod nginx-web-460776586-f6nf0 -n yundoc 

可是这里你会发现,在进行删除delete pod后,并不会直接删除。该pod会自动重新构建(可以理解为重启、重构),原因是k8s误认为我们要删除的pod异常挂了,会启用容灾机制,导致重新再拉起一个新的pod。

我们想要正常且彻底的删除一个pod,必须要先破坏掉他的容灾机制,即删除deployment机制。

  • 查看deployment信息
#可理解是调度管理pod的
kubectl get deployment --all-namespaces
kubectl get deployment -n kube-system
  • 删除deployment配置
kubectl delete deployment <deployment名> -n <namespace>

例如:kubectl delete deployment nginx-web -n yundoc

删除deployment,pod会随之删除。

可通过再次查看pod状态,然后进行删除pod命令即可,通常情况下删除deployment后,再次查询pod发现,pod已经开始自行删除了(这步可酌情处理)。文章来源地址https://www.toymoban.com/news/detail-803968.html

  • 强制删除pod(对于node部分节点无法删除的)
# 删除POD
kubectl delete pod PODNAME --force --grace-period=0

# 删除NAMESPACE不一定有用
kubectl delete ns NAMESPACENAME --force --grace-period=0

到了这里,关于k8s主节点部署pod状态一直是pending原因排除,并彻底删除pod技巧的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何解决Pod一直处于Pending状态的问题

    在Kubernetes集群中,当我们创建一个新的Pod或更新一个Pod时,可能会遇到Pod一直处于Pending状态的问题。本文将介绍解决这个问题的几种方法。 检查Node节点的状态 Pod在Kubernetes中必须运行在Node节点上。因此,如果没有可用的Node节点或者Node节点不可用,Pod就会被挂起。可以使用

    2024年02月06日
    浏览(38)
  • k8s pod 无法启动一直ContainerCreating

    查看详细信息如下 Failed to create pod sandbox: rpc error: code = Unknown desc = [failed to set up sandbox container “334d991a478b9640c66c67b46305122d7f0eefc98b2b4e671301f1981d9b9bc6” network for pod “yupay-vip-5c4bb7db5c-s6m52”: networkPlugin cni failed to set up pod “yupay-vip-5c4bb7db5c-s6m52_yupay” network: error getting ClusterInforma

    2024年04月28日
    浏览(27)
  • k8s节点pod驱逐、污点标记

    一、设置污点,禁止pod被调度到节点上 kubectl cordon k8s-node-145  设置完成后,可以看到该节点附带了 SchedulingDisabled 的标记 二、驱逐节点上运行的pod到其他节点 kubectl drain --ignore-daemonsets --delete-emptydir-data k8s-node-145  显示被驱逐的 pod  三、去除污点,允许 pod 调度到节点上

    2024年02月11日
    浏览(39)
  • k8s Pod状态详解

    在 Kubernetes 中,Pod 是最小的可部署的计算单元,它是一组容器的集合,共享同一个网络命名空间、存储卷等资源。 Kubernetes 中的 Pod 有以下几种状态: Pending(挂起) :Pod 已经被 Kubernetes API 接受,但它的容器镜像还没有被拉取,或者 Pod 所需的节点资源(CPU、内存等)还没有满足

    2024年02月15日
    浏览(38)
  • 【k8s】K8S中的cordon、uncordon和drain 冻结节点、驱离pod

    Kubernetes(K8s)中使用Kubectl 命令行工具管理 Kubernetes 集群。 kubectl 在 $HOME/.kube 目录中查找一个名为 config 的配置文件。 可以通过设置 KUBECONFIG 环境变量或设置 --kubeconfig 参数来指定其它 kubeconfig 文件。本文主要介绍Kubernetes(K8s)中kubectl cordon, drain, uncordon 常用命令。 1、Kubectl语法

    2024年03月22日
    浏览(66)
  • K8s Pod状态与容器探针

    Pod创建过程如上图所示,首先用户向apiserver发送创建pod的请求,apiserver收到用于创建pod请求后,对应会对该用户身份信息进行验证,该用户是否是合法的用户,是否具有创建pod的权限,如果能够通过apiserver的验证,则进行下一步,对用户提交的资源进行准入控制,所谓准入控

    2024年02月07日
    浏览(73)
  • 【k8s问题定位】k8s中的pod不停的重启,定位问题原因与解决方法

    现象: running的pod,短时间内重启次数太多   定位问题方法: 查看pod日志 本次使用以下命令,解决了问题 问题原因: OOM,pod被kill掉,重启了( 内存不够用 )   查看该服务的deployment.yaml文件 发现我们deployment.yaml对服务的内存使用,做了限制 解决方法: 将limit的memory数值提高,然后

    2024年02月09日
    浏览(45)
  • 【Kubernetes】K8s 查看 Pod 的状态

    NAME :Pod 的名称。 READY :代表 Pod 里面有几个容器,前面是启动的,后面是总数, 1 / 1 1/1 1/1 。 STATUS :就是当前 Pod 状态,最常见的就是 Running 正在运行,最期望的状态,只要不是 Running 的就说明有问题,就算是 Running 的就不一定没有问题。 状态 说明 Pending 挂起 在执行创建

    2024年01月15日
    浏览(71)
  • k8s 大量 pod 处于 ContainerStatusUnknown 状态

    如图所示,nexus 正常运行,但产生了大量的状态不明的 pod,原因也无从所知 解决办法,删除多余的 pod,一个一个删除,非常费劲 获取 namespace 中状态为 ContainerStatusUnknown 的 pod,并删除 获取所有非 Running 状态下的 pod,并删除

    2024年02月07日
    浏览(44)
  • 关于k8s的pod不断重启的原因分析

    k8s全称:Kubernetes 1、k8s是什么 Kubernetes 是一个全新的基于容器技术的分布式架构解决方案,是 Google 开源的一个容器集群管理系统,Kubernetes 简称 K8S。 Kubernetes 是一个一站式的完备的分布式系统开发和支撑平台,更是一个开放平台,对现有的编程语言、编程框架、中间件没有

    2024年02月07日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包