kubernetes Service выберите несколько меток - PullRequest
0 голосов
/ 17 января 2020

У меня есть два StatefulSet с именами my-sts и my-sts-a, я хочу создать один сервис , который обращается к одинаково индексированным пакетам , из двух разных StatefulSets , например: my-sts-0 и my-sts-a-0. Но найдено k8s do c говорит:

Селекторы меток для обоих объектов определены в json или файлах yaml с использованием карт, и поддерживаются только селекторы требований на основе равенства

Моя идея состоит в том, чтобы создать метку для двух пакетов sts, например:

my-sts-0 has label abc:sts-0
my-sts-a-0 has label abc:sts-0

my-sts-1 has label abc:sts-1
my-sts-a-1 has label abc:sts-1

Как получить индекс этих пакетов, чтобы я мог создать метку с именем abc=sts-<index> подойти к нему?

Есть ли другой способ?

1 Ответ

1 голос
/ 17 января 2020

Kubernetes уже дает вам DNS-имя для выбора отдельных модулей StatefulSet . Скажем, у вас есть Сервис my-sts, который соответствует каждому модулю в StatefulSet, а StatefulSet настроен с serviceName: my-sts; затем вы можете получить доступ к именам хостов my-sts-0.my-sts.namespace.svc.cluster.local и т. д.

Если вы хотите, чтобы служба специально предназначалась для определенного модуля c, существует также метка statefulset.kubernetes.io/pod-name , которая получает добавляется автоматически, так что вы можете прикрепить к этому

apiVersion: v1
kind: Service
metadata:
  name: my-sts-master
spec:
  selector:
    statefulset.kubernetes.io/pod-name: my-sts-0
  ports: [...]
...