Как заставить несколько DNS указывать на один сервис в Kubernetes - PullRequest
0 голосов
/ 15 октября 2018

Когда мы использовали docker-compose, мы могли сопоставить несколько псевдонимов одному контейнеру / услуге через links.Например, bucket1.s3 и bucket2.s3 являются псевдонимами для контейнера s3.Теперь, когда мы переходим к kubernetes, я пытаюсь сделать то же самое и связать контейнеры, используя обнаружение служб.

То, о чем я могу думать сейчас, - это иметь один сервис для каждого сегмента, и каждый сервис будет указывать на один и тот же модуль.Это кажется большой работой.Есть ли способ сделать несколько DNS сопоставленными одной службе, чтобы bucket1.s3.namespace.svc.cluster.local и bucket2.s3.namespace.svc.cluster.local могли быть преобразованы в s3 службу?

1 Ответ

0 голосов
/ 15 октября 2018

Я полагаю, что вам может понадобиться одна служба, сопоставленная с двумя развертываниями, вы можете иметь два развертывания с именами bucket1 и bucket2 и иметь их с одной меткой app: buckets, а затем иметь службу с селекторомвключая этот ярлык.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: bucket1
  labels:
    app: buckets
spec:
  replicas: 3
  selector:
    matchLabels:
      app: buckets
  template:
    metadata:
      labels:
        app: buckets
    spec:
      containers:
      - name: bucket-container
        image: bucketimage
        ports:
        - containerPort: 80

apiVersion: apps/v1
kind: Deployment
metadata:
  name: bucket2
  labels:
    app: buckets
spec:
  replicas: 3
  selector:
    matchLabels:
      app: buckets
  template:
    metadata:
      labels:
        app: buckets
    spec:
      containers:
      - name: bucket-container
        image: bucketimage
        ports:
        - containerPort: 80

kind: Service
apiVersion: v1
metadata:
  name: s3
spec:
  selector:
    app: buckets
  ports:
  - protocol: TCP
    port: 80

Но еще один вопрос - зачем вам это?если и bucket1, и bucket2 содержат разную информацию / данные.

Как правило, в Kubernetes у вас будет одно развертывание с несколькими модулями / репликами для обслуживания данных либо в bucket1, либо в bucket2, предполагая, что данные одинаковы.Если данные отличаются, почему бы не иметь 2 развертываний с разными записями DNS.

Если вы используете K8s 1.11 или новее, вы также можете настроить сердцевины ConfigMap в kube-systemПространство имен, чтобы, возможно, получить то, к чему вы пытаетесь добраться, но с точки зрения DNS вы не можете иметь одну карту записей с двумя CNAME в соответствии с RFC 1034, раздел 3.6.2.Вы также не можете жестко закодировать IP-адреса в Kubernetes, так как ваши IP-адреса всегда меняются, когда ваши модули создаются / удаляются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...