elasticsearch - 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 很陌生,我做错了什么?
解决方案
正如您从服务 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
有关更多信息,请查看此文档
推荐阅读
- git - 如何限制仅从特定分支创建分支
- windows-xp - Delphi 6 TQuery 无法在一台 Windows XP 机器上修改只读数据集
- java - Jboss java.lang.OutOfMemoryError:Java 堆空间
- javascript - 如何将 webpack 哈希名称添加到服务工作者文件?
- c# - Xamarin.Forms FlexLayout 调整为最大值
- javascript - JavaScript:检查所有数组是否包含相同的值?
- asp.net-core - asp-route-* 不在视图组件的视图内呈现查询字符串
- android - 谷歌地图自定义标记图标大小未在 Android 上保留
- powershell - 如何使用 Powershell 中的变量将一系列文件移动到文件夹中?
- python - 如何在 Keras 中正确连接 Dense 层和 Lambda 层?