我正在尝试用kubernetes进行部署,我已经按照它,https: //www.ianlewis.org/en/bluegreen-deployments-kubernetes,没关系。我添加了一个活动探针来执行健康检查,
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: flask-1.3
spec:
replicas: 2
template:
metadata:
labels:
name: app
version: "1.3"
spec:
containers:
- name: appflask
image: 192.168.99.100:5000/fapp:1.2
livenessProbe:
httpGet:
path: /index2
port: 5000
failureThreshold: 1
periodSeconds: 1
initialDelaySeconds: 1
ports:
- name: http
containerPort: 5000
路径“index2”不存在,我想测试失败的部署。问题是我执行时:
kubectl get pods -o wide
几秒钟之一其中一个pods状态为“RUNNING”
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
flask-1.3-6c644b8648-878qz 0/1 CrashLoopBackOff 6 6m19s 10.244.1.250 node
flask-1.3-6c644b8648-t6qhv 0/1 CrashLoopBackOff 7 6m19s 10.244.2.230 nod2e
几秒钟后,一个pod正在RUNNING,当live失败时:
NAME READY STATUS RESTARTS AGE
IP NODE NOMINATED NODE READINESS GATES
flask-1.3-6c644b8648-878qz 1/1 Running 7 6m20s 10.244.1.250 node
flask-1.3-6c644b8648-t6qhv 0/1 CrashLoopBackOff 7 6m20s 10.244.2.230 nod2e <none> <none>
在运行回到CrashLoopBackOff之后,问题是,为什么如果livenesprobe总是失败,它会在几秒钟内保持运行?
当您第一次启动pod(或容器)时,它将启动并进入“运行”状态。现在,如果容器中没有正在运行的进程,或者存在非连续进程(比如sleep 100),则当此进程完成时,kubernetes将考虑完成此pod。
现在,由于您有一个部署,即将保持一定数量的副本运行,它会重新创建pod。但同样,没有进程在运行,所以再次完成。这是一个无限循环。
如果要保持pod正常运行,即使内部没有进程,也可以tty: true在yaml文件中传递参数。
apiVersion: v1
kind: Pod
metadata:
name: debian
labels:
app: debian
spec:
containers:
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。