我是第一次使用Kubernetes(v 1.11.2-gke.18),并且正在尝试让Sentry作为Kubernetes部署运行。所有这些都在Google Cloud中运行。这是Postgres,Redis和Sentry的YAML文件:
Redis和Postgres部分似乎正常运行,但是Sentry失败,因为:could not translate host name "postgres-sentry:5432" to address: Name or service not known
。
我的问题是:如何使这些服务正常通信?如何使Sentry容器与Postgres和Redis通信?
答案 0 :(得分:1)
在Kubernetes中,Pod通常可以使用DNS通过服务找到其他Pod。
如果postgres-sentry
与哨兵应用程序pod / deployment位于相同的名称空间(看起来像默认名称空间),则您的配置看起来正确。
因此它指出您可能与DNS有关。您可以通过将其装进哨兵应用容器/吊舱并尝试ping postgres-sentry
来检查:
$ kubectl exec -it <pod-id-of-your-sentry-app> sh
# ping postgres-sentry
还要检查您是否/etc/resolv.conf
看起来像这样:
# cat /etc/resolv.conf
nameserver 10.96.0.10
search default.svc.cluster.local svc.cluster.local cluster.local
options ndots:5
最后,检查您的DNS Pod是否正在运行:
$ kubectl -n kube-system get pods | grep dns
coredns-xxxxxxxxxxx-xxxxx 1/1 Running 15 116d
coredns-xxxxxxxxxxx-xxxxx 1/1 Running 15 116d
答案 1 :(得分:1)
事实证明,在这种情况下,我需要更改SENTRY_REDIS_HOST和SENTRY_POSTGRES_HOST值,使其在env声明中没有端口号。取出这些内容使一切都按预期进行。