建筑设计公司名称起名,网站站seo教程,番号网wordpress模板,乐陵seo外包公司Pod常见的状态和重启策略 常见的pod状态第一阶段#xff1a;第二阶段#xff1a;扩展#xff1a; pod重启策略测试Always重启策略正常停止容器内的tomcat服务非正常停止容器里的tomcat服务 测试never重启策略正常停止容器里的tomcat服务非正常停止容器里的tomcat服务 测试On… Pod常见的状态和重启策略 常见的pod状态第一阶段第二阶段扩展 pod重启策略测试Always重启策略正常停止容器内的tomcat服务非正常停止容器里的tomcat服务 测试never重启策略正常停止容器里的tomcat服务非正常停止容器里的tomcat服务 测试OnFailure重启策略正常停止容器里的tomcat服务非正常停止容器里的tomcat服务 常见的pod状态 第一阶段 挂起Pending 1、正在创建Pod但是Pod中的容器还没有全部被创建完成处于此状态的Pod应该检查Pod依赖的存储是否有权限挂载、镜像是否可以下载、调度是否正常等 2、我们在请求创建pod时条件不满足调度没有完成没有任何一个节点能满足调度条件已经创建了pod但是没有适合它运行的节点叫做挂起调度没有完成。 失败Failed Pod 中的所有容器都已终止了并且至少有一个容器是因为失败终止。也就是说容器以非0状态退出或者被系统终止。 未知Unknown 未知状态所谓pod是什么状态是apiserver和运行在pod节点的kubelet进行通信获取状态信息的如果节点之上的kubelet本身出故障那么apiserver就连不上kubelet得不到信息了就会看Unknown通常是由于与pod所在的node节点通信错误。 Error 状态 Pod 启动过程中发生了错误 成功Succeeded Pod中的所有容器都被成功终止即pod里所有的containers均已terminated。
第二阶段
UnschedulablePod不能被调度 scheduler没有匹配到合适的node节点PodScheduledpod正处于调度中在scheduler刚开始调度的时候还没有将pod分配到指定的node在筛选出合适的节点后就会更新etcd数据将pod分配到指定的nodeInitialized所有pod中的初始化容器已经完成了ImagePullBackOffPod所在的node节点下载镜像失败RunningPod内部的容器已经被创建并且启动。
扩展
Evicted状态出现这种情况多见于系统内存或硬盘资源不足可df-h查看docker存储所在目录的资源使用情况如果百分比大于85%就要及时清理下资源尤其是一些大文件、docker镜像。CrashLoopBackOff容器曾经启动了但可能又异常退出了
pod重启策略
Pod的重启策略RestartPolicy应用于Pod内的所有容器当某个容器异常退出或者健康检查失败时kubelet将根据 重启策略来进行相应的操作。Pod 的 spec 中包含一个 restartPolicy 字段其可能取值包括 Always、OnFailure 和 Never。默认值是 Always。Always只要容器异常退出kubelet就会自动重启该容器。这个是默认的重启策略OnFailure当容器终止运行且退出码不为0时由kubelet自动重启该容器。Never不论容器运行状态如何kubelet都不会重启该容器。
测试Always重启策略
vim pod.yaml apiVersion: v1
kind: Pod
metadata:name: demo-podnamespace: defaultlabels:app: myapp
spec:restartPolicy: Alwayscontainers:- name: tomcat-pod-javaports:- containerPort: 8080image: xianchao/tomcat-8.5-jre8:v1imagePullPolicy: IfNotPresentkubectl apply -f pod.yaml正常停止容器内的tomcat服务
kubectl exec -it demo-pod -- /bin/bash
/usr/local/tomcat/bin/shutdown.sh查看pod状态发现正常停止容器里的tomcat服务容器重启了一次pod又恢复正常了 kubectl get podNAME READY STATUS RESTARTS AGE
demo-pod 1/1 Running 1 (5s ago) 3m24s非正常停止容器里的tomcat服务
kubectl exec -it demo-pod -- /bin/bash
kill 1可以看到容器终止了并且又重启一次重启次数增加了一次 kubectl get podNAME READY STATUS RESTARTS AGE
demo-pod 1/1 Running 2 (5s ago) 3m24s测试never重启策略
vim pod.yaml apiVersion: v1
kind: Pod
metadata:name: demo-podnamespace: defaultlabels:app: myapp
spec:restartPolicy: Nevercontainers:- name: tomcat-pod-javaports:- containerPort: 8080image: xianchao/tomcat-8.5-jre8:v1imagePullPolicy: IfNotPresent kubectl apply -f pod.yaml正常停止容器里的tomcat服务
kubectl exec -it demo-pod -- /bin/bash
/usr/local/tomcat/bin/shutdown.sh查看pod状态发现正常停止容器里的tomcat服务pod正常运行容器没有重启 kubectl get podNAME READY STATUS RESTARTS AGE
demo-pod 1/1 Completed 0 3m24s非正常停止容器里的tomcat服务
kubectl exec -it tomcat-pod -- /bin/bash
kill 1可以看到容器状态是error并且没有重启这说明重启策略是never那么pod里容器服务无论如何终止都不会重启 kubectl get podNAME READY STATUS RESTARTS AGE
demo-pod 1/1 error 0 3m24s测试OnFailure重启策略
vim pod.yaml apiVersion: v1
kind: Pod
metadata:name: demo-podnamespace: defaultlabels:app: myapp
spec:restartPolicy: OnFailurecontainers:- name: tomcat-pod-javaports:- containerPort: 8080image: xianchao/tomcat-8.5-jre8:v1imagePullPolicy: IfNotPresent kubectl apply -f pod.yaml正常停止容器里的tomcat服务
kubectl exec -it demo-pod -- /bin/bash
/usr/local/tomcat/bin/shutdown.sh查看pod状态发现正常停止容器里的tomcat服务退出码是0pod里的容器不会重启 kubectl get podNAME READY STATUS RESTARTS AGE
demo-pod 0/1 complete 0 3m24s非正常停止容器里的tomcat服务
kubectl exec -it tomcat-pod -- /bin/bash
kill 1上面可以看到非正常停止pod里的容器容器退出码不是0那就会重启容器 kubectl get podNAME READY STATUS RESTARTS AGE
demo-pod 1/1 running 1 3m24s