在同一级别中,占用资源高的pod,创建时间早的pod,创建时间晚的pod,状态为“终止”的pod,这些情况下,系统杀掉它们的顺序是什么样的?
时间: 2023-06-20 21:05:03 浏览: 50
Kubernetes中,Pod被调度到Node上后,会运行在一个容器中,该容器会占用Node的资源。如果Node上的资源不足,就需要Kubernetes根据一定的策略进行Pod的削减,以保证Node上的资源利用率和集群的可用性。
Kubernetes中,Pod的削减顺序是由Eviction API决定的。Eviction API是Kubernetes中的一种API,用于在Node资源不足时,削减Pod的资源占用,以释放资源给其他Pod使用。
根据Kubernetes官方文档,Pod的削减顺序如下:
1. 削减QoS(Quality of Service)等级最低的Pod。QoS等级分为三个级别:Guaranteed、Burstable和BestEffort。其中,Guaranteed级别的Pod是不可被削减的,因为它们已经被保证了一定的资源。而BestEffort级别的Pod是最容易被削减的,因为它们没有保证任何资源。
2. 削减最早创建的Pod。如果多个Pod都是同一等级的,那么Kubernetes会优先削减最早创建的Pod。
3. 削减资源占用率最高的Pod。如果多个Pod都是同一等级、创建时间相同,那么Kubernetes会优先削减资源占用率最高的Pod。
4. 削减状态为“终止”的Pod。如果多个Pod都是同一等级、创建时间相同、资源占用率相同,那么Kubernetes会优先削减状态为“终止”的Pod。
需要注意的是,Kubernetes的Pod削减顺序是可以配置的。可以通过修改Kubernetes的调度器策略来改变Pod的削减顺序。
相关问题
pod资源对象创建过程
可以回答这个问题。Pod 资源对象创建过程包括以下步骤:
1. 用户创建 Pod 描述文件,包括 Pod 名称、容器镜像、容器端口等信息。
2. 用户使用 kubectl 命令将 Pod 描述文件提交给 Kubernetes API Server。
3. Kubernetes API Server 接收到 Pod 描述文件后,会将其存储在 etcd 中。
4. Kubernetes Scheduler 会根据一定的调度算法,将 Pod 分配到某个节点上。
5. Kubernetes Controller Manager 会监控 Pod 的状态,如果发现 Pod 处于非正常状态,会尝试进行自动修复。
6. Kubelet 是运行在每个节点上的代理,它会从 Kubernetes API Server 中获取 Pod 描述文件,并根据描述文件创建容器。
7. 容器创建成功后,Kubelet 会向 Kubernetes API Server 报告 Pod 的状态。
以上就是 Pod 资源对象创建过程的主要步骤。
k8s中pod的创建过程
当你在 Kubernetes 中创建一个 Pod 时,以下是 Pod 的创建过程:
1. 首先,你需要定义一个 Pod 的 YAML 文件,该文件包含了该 Pod 的配置和元数据信息,例如 Pod 的名称、容器镜像、容器端口等。
2. 然后,你需要使用 `kubectl apply` 命令将该 YAML 文件部署到 Kubernetes 集群中。
3. Kubernetes API Server 接收到部署请求后,会将该请求转发给调度器(Scheduler)。
4. 调度器会根据 Pod 的资源需求和可用的节点资源,选择一个合适的节点来运行该 Pod。
5. Kubernetes API Server 将 Pod 的规范(Spec)发送给该节点的 kubelet。
6. kubelet 在该节点上创建一个 Pod 的容器,并启动容器内的进程。
7. kubelet 将该 Pod 的状态(Status)报告给 Kubernetes API Server,包括容器的状态、IP 地址等信息。
8. Kubernetes API Server 更新该 Pod 的状态,并将其保存到 etcd 中。
这样,一个 Pod 就被创建并运行起来了。如果该 Pod 中的容器出现故障或被删除,kubelet 会自动重启该容器,确保该 Pod 的运行。