☸️ Локальные Kubernetes для Linux – MiniKube или MicroK8s

by itisgood

В этой статье мы сосредоточимся на Linux.

MiniKube все еще остается здесь конкурирующим соперником.

Но еще мы рассмотрим MicroK8s, единственное решение для Linux для легкого локального кластера Kubernetes.

Мы оценим эти решения и предоставим краткое сравнение, основанное на простоте установки, развертывании и управлении.

Minikube

Minikube запускает одноузловой кластер Kubernetes внутри виртуальной машины (например, Virtualbox) в локальной среде разработки.
Результатом является локальная конечная точка Kubernetes, которую вы можете использовать с клиентом kubectl.
Minikube поддерживает наиболее типичные функции Kubernetes, такие как DNS, Dashboards, CNI, NodePorts, Config Maps и т.д.
Он также поддерживает несколько гипервизоров, таких как Virtualbox, KVM и т. д.

Установка

Чтобы установить Minikube на Linux, вы можете выполнить шаги, описанные в официальной документации.

В нашей статье мы использовали Ubuntu 18.04 LTS с поддержкой VirtualBox, используя следующие команды:

sudo apt install virtualbox virtualbox-ext-pack //vbox requirements
wget https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
chmod +x minikube-linux-amd64
sudo mv minikube-linux-amd64 /usr/local/bin/minikube 
После установки Minikube необходимо установить инструмент kubectl для развертывания приложений и управления ими в Kubernetes.
Вы можете установить kubectl, добавив новый репозиторий APT, используя следующую команду:
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update
sudo apt install kubectl 
Наконец, после успешной установки вы можете запустить minikube, введя команду:
minikube start 

Управление и развертывание

Управление кластером Minukube в Linux – это то же самое, что управление им в Windows.

Microk8s

Microk8s – это новое решение для запуска легкого локального кластера Kubernetes.

Он был разработан командой Kubernetes в Canonical.

Он предназначен для быстрой и легкой установки потока Kubernetes, изолированной от вашей локальной среды.

Эта изоляция достигается за счет упаковки всех двоичных файлов для Kubernetes, Docker.io, iptables и CNI в единый пакет Snap (доступен только в Ubuntu и совместимых дистрибутивах).

Установив Microk8 с использованием snap, вы можете создать «чистое» развертывание последних версий Kubernetes на локальном компьютере без каких-либо дополнительных затрат.

Инструмент Snap выполняет все необходимые операции и может обновить все связанные двоичные файлы до последних версий.

По умолчанию Microk8s устанавливает и запускает следующие службы:

  • Api-server
  • Controller-manager
  • scheduler
  • kubelet
  • cni
Дополнительные сервисы, такие как дашборд Kubernetes, можно легко включить / отключить с помощью команд microk8s.enable и microk8s.disable.
Список доступных служб:
  1. Dns
  2. Dashboard, включающий в себя grafana и influxdb
  3. Storage
  4. Ingress, Istio
  5. Registry
  6. Metrics Server

Установка

Microk8s можно установить одной командой snap, прямо из хранилища Snap.

sudo snap install microk8s --classic
Это установит команду microk8s и api-сервер, контроллер-менеджер, планировщик, etcd, kubelet, cni, kube-proxy и Docker.
Чтобы избежать любых конфликтов с существующей установкой Kubernetes, Microk8s добавляет команду microk8s.kubectl, настроенную для эксклюзивного доступа к новой установке Microk8s.
Выполняя любые общие инструкции Kubernetes онлайн, убедитесь, что префикс kubectl с Microk8s.
Чтобы убедиться, что установка прошла успешно, вы можете использовать следующие команды для извлечения доступных узлов и доступных служб соответственно:
microk8s.kubectl get nodes
microk8s.kubectl get services 

Управление

Как уже упоминалось выше, Microk8s устанавливает ограниченный Kubernetes.
Это означает, что только api-server, controller-manager, scheduler, kubelet, cni, и kube-proxy будут установлены и запущены.
Дополнительные службы, такие как kube-dns и панель мониторинга, можно запустить с помощью команды microk8s.enable.
microk8s.enable dns dashboard
Вы можете убедиться, что все службы запущены и работают, с помощью следующей команды:
$ microk8s.kubectl get all --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system pod/heapster-v1.5.2-84f5c8795f-n8dmd 4/4 Running 8 11h
kube-system pod/kube-dns-864b8bdc77-8d8lk 2/3 Running 191 11h
kube-system pod/kubernetes-dashboard-6948bdb78-z4knb 1/1 Running 97 11h
kube-system pod/monitoring-influxdb-grafana-v4-7ffdc569b8-g6nrv 2/2 Running 4 11h

NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default service/kubernetes ClusterIP 10.152.183.1 <none> 443/TCP 12h
kube-system service/heapster ClusterIP 10.152.183.58 <none> 80/TCP 11h
kube-system service/kube-dns ClusterIP 10.152.183.10 <none> 53/UDP,53/TCP 11h
kube-system service/kubernetes-dashboard ClusterIP 10.152.183.77 <none> 443/TCP 11h
kube-system service/monitoring-grafana ClusterIP 10.152.183.253 <none> 80/TCP 11h
kube-system service/monitoring-influxdb ClusterIP 10.152.183.15 <none> 8083/TCP,8086/TCP 11h

NAMESPACE NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
kube-system deployment.apps/heapster-v1.5.2 1 1 1 1 11h
kube-system deployment.apps/kube-dns 1 1 1 0 11h
kube-system deployment.apps/kubernetes-dashboard 1 1 1 1 11h
kube-system deployment.apps/monitoring-influxdb-grafana-v4 1 1 1 1 11h

NAMESPACE NAME DESIRED CURRENT READY AGE
kube-system replicaset.apps/heapster-v1.5.2-84f5c8795f 1 1 1 11h
kube-system replicaset.apps/kube-dns-864b8bdc77 1 1 0 11h
kube-system replicaset.apps/kubernetes-dashboard-6948bdb78 1 1 1 11h
kube-system replicaset.apps/monitoring-influxdb-grafana-v4-7ffdc569b8 1 1 1 11h
Вы можете получить доступ к любой службе, указав правильный CLUSTER_IP в вашем браузере.
Например, вы можете получить доступ к панели мониторинга, используя следующий веб-адрес: https://10.152.183.77.
В любое время вы можете приостановить и перезапустить все службы Kubernetes и установленные контейнеры, не теряя ни одной из ваших конфигураций, выполнив следующую команду.
(Обратите внимание, что это также отключит все команды с префиксом Microk8s.)
 snap disable microk8s 
Удалить Microk8s очень легко.
Вы можете сделать это, сначала отключив все службы Kubernetes, а затем используя команду snap, чтобы удалить все файлы установки и конфигурации.
microk8s.disable dashboard dns
sudo snap remove microk8s 

Развертывание

Развертывание службы nginx (с добавлением префикса Microk8s):

microk8s.kubectl run nginx --image nginx --replicas 3
microk8s.kubectl expose deployment nginx --port 80 --target-port 80 --type ClusterIP\ --selector=run=nginx --name nginx
Вы можете отслеживать свои развернутые сервисы, используя команду:

 

$ microk8s.kubectl get all
NAME READY STATUS RESTARTS AGE
pod/nginx-64f497f8fd-86xlj 1/1 Running 0 2m
pod/nginx-64f497f8fd-976c4 1/1 Running 0 2m
pod/nginx-64f497f8fd-r2tsv 1/1 Running 0 2m

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.152.183.1 <none> 443/TCP 13h
service/nginx ClusterIP 10.152.183.125 <none> 80/TCP 1m

NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
deployment.apps/nginx 3 3 3 3 2m

NAME DESIRED CURRENT READY AGE
replicaset.apps/nginx-64f497f8fd 3 3 3 2m 
Теперь вы можете получить доступ к развернутому веб-сервису, указав следующий веб-адрес в веб-браузере: http://10.152.183.125

Выводы

Посмотрев на все решения, вот наши результаты!

Minikube – это зрелое решение, доступное для всех основных операционных систем.

Его главное преимущество заключается в том, что он обеспечивает унифицированный способ работы с локальным кластером Kubernetes независимо от операционной системы.

Он идеально подходит для людей, которые используют машины с несколькими ОС и немного знакомы с Kubernetes и Docker.

Плюсы:
  • Зрелое решение
  • Работает на Windows (любая версия и издание), Mac и Linux
  • Несколько драйверов, которые могут соответствовать любой среде
  • Может работать с или без промежуточной виртуальной машины в Linux (vmdriver = none)
  • Устанавливает несколько плагинов (например, панель инструментов) по умолчанию
  • Очень гибкий по требованиям установки и обновлений
Минусы:
    
  • Установка и удаление не так упрощены, как у других решений
  • Может конфликтовать с локальной установкой других инструментов (таких как Virtualbox)
MicroK8s – очень интересное решение, поскольку оно работает непосредственно на вашей машине, и между нет каких-то виртуальных машин.
Плюсы:
  • Очень прост в установке, обновлении, удалении
  • Полностью изолирован от других инструментов на вашей машине
  • Не нужна ВМ, все сервисы работают локально

Минусы:

  • Доступен только для поддерживаемых Snap дистрибутивов Linux
  • Относительно новый, возможно нестабильный
  • Minikube также может работать непосредственно в Linux (vm = driver none)
Сообщите нам в комментариях, какое локальное решение Kubernetes вы используете и почему.

You may also like

Leave a Comment