我正在使用Jenkins和Kubernetes来执行此操作。
由于我的loadBalancer需要一个健康的吊舱,因此必须将livenessProbe添加到吊舱中。
我对广告连播的配置:
apiVersion: v1
kind: Pod
metadata:
labels:
component: ci
spec:
# Use service account that can deploy to all namespaces
serviceAccountName: default
# Use the persisnte volume
containers:
- name: gcloud
image: gcr.io/cloud-builders/gcloud
command:
- cat
tty: true
- name: kubectl
image: gcr.io/cloud-builders/kubectl
command:
- cat
tty: true
- name: liveness
image: k8s.gcr.io/busybox
args:
- /bin/sh
- -c
- touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600
livenessProbe:
exec:
command:
- cat
- /tmp/healthy
initialDelaySeconds: 5
periodSeconds: 5
发生的问题是,当我想部署代码(通过CD在Jenkins上)时,就碰到了
/ tmp / healthy;
命令,它超时。
我得到的错误响应如下:
java.io.IOException: Failed to execute shell script inside container [kubectl] of pod [wobbl-mobile-label-qcd6x-13mtj]. Timed out waiting for the container to become ready!
当我输入 kubectl获取事件时 我得到以下回应:
Liveness probe failed: cat: can't open '/tmp/healthy': No such file or directory
关于如何解决此问题的任何提示?
我已经读过这个documentation的生动性,我从那里开始进行配置。
答案 0 :(得分:2)
从您所引用的链接可以看出。该示例旨在帮助您了解活动探针的工作原理。我来自以下link
的示例他们在
之后有意删除了/ tmp / healthy文件apiVersion: v1
kind: Pod
metadata:
labels:
test: liveness
name: liveness-exec
spec:
containers:
- name: liveness
image: k8s.gcr.io/busybox
args:
- /bin/sh
- -c
- touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600
livenessProbe:
exec:
command:
- cat
- /tmp/healthy
initialDelaySeconds: 5
periodSeconds: 5
它的作用是在创建容器时创建/ tmp / healthy文件。 5秒钟后,活动性探针将启动并检查/ tmp / healthy文件,这时容器中确实存在/ tmp / healthy文件。 30秒后,它将删除文件,并且活动性探针无法找到/ tmp / healthy文件,并重新启动容器。此过程将继续进行,并且活动性探针每30秒将无法通过健康检查。
如果仅添加
活力探针应该工作正常