首页 > 解决方案 > 将每个 Pod 的服务扩展到元控制器(kubernetes)中的多个端口

问题描述

我为 statefulset 创建了一个 service-per-pod,它适用于单个端口 (80/tcp)。但是,我需要将它用于多个端口(例如,80/tcp、30000/udp 等)。

如何将其扩展到 service-per-pod Metacontroller中的多个端口?

sync-service-per-pod.jsonnet - 图像

标签: kubernetesgoogle-kubernetes-enginekubernetes-helmazure-akskubernetes-pod

解决方案


service-per-pod示例实际上向您展示了如何在manifest/sync-service-per-pod.jsonnet中执行此操作。

注释允许您指定一组逗号分隔的端口,这些service-per-pod-ports端口将由生成的服务公开:

service-per-pod-ports: "80:80,8080:8080"

然后在sync-service-per-pod.jsonnet

获取端口

local ports = statefulset.metadata.annotations["service-per-pod-ports"]

然后遍历它们ports,在服务规范中创建多个:

   ports: [
      {
        local parts = std.split(portnums, ":"),
        name: "port-" + std.parseInt(parts[0]),
        port: std.parseInt(parts[0]),
        targetPort: std.parseInt(parts[1]),
      }
      for portnums in std.split(ports, ",")
    ]

请注意对上述集合的for portnums in std.split(ports, ",")迭代。ports

看起来你正在尝试做一些更有活力的事情,所以你可以这样:

for index in std.range(1,N) 

其中 N 是索引的最大值。


推荐阅读