首页 > 解决方案 > 通过 ingress 访问所有 kubernetes statefulset pod

问题描述

使用具有 3 个 pod 的 STS:“pod-0、pod-1、pod-2”来创建 Apache Spark 集群,每个 pod 都是一个工作人员,其日志可通过 HTTP 获得。

为了查看日志,我想通过 HTTP 入口访问所有 pod,例如:

“https://pod-0.my-ingress.domain”或“https://my-ingress.domain/pod-0”

是否可以通过声明一个 Ingress 来自动执行此操作?

标签: apache-sparkkuberneteskubernetes-ingress

解决方案


在 kubernetes 中没有开箱即用的解决方案,但是您可以为 statefulset 中的每个 pod 创建服务,然后在入口中引用它:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: sts-ingress
spec:
  rules:
  - http:
      paths:
      - path: /pod-0
        pathType: Prefix
        backend:
          service:
            name: pod-0
            port:
              number: 80
      - path: /pod-1
        pathType: Prefix
        backend:
          service:
            name: pod-1
            port:
              number: 80

您可以利用操作员模式来自动化它,此用例已经存在元控制器示例:https ://github.com/metacontroller/metacontroller/tree/master/examples/service-per-pod


推荐阅读