k8s创建pod状态(k8s pod配置文件)
原标题:k8s创建pod状态(k8s pod配置文件)
导读:
k8s中pod的创建开始到结束详细过程K8s中Pod的创建开始到结束的详细过程包括用户提交创建请求、API Server接收并认证、Pod对象信息写入etcd、Schedul...
k8s中Pod的创建开始到结束详细过程
K8s中pod的创建开始到结束的详细过程包括用户提交创建请求、API Server接收并认证、POD对象信息写入ETCd、scheduler调度Pod、Kubelet创建并运行Pod、Pod状态更新以及Pod就绪性探测。用户提交创建请求:用户通过kubectl命令行工具或其他Kubernetes api客户端提交Pod创建请求。
例如,deployment通常会将Pod的重启策略设置为Always,以确保Pod在出现问题时能够自动恢复。K8s重启的时间间隔和最大延迟 kubernetes在重启Pod时,会遵循一定的时间间隔和最大延迟规则。具体来说,重启的时间间隔通常是2的幂次方倍增(即2n),最大延迟时间通常为5分钟。
K8S首先启动新的POD S等待新的POD进入Ready状态 K8S创建Endpoint,将新的POD纳入负载均衡 K8S移除与老POD相关的Endpoint,并且将老POD状态设置为Terminating,此时将不会有新的请求到达老POD 同时 K8S 会给老POD发送SIGTERM信号,并且等待 terminationGracePeriodSeconds 这么长的时间。
k8s在创建pod时先创建pause容器,还是先与cni交互执行网络
1、总结,Kubernetes在创建pod时,先启动pause容器以创建命名空间,然后pod中的其他容器共享这个命名空间,实现进程间的隔离和独立封装。通过pause容器的命名空间机制,确保了容器之间的资源隔离和通信隔离,有效管理了容器在集群中的运行。
2、sandbox创建:首先,CONTAINERd通过CRI创建sandbox,包含容器的基本信息和配置。网络环境设置:在创建sandbox的过程中,CNI插件负责设置容器的网络环境,包括命名空间、网卡等。容器创建与网络配置:容器创建后,CNI插件执行网络设置,确保每个Pod的网络环境正确配置。

3、K8s中Pod的创建开始到结束的详细过程包括用户提交创建请求、API Server接收并认证、Pod对象信息写入etcd、Scheduler调度Pod、Kubelet创建并运行Pod、Pod状态更新以及Pod就绪性探测。用户提交创建请求:用户通过kubectl命令行工具或其他KuberNETes API客户端提交Pod创建请求。
4、Pod 功能:Pod是K8S中最小的可部署单元,通常由一个或多个紧密耦合的容器组成。这些容器共享网络、存储资源,并在同一个环境中运行。结构:Pod可以包含一个或多个容器,这些容器通过共享资源实现紧密耦合。当创建一个Pod时,K8S调度器会将Pod调度到合适的工作节点上。
5、Calico+Macvlan双网络为实现Calico+macvlan双网络配置,必须创建一个辅助网络,专门用于macvlan。配置时需避免将默认路由设置为macvlan网络,以避免路由冲突。确保`vmultus-cni.io/defaul...`注解设置为`net-calico-2`,而`k8s.vcni.cncf.io/netw...`注解设置为`net-macvlan`。
K8S故障检查-Pod处于ContainerCreating状态
1、常见导致pod长时间处于“ContainerCreating”状态的原因包括镜像拉取问题、资源不足、持久卷问题、网络问题以及安全上下文或docker/运行时问题。要排查镜像拉取问题,可使用kubectl describe pod命令检查pod事件,寻找“Failed to pull image”或“ImagePullBackoff”事件,表明镜像拉取存在问题。
2、面对k8s应用卡在ContainerCreating状态的困扰,我通过kubectl describe po命令获取到了关键的日志信息。
3、问题描述:Pod处于终止状态或状态未知,通常与节点故障或删除操作相关。解决办法:强制删除Pod;检查节点的健康状态,必要时重启节点组件;检查集群的删除操作是否正确执行。UnexpectedAdmissiONError:问题描述:Pod因节点磁盘空间不足而无法正常创建或运行。
4、ContainerCreating:这种情况表示容器正在创建中,常见于配置问题导致的容器创建失败。例如,当使用Docker服务时,可能会遇到节点上的kube-proxy、kubelet或docker服务重启后容器仍无法创建的情况。解决这类问题,通常需要检查服务的运行状态,确认资源是否充足,或者是否存在网络、存储配置问题。
5、一个pod的完整创建,通常会伴随着各种事件的产生,k8s种事件的种类总共只有4种:PodStatus 有一组PodConditions。PodCondition中的ConditionStatus,它代表了当前pod是否处于某一个阶段(PodScheduled,Ready,Initialized,Unschedulable),“true” 表示处于,“false”表示不处于。
K8s中Pod生命周期和重启策略
例如,Deployment通常会将Pod的重启策略设置为Always,以确保Pod在出现问题时能够自动恢复。K8s重启的时间间隔和最大延迟 Kubernetes在重启Pod时,会遵循一定的时间间隔和最大延迟规则。具体来说,重启的时间间隔通常是2的幂次方倍增(即2n),最大延迟时间通常为5分钟。
K8s中Pod生命周期包括五种状态,重启策略有三种。Pod生命周期状态: Pending:API Server已创建Pod,但容器镜像尚未运行。 Running:Pod中的所有容器都在运行中或正在启动中。 Succeeded:Pod中的所有容器已成功退出,并且不会重启。 Failed:Pod中的所有容器都已退出,且至少有一个容器是异常退出的。
Always策略:无论正常或非正常停止,容器均会重启。例如,正常关闭Tomcat服务后,Pod状态恢复正常,而非正常关闭时,容器会重启。Never策略:正常或非正常停止,容器都不会重启。停止Tomcat后,正常情况下容器状态保持,非正常时显示Error状态。
重启策略有三种:Always、OnFailure和Never。如果设置为Always,那么无论因为什么原因停止,Pod都会自动重启。如果设置为OnFailure,则只有Pod非正常停止时(例如,因为崩溃或被杀死)才会重启。如果设置为Never,则Pod在任何情况下都不会自动重启。
执行方式 重启Pod:在K8s中,由于不支持直接重启Pod资源,因此重启Pod实际上是通过删除并重新创建Pod来实现的。这一过程是由K8s的控制器(如Deployment控制器)根据重启策略自动执行的^[1][2]^。重建Pod:则可能涉及更多的资源和配置管理。



