Windows и Linux живут вместе в кластере Kubernetes - PullRequest
0 голосов
/ 06 сентября 2018

Я просматривал документацию kubernetes , которая, кажется, обладает совместимостью с Windows, однако я не совсем понимаю, могут ли Linux и Windows жить вместе (я имею в виду, на разных виртуальных машинах, но одинаково кластер).

Я хотел бы знать, есть ли какая-либо поддержка этого сценария в gcloud, azure или aws. А также, процедура или пример, чтобы заставить его работать. Например, как создать модуль в нужной виртуальной машине (Windows или Linux) и как работают горизонтальные и кластерные автоскалер.

Вариант использования - 2 API, один из которых работает в Windows (.NET Framework), а другой в Linux (Python / C ++), и я хочу иметь возможность перенаправлять их, иметь возможность вызывать друг друга, масштабировать их и т. Д. с кубернетес. Как примечание, приложение .NET Framework имеет зависимости (в основном для математической оптимизации), которые не могут быть переданы в .NET Core, это означает, что я не могу преобразовать приложение в на основе linux .

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Немного истории, поэтому контейнеры - это вещь Linux, поэтому в Windows контейнеров как таковых нет. Docker создал Docker для Windows, но, по сути, он запускает виртуальную машину Hyper-V Linux (раньше называвшуюся VirtualBox), и внутри него запускаются ваши контейнеры. Начиная с последней версии Docker, Microsoft добавила в Hyper-V возможности, позволяющие запускать эти контейнеры, облегчая запуск .NET-приложений в контейнерах.

K8s реализован в Golang, поэтому было проще переносить основные компоненты, такие как kubelet, kube-proxy, kubectl, на Windows, используя кросс-компилятор Golang (или встроенный в Windows)

Сложность - сетевое взаимодействие, но, похоже, они выяснили это в документах

Что касается поддержки общедоступного облака от основных провайдеров:

  • AWS

    • Гипервизор: модифицированный Xen или KVM. Нет вложенной поддержки виртуализации.
    • VM: Windows VM. Не может использовать Hyper-V с вложенной виртуализацией, но может запустить Docker для Windows.
    • Голый металл: (i3.metal на момент написания статьи). Запустите Hyper-V и Docker для Windows.
  • Azure

    • Гипервизор: Hyper-V. Поддерживает вложенную виртуализацию для некоторых типов экземпляров.
    • Виртуальные машины: виртуальные машины Windows, могут использовать вложенную виртуализацию с Hyper-V и могут запускать Docker для Windows.
    • ACS, AKS, ACE. Должен иметь возможность использовать преимущества Hyper-V с вложенной виртуализацией и в некоторых случаях.
  • GCP

    • Гипервизор: KVM. Поддерживает вложенную виртуализацию для некоторых типов экземпляров.
    • ВМ: Windows VM. Может запускать Hyper-V с вложенной виртуализацией и может запускать Docker для Windows.

Кроме этого, я не знаю, что там еще есть (кроме того, что есть в документах ). Вопрос очень широкий. Просто установите Docker для Windows, настройте сеть, присоединитесь к кластеру с помощью kubeadm и запланируйте рабочие нагрузки Windows, используя спецификацию nodeSelector в своих модулях, и убедитесь, что вы пометили свои узлы Windows с помощью beta.kubernetes.io/os=windows

Есть еще одно хорошее руководство по настройке Kubernetes с узлами Windows здесь

0 голосов
/ 06 сентября 2018

Да, это должно быть возможно.

Поскольку все развертывания находятся в док-контейнерах, вы можете запустить любую ОС в Kubernetes (в док-контейнере). Также Windows.

Запуск контейнеров Windows и Linux в одном кластере не должен вызывать никаких проблем.

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