首页 > 解决方案 > Kubernetes - 不能卷曲到服务,但我可以卷曲到 Pod

问题描述

我有 Elasticsearch Pod 和一个服务。我还有另一个名为“website”的 Pod(相同的命名空间 - 默认),它想要获取 Elasticsearch 的 html 内容(使用 curl)。

当我访问“网站”Pod(使用 exec)并运行$curl -v elasticsearch-service时,我得到:

curl -v elasticsearch-service
* Rebuilt URL to: elasticsearch-service/
*   Trying 10.111.159.30...
* TCP_NODELAY set

注意:10.111.159.30 是 elasticsearch-service IP。

但是当我运行$curl 172.15.0.5:9200(POD IP)时,我得到了正确的输出:

 $curl 172.15.0.5:9200
{
  "name" : "1X7ZARS",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "V8GX-5STSoW_PJ8Qguu7Jw",
  "version" : {
    "number" : "6.6.1",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "1fd8f69",
    "build_date" : "2019-02-13T17:10:04.160291Z",
    "build_snapshot" : false,
    "lucene_version" : "7.6.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

出于某种原因,Elasticsearch 的服务不会重定向到 els 应用程序。

这是 Pod 的 yaml:

apiVersion: v1
kind: Pod
metadata:
  name: elasticsearch
spec:
  containers:
  - name: elasticsearch
    image: yageldhn/els-java8:6.6.1
    ports:
    - containerPort: 9200
    - containerPort: 9300
    env:
    - name: discovery.type
      value: "single-node"

这是服务的 yaml:

apiVersion: v1
kind: Service
metadata:
  name: elasticsearch-service
spec:
  ports:
  - port: 9200
    name: serving
    protocol: TCP
  - port: 9300
    name: node2node
    protocol: TCP
  selector:
    app: elasticsearch

我对 K8s 很陌生,我做错了什么?

标签: elasticsearchcurlkubernetes

解决方案


正如您从服务 yaml 文件中看到的那样,您添加了

  selector:
    app: elasticsearch

它将搜索app: elasticsearch匹配的标签以创建端点。您需要如下标记您的 pod:

apiVersion: v1
kind: Pod
metadata:
  name: elasticsearch
  labels:
    app: elasticsearch  # Should match with service selector
spec:
  containers:
  - name: elasticsearch
    image: yageldhn/els-java8:6.6.1
    ports:
    - containerPort: 9200
    - containerPort: 9300
    env:
    - name: discovery.type
      value: "single-node"

然后如果你跑

kubectl get endpoints elasticsearch-service

您将看到为您的应用程序创建的端点

NAME                    ENDPOINTS                         AGE
elasticsearch-service   172.17.0.3:9200,172.17.0.3:9300   1m

有关更多信息,请查看此文档


推荐阅读