我在使用Istio连接Kubernetes上的两个服务时遇到问题。我的服务向elasticsearch发出POST请求。
2020-11-18T21:51:53.758079131Z org.elasticsearch.client.ResponseException: method [POST], host [http://elasticsearch:9200], URI [/_bulk?timeout=1m], status line [HTTP/1.1 503 Service Unavailable]
2020-11-18T21:51:53.758087238Z upstream connect error or disconnect/reset before headers. reset reason: connection failure
我读到了一些关于这方面的问题/GitHub问题,其中一个可能的原因可能是mtls
,那么我如何禁用它?
我试着用这个:
apiVersion: "security.istio.io/v1beta1"
kind: "PeerAuthentication"
metadata:
name: "default"
namespace: "istio-system"
spec:
mtls:
mode: DISABLE
但有了这个PeerAuthentication
,我甚至无法联系到我的服务。你有什么建议吗?
禁用mtls
此对等身份验证是禁用mtls的正确方法。
apiVersion: "security.istio.io/v1beta1"
kind: "PeerAuthentication"
metadata:
name: "default"
namespace: "istio-system"
spec:
mtls:
mode: DISABLE
有istio的相关文档。
弹性搜索问题
根据istio文档:
要使用Istio运行Elasticsearch,需要适当设置两个Elasticsearch配置参数:network.bind_host和network.publish_host默认情况下,这些参数设置为network.host参数。如果network.host设置为0.0.0.0,Elasticsearch很可能会选择pod IP作为发布地址,无需进一步配置。
如果默认配置不起作用,则可以将network.bind_host设置为0.0.0.0或localhost(127.0.0.1(,并将network.publish_host设置成pod IP。例如:
...
containers:
- name: elasticsearch
image: docker.elastic.co/elasticsearch/elasticsearch:7.2.0
env:
- name: network.bind_host
value: 127.0.0.1
- name: network.publish_host
valueFrom:
fieldRef:
fieldPath: status.podIP
...
有关详细信息,请参阅Elasticsearch的网络设置。
如果这不起作用,有两个github问题:
- https://github.com/istio/istio/issues/14662#issuecomment-723669123
- https://github.com/elastic/cloud-on-k8s/issues/2770
建议使用
annotations:
traffic.sidecar.istio.io/excludeOutboundPorts: ""
traffic.sidecar.istio.io/excludeInboundPorts: ""
有关于这方面的弹性搜索文档。