В этой статье мы сосредоточимся на Linux.
MiniKube все еще остается здесь конкурирующим соперником.
Но еще мы рассмотрим MicroK8s, единственное решение для Linux для легкого локального кластера Kubernetes.
Мы оценим эти решения и предоставим краткое сравнение, основанное на простоте установки, развертывании и управлении.
Minikube
Установка
Чтобы установить 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
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 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
- Dns
- Dashboard, включающий в себя grafana и influxdb
- Storage
- Ingress, Istio
- Registry
- Metrics Server
Установка
Microk8s можно установить одной командой snap, прямо из хранилища Snap.
sudo snap install microk8s --classic
microk8s.kubectl get nodes microk8s.kubectl get services
Управление
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
snap disable microk8s
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
Выводы
Посмотрев на все решения, вот наши результаты!
Minikube – это зрелое решение, доступное для всех основных операционных систем.
Его главное преимущество заключается в том, что он обеспечивает унифицированный способ работы с локальным кластером Kubernetes независимо от операционной системы.
Он идеально подходит для людей, которые используют машины с несколькими ОС и немного знакомы с Kubernetes и Docker.
- Зрелое решение
- Работает на Windows (любая версия и издание), Mac и Linux
- Несколько драйверов, которые могут соответствовать любой среде
- Может работать с или без промежуточной виртуальной машины в Linux (vmdriver = none)
- Устанавливает несколько плагинов (например, панель инструментов) по умолчанию
- Очень гибкий по требованиям установки и обновлений
- Установка и удаление не так упрощены, как у других решений
- Может конфликтовать с локальной установкой других инструментов (таких как Virtualbox)
- Очень прост в установке, обновлении, удалении
- Полностью изолирован от других инструментов на вашей машине
- Не нужна ВМ, все сервисы работают локально
Минусы:
- Доступен только для поддерживаемых Snap дистрибутивов Linux
- Относительно новый, возможно нестабильный
- Minikube также может работать непосредственно в Linux (vm = driver none)