minikube && kubectl - k8s
На винде пытаюсь разобраться с k8s. Есть Docker Desktop, в котором включен K8s. Вот только во всех туториалах используется призрачный minikube...
Minikube как я понял - это образ на докере с дэшбордом + отдельно kubeadm, kubectl и тд.
Но у меня уже из Docker Desktop есть kubectl... Я просто запутался, объясните нужен ли мне вообще minikube, что конкретно он делает (как я понял, это просто рабочая среда для k8s), чем отличается от k8s в docker desktop?
Ответы (1 шт):
minikube - это не образ в докере, а наоборот, это виртуальная машина (установленная в Hyper-V или VirtualBox, т.к. для работы docker нужен Linux Kernel), внутри которой установлен Docker и Kubernetes (по факту minikube это один из многих способов локально развернуть Kubernetes, который в разы проще, чем самому поднимать виртуалки и через kubeadm разворачивать Kubernetes), если вы только разбираетесь с Kubernetes, то я думаю большой разницы для вас не будет, что использовать большинство команд должны работать одинаково.
Преимушества Docker Desktop в том, что это решение, которое включается все сразу и Docker и Kubernetes, это возможно упрошает работу с ним в начале, т.к. когда вы устанавливаете и Docker и minikube, то по факту вы ставите 2 докера, т.е. ставится 2 виртуалки, одна с докером, вторая вместе minikube и нужно это учитывать (т.е. они "не знают" ничего друг о друге) или использовать только докер из миникуба: eval $(minikube docker-env). Так же в Docker Desktop реализован LoadBalancer для Services, что может быть иногда может быть полезно.
minikube быстрее обновляется на последней версии Kubernetes (а также позволяет относительно легко разворачивать отдельные/старые версии), есть поддержка addons (но по факту это просто набор yaml файлов, т.е. их можно развернуть и в Docker Desktop, сюда такде входит dashboard, да в minikube он сразу есть и запустить его можно одной командой, но в Docker Desktop его тоже не тяжело развернуть). По субъективным ощущениям он стабильнее, чем Docker Desktop, т.к. пару раз приходилось сбрасывать все настройки по не понятным причинам.
kubectl - ставится в обоих случаях (это просто один исполняемый файл, который можно скачать с сайта и положить куда угодно), который позволяет вам отправлять команды в разные инстансы Kubernetes, например, если у вас есть локальный инстанс и где-то в облаке (AWS, Azure и т.д.).
Если у вас уже включен Kubernetes в Docker Desktop, то рядом запушенный minikube не нужен, но поставить оба вам никто не запрешает и пользоваться по очереди и понять, что вам больше нравится/подходит.