Kubernetes 库伯内特斯生命探测器:一个豆荚能监测它自己的卫星吗?
我的想法是将liveness探测器作为命令实现,并使用Kubernetes 库伯内特斯生命探测器:一个豆荚能监测它自己的卫星吗?,kubernetes,kubernetes-pod,Kubernetes,Kubernetes Pod,我的想法是将liveness探测器作为命令实现,并使用 $ grep something ERROR 从pod内部,因此,如果在pod的输出中存在包含错误的行,则liveness探测器将失败 这可能吗?如果没有,我是否可以在同一个pod中添加另一个容器来监视第一个容器?您可以查询 请求如下所示: GET/api/v1/namespace/{namespace}/pods/{name}/log 要使用通常安装在吊舱中的令牌,您可以这样称呼它: curlhttps://kubernetes/api
$ grep something ERROR
从pod内部,因此,如果在pod的输出中存在包含错误的行,则liveness探测器将失败
这可能吗?如果没有,我是否可以在同一个pod中添加另一个容器来监视第一个容器?您可以查询
请求如下所示:
GET/api/v1/namespace/{namespace}/pods/{name}/log
要使用通常安装在吊舱中的令牌,您可以这样称呼它:
curlhttps://kubernetes/api/v1/namespaces/default/pods/$HOSTNAME/log-k\
-H“授权:持票人$(cat/var/run/secrets/kubernetes.io/servicecomport/token)”
确保每个吊舱可以有多个容器。这不是一种标准方法,因为它违反了“每个容器一个进程”的原则。你可以阅读这篇文章,解释Kubernetes中的多容器吊舱,用例是什么,等等
apiVersion: v1
kind: Pod
metadata:
name: test
spec:
containers:
- name: 1st
image: nginx
volumeMounts:
- name: html
mountPath: /tmp/html
livenessProbe:
exec:
command:
- cat
- /tmp/html/test
initialDelaySeconds: 10
periodSeconds: 3
- name: 2nd
image: debian
volumeMounts:
- name: html
mountPath: /tmp/html
command: ["/bin/sh", "-c"]
args:
- while true; do
date >> /tmp/html/test;
sleep 5;
done
volumes:
- name: html
emptyDir: {}
在本例中,pod
有两个容器。容器1st
运行nginx
,并安装/tmp/html
和livenessProbe
,从启动开始10秒后,每隔3秒检查文件/tmp/html/test
是否存在,如果丢失,则重新启动容器。和2nd
容器运行debian
,装载了/tmp/html/
,但它也在每隔5秒向文件/tmp/html/test
中添加数据条目
在上面的示例中,如果手动删除文件并对其进行缓存,它将重新启动1st
容器
您必须根据您的特殊需要定制此示例,例如使用
grep-q ERROR/tml/html/test
,如果成功,将删除/tmp/html/test
,或更改探针本身。谢谢。为了完整起见,我最后将参数?sinceSeconds=添加到查询中,因为否则它太大了。