Как создать несколько экземпляров Mediawiki в кластере Kubernetes - PullRequest
0 голосов
/ 10 мая 2019

Я собираюсь развернуть несколько экземпляров Mediawiki на моем кластере Kubernetes.В моем случае файл развертывания YAML для БД (MySQL) работает так, как и предполагалось, файл развертывания для Mediawiki развертывает столько пакетов, сколько и ожидалось, но я не могу получить к ним доступ из-за пределов кластера, даже если я создаю для этого службуcase.

Если я пытаюсь создать один отдельный модуль Mediawiki и сервис для доступа к нему из-за пределов кластера, он работает как надо.Если я пытаюсь создать файл развертывания для Mediawiki, равный файлу для MySQL, он создает модули и запрашиваемую службу, но он недоступен из назначенного ему внешнего IP-адреса.

Мой файл развертывания для Mediawiki:

apiVersion: v1
kind: Service
metadata:
 name: mediawiki-service
 labels:
  name: mediawiki-service
  app: mediawiki
spec:
 type: LoadBalancer
 ports:
 - port: 80
   targetPort: 80
 selector:
  name: mediawiki-pod
  app: mediawiki
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mediawiki
spec:
  replicas: 6
  selector:
    matchLabels:
      app: mediawiki
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: mediawiki
    spec:
      containers:
      - image: mediawiki
        name: mediawiki
        ports:
        - containerPort: 80
          name: mediawiki

Это файл определения модуля:

apiVersion: v1
kind: Pod
metadata:
 name: mediawiki-pod
 labels:
  name: mediawiki-pod
  app: mediawiki
spec:
 containers:
 - name: mediawiki
   image: mediawiki
   ports:
   - containerPort: 80

Это файл определения службы:

apiVersion: v1
kind: Service
metadata:
 name: mediawiki-service
 labels:
  name: mediawiki-service
  app: mediawiki
spec:
 type: LoadBalancer
 ports:
 - port: 80
   targetPort: 80
 selector:
  name: mediawiki-pod

Случайным результатом должно быть то, что яможет развернуть несколько экземпляров Mediawiki в моем кластере и получить к ним доступ извне с помощью externel-IP.

Ответы [ 2 ]

0 голосов
/ 10 мая 2019

Если вы посмотрите на kubectl describe service mediawiki-service в обоих сценариях, я ожидаю, что вы увидите, что в случае с одним модулем существует список Endpoints:, который включает в себя один IP-адрес (модуль, но это деталь реализации)но в случае развертывания он говорит: <none>.

Ваша служба соответствует только модулям с ярлыками name и app:

apiVersion: v1
kind: Service
spec:
 selector:
  name: mediawiki-pod
  app: mediawiki

Но модули, развернутые вашимРазвертывание имеет только app метки:

apiVersion: apps/v1
kind: Deployment
spec:
  template:
    metadata:
      labels:
        app: mediawiki

Так что в этот конкретный момент (метки внутри шаблона для развертывания; добавление их на верхнем уровне не повредит, но эта встроенная точка - вот чтоважно) нужно добавить второй ярлык name: mediawiki-pod.

0 голосов
/ 10 мая 2019

Если вы хотите развернуть несколько экземпляров какого-либо программного обеспечения в кластере Kubernetes, лучше проверить, есть ли для него диаграмма helm . В вашем случае ответ положительный - для Mediawiki есть стабильная диаграмма руля .

Создать несколько экземпляров так же просто, как создать несколько версий, например:

helm install --name wiki1 stable/mediawiki
helm install --name wiki2 stable/mediawiki
helm install --name wiki3 stable/mediawiki

Чтобы использовать Helm, вы должны установить его на свой локальный компьютер и в кластер k8s - следуя краткому руководству , достаточно 1011 *.

...