kubernetes - 按主机名动态路由到特定 StateFulSet POD

标签 kubernetes kubernetes-ingress kubernetes-statefulset

我有一个有 2 个副本的 StatefulSet。我想创建一个端点以便能够访问此副本中的任何一个,将主机名 id 传递给它,并且如果我将其扩展到更多副本,则需要可以访问新的 pod。

我可以这样做,创建一个像这样的 Ingress:

apiVersion: voyager.appscode.com/v1beta1
kind: Ingress
metadata:
  name: test-ingress
  namespace: default
spec:
  rules:
  - host: appscode.example.com
    http:
      paths:
      - path: /0
        backend:
          hostNames:
          - web-0
          serviceName: nginx-set
          servicePort: '80'
      - path: /1
        backend:
          hostNames:
          - web-1
          serviceName: nginx-set
          servicePort: '80'


有了这个,GETappscode.example.com/0将被路由到 web-0荚。
但是,我怎样才能以动态的方式做到这一点?如果我将副本更改为 3,我将需要手动创建一个新的路径路由到 pod web-2可达。

最佳答案

您需要一个程序(运算符(operator))监听 Kubernetes API,并在每次有状态集中的 pod 数量时修补入口资源。

使用去:

  • 观看资源:https://medium.com/programming-kubernetes/building-stuff-with-the-kubernetes-api-part-4-using-go-b1d0e3c1c899
  • 修补资源:https://dwmkerr.com/patching-kubernetes-resources-in-golang/
  • 关于kubernetes - 按主机名动态路由到特定 StateFulSet POD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61018338/

    相关文章:

    nginx - 阻止 ingress-nginx 负载均衡器上的特定路径

    ssl - 我的微服务也需要 TLS 还是 Ingress TLS 终止就足够了?

    Kubernetes 状态集 : kill the pod if container dies

    mongodb - 在 Kubernetes 上为 mongodb 创建 StatefulSet 时出错

    Spring Cloud Kubernetes - 启用配置重新加载时 Spring boot 无法启动

    go - k8s NewListWatchFromClient 与 NewSimpleClientset 崩溃

    docker - Ingress-nginx日志-出现很多奇怪的条目

    kubernetes - 如何在kubernetes容器命令中使用环境变量?

    docker - Nginx 返回错误的内容类型

    kubernetes - 为什么使用 StatefulSet?无状态 Pod 不能使用持久卷吗?