2

注意:解决方案可以使用 netcat 或任何其他内置的 Linux 实用程序

我需要实现一个 initContainer 和 liveness 探测,以确认我的 redis pod 已为我的 redis 依赖 pod 之一启动。我已尝试在此处( (printf "PING\r\n"; sleep 1) | nc 10.233.38.133 6379) 作为答案提供的 netcat 解决方案,但我收到-NOAUTH Authentication required.错误响应。有什么办法吗?我知道我可以在我的 Django 代码中安装 redis-cli 或创建管理命令,但我不想这样做。我也不想为我的 Redis 实例实现 Web 服务器并使用 curl 命令。

4

2 回答 2

5

您始终可以将AUTH命令作为探测的一部分发送,例如:

`"AUTH ....\r\nPING\r\n"`

除非您INFO从服务器获取,否则您似乎并不关心响应的性质,因此不需要身份验证,只需测试NOAUTH.

于 2020-02-07T23:52:05.450 回答
0

这是您可以使用的 initContainers 节:

  initContainers:
    - name: wait-for-redis
      image: busybox
      command:
      - /bin/sh
      - -c
      - >
        set -x;
        until ((printf "AUTH <password>\r\n"; sleep 1) | nc <redis-host> 6379);
        do echo waiting for redis;
        sleep 2; done

只是不要忘记改变他们<redis-host><password>价值观。

于 2021-02-03T00:55:04.970 回答