Я создал сервис Kubernetes, чьи внутренние узлы не являются частью Кластера, а представляют собой фиксированный набор узлов (имеющих фиксированные IP-адреса), поэтому я также создал ресурс Endpoints с тем же именем:
apiVersion: v1
kind: Service
metadata:
name: elk-svc
spec:
ports:
- port: 9200
targetPort: 9200
protocol: TCP
---
kind: Endpoints
apiVersion: v1
metadata:
name: elk-svc
subsets:
-
addresses:
- { ip: 172.21.0.40 }
- { ip: 172.21.0.41 }
- { ip: 172.21.0.42 }
ports:
- port: 9200
Описание службы и конечных точек:
$ kubectl describe svc elk-svc
Name: elk-svc
Namespace: default
Labels: <none>
Annotations: kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"name":"elk-svc","namespace":"default"},"spec":{"ports":[{"port":9200,"protocol":"TCP"...
Selector: <none>
Type: ClusterIP
IP: 10.233.17.18
Port: <unset> 9200/TCP
Endpoints: 172.21.0.40:9200,172.21.0.41:9200,172.21.0.42:9200
Session Affinity: None
Events: <none>
$ kubectl describe ep elk-svc
Name: elk-svc
Namespace: default
Labels: <none>
Annotations: kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"v1","kind":"Endpoints","metadata":{"annotations":{},"name":"elk-svc","namespace":"default"},"subsets":[{"addresses":[{"ip":"172.21.0.40"...
Subsets:
Addresses: 172.21.0.40,172.21.0.41,172.21.0.42
NotReadyAddresses: <none>
Ports:
Name Port Protocol
---- ---- --------
<unset> 9200 TCP
Events: <none>
Мои модули могут обмениваться данными с ElasticSearch, используя внутренний IP-адрес кластера 10.233.17.18. Все идет хорошо!
У меня вопрос о том, есть ли какой-нибудь механизм механизма HealthCheck для той службы, которую я создал, поэтому, если один из моих узлов ElasticSearch выходит из строя, ie: 172.21.0.40, тогда Служба знает об этом и больше не будет направлять трафик c на этот узел, а на другие. Это возможно?
Спасибо.