【发布时间】:2019-03-15 06:57:01
【问题描述】:
我能够将 pod 名称解析为相应容器内的 ip 地址,例如如果我有一个名为 elasticsearch-0 的 pod,并且我通过 kubectl exec -it elasticsearch-0 bash 进入容器,我可以执行以下操作:
curl elasticsearch-0:9200
并得到响应:
{
"name" : "OUvCoFL",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "1Vhf2-pGR0m3e4ezDRAZ0Q",
"version" : {
"number" : "6.1.0",
"build_hash" : "c0c1ba0",
"build_date" : "2017-12-12T12:32:54.550Z",
"build_snapshot" : false,
"lucene_version" : "7.1.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
但是,如果我尝试从不同的容器中执行此操作,例如kibana-0,它失败了:
curl: (6) Could not resolve host: elasticsearch-0; Name or service not known
有人知道我错过了什么吗?
谢谢
【问题讨论】:
-
你有service吗?
-
curl elasticsearch-0:9200在该容器内工作。因为该容器的HOSTNAME是elasticsearch。跨容器(跨 pod),我们必须使用service。跨容器(在同一个 pod 中),我们可以使用localhost连接。
标签: kubernetes