第一种情况是没 有分配节点,假如没有分配节点,那么可能是集群里没有地方调度,意味着整个集群的资源都 不够。或者是 pod 设置的时候,没有进行 Node select,即选择哪些 Node 进行调度。又或者 是污点,亲和性没有满足等情况,都有可能造成这个问题。
第二种情况是已经分配节点,此时 这个节点肯定已经满足 K8S 的 pod 调度要求的,但是实际还是没有被调度在目标节点上运行, 有可能是因为这个节点上磁盘满了,也有可能是因为这个节点上的 pod 的 IP 池不够了,所以造 成了 pod 没有办法调度上去。
可能还有一种情况 imagepull backoff ,即拉取镜像失败了。拉 取镜像失败可能是网络问题导致没有办法连接仓库,也有可能是和仓库之间进行的相关验证产 生问题了,还有可能用了 http 方式进行拿取,而不是 https 方式。如果用 http 方式,就必须要用另一种方式进行要求。
还有可能是 crash loop back off,它表明这个 pod 曾经正常运行, 后来因为某种原因终止。终止出来的情况会显示 code, code 的值一般是 0-127。如果是 0 的话,表示它是正常终止,不需要额外关注;如果 code 是 1 到 127,那么可能需要看 pod 日 志。比如一个 pod 有两个容器的 nginx 和 centos,两个容器设置了不同的 CPU limit 限制以 及 restart count。如果它有不正常的重启, Exit code 会有状态码 1 到 127,很多时候可能是 和 pod 上的应用有关。比如说应用突然抛出了异常,或者说这个客户的这个应用是和 DNS 强相 关的,别的附属条件或者 DNS 没有正常运行,这个 pod 就一定会终止(有一定可能性),但 是这需要和业务设计相关,业务设计是这么按照逻辑设计的才有可能。
以上内容摘自《企业运维之云原生和Kubernetes实战》,这本书收录在开发者“藏经阁,下载地址:https://developer.aliyun.com/topic/download?id=8529
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。