Windows & Linux живут вместе в кластере Kubernetes
Я смотрел на документация kubernetes который, кажется, имеет совместимость с windows, однако я не нахожу полностью ясным, могут ли Linux и Windows жить вместе (я имею в виду, в разных VMs, но в одном кластере).
Я хотел бы знать, есть ли поддержка этого сценария в gcloud
, azure
или aws
. А также, процедура или пример, чтобы заставить его работать. Например, как создать pod в правильной виртуальной машине (windows или linux) и как горизонтально и кластер autoscalers работы.
вариант использования-2 API, один работает в windows (.NET Framework) и другой в linux (python/C++), и я хочу иметь возможность перенаправлять их, иметь возможность вызывать друг друга, масштабировать их и так далее с kubernetes. Как Примечание,.NET Framework
приложения имеют зависимости (в основном для математической оптимизации), которые не могут быть переданы .NET Core
, это означает, что я не могу преобразовать приложение к linux-based.
2 ответов
некоторая история, поэтому контейнеры-это вещь Linux, поэтому в Windows нет контейнеров как таковых. Docker создал Docker для Windows, но по существу то, что он делает, это запустить Hyper-V Linux VM (используется для VirtualBox) и внутри него запускает ваши контейнеры. Начиная с последней версии Docker, Microsoft добавила возможности на Hyper-V, чтобы позволить запускать эти контейнеры как бы изначально, что упрощает запуск .NET apps в контейнерах.
K8s реализован в Golang, так что это было обычно проще переносить основные компоненты, такие как kubelet
, kube-proxy
, kubectl
в Windows, используя кросс-компилятор Golang (или собственный в Windows)
сложная часть-это сеть, но похоже, что они выяснили это в docs
что касается публичной облачной поддержки от основных поставщиков:
-
AWS
- гипервизор: модифицированный Xen или KVM. Нет вложенной виртуализации поддержка.
- VMs: Windows VMs. Невозможно использовать Hyper-V с вложенной виртуализацией, но можно запустить Docker для Windows.
- голый металл: (i3.metal as of this writing). Запустите Hyper-V изначально и Docker для Windows.
-
Azure
- гипервизор: Hyper-V. поддерживает вложенную виртуализацию на некоторых типах экземпляров.
- ВМС: ВМС Виндовс, могут использовать вложенную виртуализацию с гипер-В, и могут побежать Докер для Windows.
- ACS, AKS, ACE: должен иметь возможность использовать Hyper-V с вложенной виртуализацией и некоторыми случаями изначально.
-
GCP
- гипервизор: KVM. Поддерживает вложенную виртуализацию для некоторых типов экземпляров.
- VMs: Windows VMs. Может запускать Hyper-V с вложенной виртуализацией и Docker для Windows.
кроме того, я не знаю, что еще есть к нему (кроме того, что в docs) вопрос очень широкий. Просто установите Docker для Windows, настройте сеть, присоединитесь к кластеру с помощью kubeadm
и запланировать рабочие нагрузки Windows, используя nodeSelector
спецификации в ваших стручках и убедитесь, что вы помечаете свои узлы Windows с beta.kubernetes.io/os=windows
есть еще одно хорошее руководство по настройке Kubernetes с узлами Windows здесь
Да, это должно быть возможно.
поскольку все развертывания живут в контейнерах docker, вы можете запускать любую ОС на Kubernetes (в контейнере docker). Также Windows.
запуск контейнеров Windows и Linux в одном кластере не должен вызывать никаких проблем.