kubernetes - Kubernetes服务端点健康检查

标签 kubernetes kubernetes-health-check

我创建了一个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>

我的Pod可以使用内部群集IP 10.233.17.18与ElasticSearch进行通信。一切顺利!

我的问题是关于是否有某种方法可以为我创建的服务创建某种healthCheck机制,因此,如果我的ElasticSearch节点之一发生故障,即:172.21.0.40,则该服务会意识到这一点,并且将不再将流量路由到该节点,但路由到其他节点。那可能吗 ?

谢谢。

最佳答案

k8s不支持此功能。
有关更多说明,请参见根据您的要求提出的问题:
https://github.com/kubernetes/kubernetes/issues/77738#issuecomment-491560980
对于这种用例,最佳实践是使用类似haproxy的负载均衡器

关于kubernetes - Kubernetes服务端点健康检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59968671/

相关文章:

kubernetes - 如何在Google Cloud Platform上使用ClusterIP None公开StatefulSet服务?

kubernetes - Kubeflow-羽衣甘蓝 :- How to integrate kubeflow-kale extension to run pipelines on a seperate standalone cluster of Kubeflow pipelines

kubernetes 指标服务器不启动

kubernetes - 为什么我的 DataDog 实例报告 Kubernetes "no_pod"?

kubernetes - Kubernetes-如何知道哪个奴才在托管Pod

kubernetes - PersistentVolumeClaim 在阿里云 Kubernetes 上创建失败

kubernetes - Kubernetes自动回滚

kubernetes - 掌控可选的嵌套变量

Kubernetes 的 http liveness 探针在 pod 负载过重时失败

kubernetes - 如何定期更新kubernetes