kuberenetes中活动性探针中的curl和grep命令

问题描述

我是Kubernetes的新手。我已经为我的python控制台应用程序编写了一个部署。这个应用程式已订阅NATS(讯息queue列)。

我已在活动性问题中编写了命令,以检查nats服务器中的connection_id(我的应用程序连接ID)是否存在。否则,在这种情况下,请重新启动pod,因为应用程序无法正常运行。

我尝试了不同的命令。例如

        livenessProbe:
          exec:
            command:
            - sh
            - -c
            #- curl -s nats:8222/connz?cid=$(cat /tmp/cid) | python3 -c "import sys,json; print(json.load(sys.stdin)['connections'][0]['cid'])" | echo

            #- curl -s http://nats:8222/connz?cid=$(cat /tmp/cid) | grep "$(cat /tmp/cid)"
            - curl -s http://nats:8222/connz?cid=$(cat /tmp/cid) | grep "cid"
          initialDelaySeconds: 10
          periodSeconds: 10

和另外一些curl命令。然后当我删除/tmp/cid文件时。 它应该失败,对吧?但事实并非如此。

如果我运行此命令 curl -s http://nats:8222/connz?cid=$(cat /tmp/cid) | grep -c "\"cid\": $(cat /tmp/cid)"

我收到io.k8s.api.core.v1.ExecAction.command: got "map",expected "string"这个问题。

有什么建议吗?

解决方法

curl -s http://localhost:8222/connz?cid=$(cat /tmp/cid) | grep -c "cid.* $(cat /tmp/cid),"

这终于对我有用。坚持了2天:(