我正在尝试在 Kubernetes 上设置 EFK 堆栈。使用的 Elasticsearch 版本是 6.3.2。一切正常,直到我将探针配置放在部署 YAML 文件中。我收到如下错误。这导致 pod 被声明为不健康并最终重新启动,这似乎是错误的重新启动。
警告 Unhealthy 15s kubelet, aks-agentpool-23337112-0 Liveness probe failed: Get http://10.XXX.Y.ZZZ:9200/_cluster/health : dial tcp 10.XXX.Y.ZZZ:9200: connect: connection拒绝
我确实尝试使用来自不同容器的 telnet 到具有 IP 和端口的 elasticsearch pod,我成功了,但只有节点上的 kubelet 无法解析 pod 的 IP,导致探测失败。
以下是 Kubernetes Statefulset YAML 的 pod 规范的片段。对决议的任何帮助都会非常有帮助。在没有任何线索的情况下花了很多时间:(
PS:堆栈正在 AKS 群集上设置
- name: es-data
image: quay.io/pires/docker-elasticsearch-kubernetes:6.3.2
env:
- name: NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: CLUSTER_NAME
value: myesdb
- name: NODE_MASTER
value: "false"
- name: NODE_INGEST
value: "false"
- name: HTTP_ENABLE
value: "true"
- name: NODE_DATA
value: "true"
- name: DISCOVERY_SERVICE
value: "elasticsearch-discovery"
- name: NETWORK_HOST
value: "_eth0:ipv4_"
- name: ES_JAVA_OPTS
value: -Xms512m -Xmx512m
- name: PROCESSORS
valueFrom:
resourceFieldRef:
resource: limits.cpu
resources:
requests:
cpu: 0.25
limits:
cpu: 1
ports:
- containerPort: 9200
name: http
- containerPort: 9300
name: transport
livenessProbe:
httpGet:
port: http
path: /_cluster/health
initialDelaySeconds: 40
periodSeconds: 10
readinessProbe:
httpGet:
path: /_cluster/health
port: http
initialDelaySeconds: 30
timeoutSeconds: 10
没有探针,吊舱/容器运行得很好。期望在部署 YAML 上设置时探针应该可以正常工作,并且 POD 不应该重新启动。