# #kubernetes #google-kubernetes-engine #kubernetes-helm #azure-aks #kubernetes-pod
Вопрос:
Я создал сервис для каждого модуля для набора состояний, и он работает для одного порта (80/tcp). Однако мне нужно использовать его для нескольких портов (например, 80/tcp, 30000/udp и т. Д.).
Как я могу распространить это на несколько портов в метаконтроллере service-per-pod?
служба синхронизации для каждого модуля.jsonnet — изображение
Комментарии:
1. Вы пробовали что-то вроде github.com/metacontroller/metacontroller/blob/master/examples/… в вашей аннотации?
2. Нет, но нужен пример на основе jsonnet для нескольких портов в метаконтроллере i.stack.imgur.com/OvNXX.png
Ответ №1:
Пример службы для каждого модуля фактически показывает, как это сделать в 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 — максимальное значение индекса.
Комментарии:
1. Как передать комбинацию протоколов, таких как 80:8080/tcp и 81:8080/udp ?