Миникуб против Кубернетеса в Docker для Windows
Большинство уроков, которые я видел для разработки с Kubernetes локально, используют Minikube. В последнем выпуске Edge Docker для Windows вы также можете включить Kubernetes. Я пытаюсь понять разницу между этими двумя и которые я должен использовать.
- Minikube позволяет выбрать нужную версию Kubernetes. Может ли Docker для Windows это сделать? Я не вижу способа настроить это.
- Minikube имеет команды CLI для включения панели инструментов, heapster, входа и других дополнений. Я не уверен, почему, потому что я понимаю, что они просто выполняют
kubectl apply -f http://...
, - С Minikube я могу сделать
minikube ip
чтобы получить IP-адрес кластера для входа, как я могу сделать это с Docker для Windows? - Есть ли что-то другое, что меня должно волновать?
3 ответа
Я чувствую, что вы в значительной степени понимаете пространство и в основном уже имеете ответы на свои вопросы. Возможно, вы найдете Docker для Mac против Docker Toolbox информативным, даже если речь идет об эквиваленте Mac, а не Windows, и о Docker, упакованном как ВМ, а не как Kubernetes.
Фактически, вы застряли в конкретной версии Kubernetes, которую публикует дистрибутив Docker Edge.
ответ на вопрос.
Я считаю, что сервисы типа NodePort публикуются на IP-адресе вашего хоста; промежуточный виртуальный адрес отсутствует, как в Docker Toolbox.
Docker Toolbox и minikube всегда используют полноценную виртуальную машину с готовым гипервизором. Настольное приложение Docker может использовать облегченный механизм виртуализации, если таковой имеется.
Kubernetes может вовлечь некоторую значительную фоновую работу. Если вы используете Kubernetes-in-Docker, трудно "отключить" Kubernetes и все еще иметь Docker доступным; но если у вас есть отдельная виртуальная машина Minikube, вы можете просто остановить ее.
Вот часть документации Docker:
Kubernetes доступен только в Docker для Windows 18.02 CE Edge. Поддержка Kubernetes не включена в Docker для Windows 18.02 CE Stable. Чтобы узнать больше о стабильных и пограничных каналах и о том, как переключаться между ними, см. Общая конфигурация.
Docker для Windows 18.02 CE Edge включает в себя автономный сервер и клиент Kubernetes, а также интеграцию Docker CLI. Сервер Kubernetes работает локально в вашем экземпляре Docker, не настраивается и представляет собой кластер с одним узлом.
Сервер Kubernetes работает в контейнере Docker в вашей локальной системе и предназначен только для локального тестирования. Когда поддержка Kubernetes включена, вы можете параллельно развертывать свои рабочие нагрузки на Kubernetes, Swarm и как отдельные контейнеры. Включение или отключение сервера Kubernetes не влияет на другие ваши рабочие нагрузки.
См. Docker для Windows > Начало работы, чтобы включить Kubernetes и начать тестирование развертывания ваших рабочих нагрузок в Kubernetes.
Если у вас достаточно ресурсов процессора и оперативной памяти, вы можете легко minikube
а также docker-for-desktop
на том же компьютере и переключаться между ними, выбирая контекст, например:
> kubectl config get-contexts
> kubectl config use-context docker-for-desktop
В настоящее время нет места, чтобы выбрать версию Kubernetes для Docker -for-Desktop. Он предварительно выбран в дистрибутиве Docker.
К сожалению, версия докера внутри миникуба на шаг отстает от доступной на сайте докера, и некоторые функции могут отсутствовать, но если вас интересует среда Kubernetes, в большинстве случаев это не имеет значения.
Некоторые функции Kubernetes зависят от внешних ресурсов и могут быть недоступны для вас при локальной установке. Например, вам нужна возможность создать Cloud Load Balancer, чтобы использовать некоторые типы Ingress
или же Service
объекты.
Но другие ресурсы могут быть легко запущены внутри minikube
, или же docker-for-desktop
с помощью kubectl create/apply
,
Чтобы выставить ресурсы кластера извне, вы можете использовать контроллер Webhook Relay Ingress.
Вот ссылка на руководство по установке.
Мухаммед, я знаю, что это старая тема. В 2023 году я использую рабочий стол Docker для локальных Kubernetes, а IP-адрес кластера, который я использую вместо IP-адреса Minikube, — localhost. Надеюсь, это кому-то поможет.