如何从 Kubernetes 探测器测试文件是否存在?
How to test a file exists from a Kubernetes probe?
我在 MySQL Pod 中有一个 sidecar 容器,它将使用 MySQL 套接字文件来访问数据库。
我想确定 MySQL 已经成功启动,因此在这个 sidecar 容器启动之前已经创建了套接字文件。
我尝试添加一个 readiness
探测器,其中 exec.command
为 test -S /var/run/mysqld/mysqld.sock
但它失败了:
Readiness probe failed: OCI runtime exec failed: exec failed: container_linux.go:380: starting container process caused: exec: "test -S /var/run/mysqld/mysqld.sock": stat test -S /var/run/mysqld/mysqld.sock: no such file or directory: unknown
当我在 sidecar 容器中打开终端会话时,我可以 ls
套接字文件,它就在那里。
看来我的 test -S <path>
命令在探测上下文中没有按预期工作。
如何编写我的探测器,以便一旦套接字文件可用,我的 sidecar 容器就会启动?
尝试:
...
readinessProbe:
exec:
command:
- sh
- -c
- test -S /var/run/mysqld/mysqld.sock
我在 MySQL Pod 中有一个 sidecar 容器,它将使用 MySQL 套接字文件来访问数据库。
我想确定 MySQL 已经成功启动,因此在这个 sidecar 容器启动之前已经创建了套接字文件。
我尝试添加一个 readiness
探测器,其中 exec.command
为 test -S /var/run/mysqld/mysqld.sock
但它失败了:
Readiness probe failed: OCI runtime exec failed: exec failed: container_linux.go:380: starting container process caused: exec: "test -S /var/run/mysqld/mysqld.sock": stat test -S /var/run/mysqld/mysqld.sock: no such file or directory: unknown
当我在 sidecar 容器中打开终端会话时,我可以 ls
套接字文件,它就在那里。
看来我的 test -S <path>
命令在探测上下文中没有按预期工作。
如何编写我的探测器,以便一旦套接字文件可用,我的 sidecar 容器就会启动?
尝试:
...
readinessProbe:
exec:
command:
- sh
- -c
- test -S /var/run/mysqld/mysqld.sock