概述
这是我第一次设置readinessProbe,所以我可能缺少一些非常基本的东西。
我有两个吊舱的部署。一个运行nginx,另一个构建应用程序,并将资产放到构建目录中,这是两个容器共享的卷。构建资产的容器需要一两分钟才能完成。这是我的deployment.yaml (简写):
...
containers:
- name: personal-site-container
readinessProbe:
exec:
command:
- ls
- /opt/dist/js/app.*.js
initialDelaySeconds: 120
image: <username>/<image>:latest
volumeMounts:
- name: build-volume
mountPath: /opt/dist
- name: nginx-server
readinessProbe:
exec:
command:
- ls
- /usr/share/nginx/html/js/app.*.js
initialDelaySeconds: 120
image: nginx:1.19.0
ports:
- containerPort: 80
volumeMounts:
- name: build-volume
mountPath: /usr/share/nginx/html我所期望的
因为当构建了资产时,ls命令将成功,而当具有该名称的资产不存在时则会失败,因此我预计探测将在两分钟后运行,然后将两个容器的状态设置为就绪。
实际发生了什么
当我应用这个部署时,一切都按预期进行(个人站点容器中的日志显示静态资产正在生成,0/2容器处于就绪状态),在第一分钟内,容器进入崩溃退避循环。当我以下列方式查看事件时:
k get event --field-selector involvedObject.name=personal-site-5b595d46db-tmsrb我看到一个“后退重新启动失败的容器”事件,它的类型是“警告”,但没有任何类型的错误。
问题(S)
我还能做些什么来调查为什么readinessProbe似乎不等待120秒钟才能更改就绪状态?如果解决方案很明显,我在这里遗漏了什么?
发布于 2020-09-25 09:03:48
“后退重新启动失败的容器”与准备状态探测无关。失败的准备状态探测永远不会导致容器被杀死或重新启动。它只负责考虑为服务请求准备好的容器,并将其添加到服务的负载均衡器中。
另一个则构建一个应用程序,并将这些资产放到构建目录中。
我在这里怀疑的是个人站点容器构建资产和出口。由于默认的重新启动策略是always,容器被重新启动,等等,所以它进入了一个“回退重新启动”循环。
顺便说一句,个人现场集装箱的准备状态探测没有多大意义。第一,它不属于任何服务,第二,它是为了完成工作和退出(据我所知)。您可能想看看Kubernetes 工作。
https://stackoverflow.com/questions/64038227
复制相似问题