mybpm!
Скачать в формате: PDF pdf DOCX word

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+