Ubuntu 20.04 : установка и настройка docker
Инструкция по установке docker здесь: https://docs.docker.com/engine/install/ubuntu/
После установки вызовите команду
sudo usermod -aG docker $USER
Создйте файл /etc/docker/daemon.json
с содержимым:
{ "log-opts": { "max-file": "3", "max-size": "10m" }, "registry-mirrors": [ "http://gdocker.greetgo:5000/" ], "dns": [ "192.168.11.1" ], "insecure-registries": [ "192.168.11.185:5000", "dockerhub.greetgo:5000", "gdocker.greetgo:5555", "localhost:32000" ] }
Отредактируйте файл:
sudo mcedit -b /usr/lib/systemd/system/docker.service
ВНИМАНИЕ: Если файла нет /lib/systemd/system/docker.service
то его место можно посмотреть командой
sudo systemctl status docker
Добавьте в него текст:
--default-ulimit memlock=-1:-1
В конец строки:
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Чтобы получилась строка
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --default-ulimit memlock=-1:-1
Теперь докер надо перезапустить двумя командами
sudo systemctl daemon-reload
sudo systemctl restart docker.service
Проверить можно командой
docker run --rm busybox:1.28 cat /proc/1/limits
Должна появиться строка
...
Max locked memory unlimited unlimited bytes
...
Т.е. эти ограничения должны быть unlimited (т.е. ограничений нет)
Очистка остановленных контейнеров
docker rm -v $(docker ps -a -q -f status=exited)
Установка kubectl
В одном окне терминала последовательно выполните команды:
cd ~/bin/ KUBECTL_VERSION=`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt` curl -LO "https://storage.googleapis.com/kubernetes-release/release/$KUBECTL_VERSION/bin/linux/amd64/kubectl" chmod +x kubectl mv kubectl "kubectl-$KUBECTL_VERSION" ln -s "kubectl-$KUBECTL_VERSION" kubectl
Установка minikube
В одном окне терминала поледовательно выполните команды:
wget https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 mv minikube-linux-amd64 ~/bin/minikube chmod +x ~/bin/minikube
Настройка minikube
Запустите команду:
minikube start
Если эта команда упадёт, то запустите команду
minikube delete
И повторите снова команду
minikube start
Когда команда выполниться запустите команду
minikube addons enable ingress
Далее убедитесь, что все поды активировались нормально. Для этого запустите команду:
watch -n1 kubectl get pod --all-namespaces
Вот вывод, который ещё не готов (какие-то контейнеры ещё создаются - нужно дождаться, когда всё создастся)
NAMESPACE NAME READY STATUS RESTARTS AGE kube-system coredns-74ff55c5b-5stns 1/1 Running 0 13m kube-system etcd-minikube 1/1 Running 0 13m kube-system ingress-nginx-admission-create-rj6gf 0/1 ContainerCreating 0 3m33s kube-system ingress-nginx-admission-patch-q6hhp 0/1 ContainerCreating 0 3m33s kube-system ingress-nginx-controller-65cf89dc4f-p2ss5 0/1 ContainerCreating 0 3m33s kube-system kube-apiserver-minikube 1/1 Running 0 13m kube-system kube-controller-manager-minikube 1/1 Running 0 13m kube-system kube-proxy-72458 1/1 Running 0 13m kube-system kube-scheduler-minikube 1/1 Running 0 13m kube-system storage-provisioner 1/1 Running 0 13m
Вот готовый вывод:
NAMESPACE NAME READY STATUS RESTARTS AGE kube-system coredns-74ff55c5b-5stns 1/1 Running 1 133m kube-system etcd-minikube 1/1 Running 0 93s kube-system ingress-nginx-admission-create-rj6gf 0/1 Completed 0 123m kube-system ingress-nginx-admission-patch-q6hhp 0/1 Completed 0 123m kube-system ingress-nginx-controller-65cf89dc4f-p2ss5 1/1 Running 1 123m kube-system kube-apiserver-minikube 1/1 Running 0 93s kube-system kube-controller-manager-minikube 1/1 Running 1 133m kube-system kube-proxy-72458 1/1 Running 1 133m kube-system kube-scheduler-minikube 1/1 Running 1 133m kube-system storage-provisioner 1/1 Running 2 133m
(Статус Completed - это нормально)
Выход из команды Ctrl+C
Если все указанные команды не помогли с миникуб не поднимается даже с нуля, надо обновить версию миникуба
wget https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
mv minikube-linux-amd64 ~/bin/minikube
chmod +x ~/bin/minikube
И дальше повторить:
minikube start
minikube addons enable ingress
И диагностика (как указано чуть выше):
watch -n1 kubectl get pod --all-namespaces
Установка и настройка dnsmasq
Устанавливаем программу
sudo apt install -y dnsmasq
И настраиваем эту программу, для этого открываем файл
sudo mcedit -b /etc/dnsmasq.conf
И корректируем так, чтобы были выставлены следующие параметры:
listen-address=127.0.0.1
bind-interfaces
Убедитесь, что следующие строки закоментированы:
#interface=lo
В файле /etc/default/dnsmasq
раскомментируйте строку:
IGNORE_RESOLVCONF=yes
Конфигурируем домен '.debug' смотрящий на IP-шник миникуб (minikube должен быть инициирован)
echo address=/.debug/$(minikube ip) | sudo tee /etc/dnsmasq.d/debug.conf
После этого перезапускаем демон:
sudo service dnsmasq restart
После рестарта компа или ещё чего-то может сломаться сеть, чтобы это проверить нужно чтобы обе команды:
cat /etc/dnsmasq.d/debug.conf ; minikube ip
Ссылались на один IP-адрес, например так:
address=/.debug/172.17.0.3
172.17.0.3
Если это не так, то нужно это поправить командами:
echo address=/.debug/$(minikube ip) | sudo tee /etc/dnsmasq.d/debug.conf
sudo service dnsmasq restart
Настройка systemd-resolved
Открыть на редактирование файл:
sudo mcedit -b /etc/systemd/resolved.conf
Внести строку в раздел [Resolve]
[Resolve]
DNS=127.0.0.1
Domains=~debug
Сохранить и перезапустить сервис
sudo systemctl daemon-reload
sudo systemctl restart systemd-resolved
Проверить можно командой
host some-host.debug
Она должна ссылаться на IP-шник миникуба - он отображается командой minikube ip
Дополнительные полезные команды
journalctl -u systemd-resolved -f
sudo netstat -tulpn | grep LISTEN
Установка helm 3+
Заходим по адресу
https://github.com/helm/helm/releases
И скачиваем версию: Linux amd64
и распаковываем в папку /tmp
cd /tmp/
tar xvf helm-v3.5.2-linux-amd64.tar.gz
Устанавливаем в PATH-директорию:
cp linux-amd64/helm ~/bin/helm-v3.5.2
Делаем символическую ссылку
cd ~/bin
chmod +x helm-v3.5.2
ln -s helm-v3.5.2 helm
Проверяем
helm version
Версия должна быть 3+