Автор делится своим опытом установки Kubernetes на AWS Cloud и с использованием Ubuntu 20.04. Он столкнулся с некоторыми ошибками в процессе установки, и смог найти решения для них.

  1. Ошибка при копировании и дальнейшем выполнении команд Kubernetes с официального сайта продукта: 

  2. Проблемы с ключом GPG при установке kubectl на Linux;

  3. Проблемы с правами доступа и дисковым пространством при выполнении команды 'sudo curl' для установки Kubernetes на Linux;

  4. При выполнении команды 'kubectl apply возникает ошибка 404 Not Found с URL манифеста Flannel;

  5. При выполнении команды 'sudo kubectl apply' возникает ошибка Connection Refused с URL Flannel Manifest;

  6. Как устранить неполадки при установке Docker, если ядро не поддерживает необходимые функции;

  7. Синтаксическая ошибка в файле списка источников Kubernetes;

  8. Ошибка при запуске службы Docker на Ubuntu 20.04

  9. Служба Kubelet не запускается и выдает ошибку адреса конечной точки запуска контейнера на Ubuntu

  10. Контейнер 'kube-flannel'\ запускается с ошибкой, в результате которой pod переходит в состояние CrashLoopBackOff

  11. 'kubeadm' не найден

Ошибка:

sudo apt update
Hit:1 http://ap-south-1.ec2.archive.ubuntu.com/ubuntu focal InRelease
Hit:2 http://ap-south-1.ec2.archive.ubuntu.com/ubuntu focal-updates InRelease
Hit:3 http://ap-south-1.ec2.archive.ubuntu.com/ubuntu focal-backports InRelease
Hit:5 http://security.ubuntu.com/ubuntu focal-security InRelease
Get:4 https://packages.cloud.google.com/apt kubernetes-xenial InRelease [8993 B]
Err:4 https://packages.cloud.google.com/apt kubernetes-xenial InRelease
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY B53DC80D13EDEF05
Reading package lists... Done
W: GPG error: https://packages.cloud.google.com/apt kubernetes-xenial InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY B53DC80D13EDEF05
E: The repository 'https://apt.kubernetes.io kubernetes-xenial InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

Давайте разберемся, как мы можем решить эту проблему: 

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

Сообщение об ошибке «Соединение с сервером localhost:8080 было отклонено» показывает, что команда kubectl не может подключиться к серверу Kubernetes API.

Это может произойти по разным причинам: например, из-за неправильных настроек сети, неверно сконфигурированного файла kubeconfig или проблемы с самим API-сервером Kubernetes.

Чтобы устранить эту ошибку, можно попробовать выполнить следующие действия:

  1. Убедитесь, что API-сервер Kubernetes  запущен. Проверьте состояние сервера Kubernetes API, выполнив команду sudo systemctl status kube-apiserver. Если служба не запущена, попробуйте запустить ее, выполнив команду sudo systemctl start kube-apiserver.

  2. Убедитесь, что API-сервер Kubernetes  доступен с вашего компьютера. Проверьте, настроен ли файл kubeconfig с верным IP-адресом или именем хоста сервера.

  3. Проверьте настройки kubeconfig: проверьте и убедитесь, в том, что файл kubeconfig  содержит правильную информацию о кластере Kubernetes, включая адрес сервера и информацию об аутентификации.

А теперь перейдем ко второй ошибке нашего списка: 

Сообщение об ошибке «The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY B53DC80D13EDEF05» указывает на то, что в вашей системе отсутствует GPG-ключ для репозитория пакетов Kubernetes.

Чтобы исправить эту ошибку, необходимо импортировать GPG-ключ для репозитория пакетов Kubernetes с помощью следующей команды:

curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -

После импорта ключа можете снова запустить sudo apt update, чтобы обновить списки пакетов.

Эта ошибка возникает, когда вы выполняете данную команду от имени обычного пользователя, потому что только администратор может напрямую добавлять в apt и when без создания каталога.

sudo curl -fsSLo /etc/apt/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg

Ошибка

sudo curl -fsSLo /etc/apt/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
curl: (23) Failed writing body (0 != 1210)

Как можно решить эту проблему? Давайте разберемся: 

Ошибка «curl: (23) Failed writing body (0 != 1210)» появляется, когда команда curl не может записать данные в указанный файл из-за ограниченных прав доступа или дискового пространства.

Чтобы решить эту ошибку, вы можете попробовать выполнить следующие действия:

  1. Проверьте, достаточно ли свободного места на диске, выполнив следующую команду:

df -h

Эта команда должна показать доступное дисковое пространство и есть ли необходимость освободить его. 

  1. Проверьте, достаточно ли у вас прав на запись в указанный файл. Для этого запустите следующую команду:

ls -l /etc/apt/keyrings/

Эта команда должна отобразить разрешения каталога, в который записывается файл. Если у вас недостаточно прав, попробуйте выполнить команду с правами администратора.

  1. Проверьте, нет ли проблем с сетевым подключением, попробовав загрузить файл с помощью веб-браузера или следующей команды:

curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg -o /tmp/key.gpg

Если загрузка прошла успешно, попробуйте снова выполнить начальную команду. Если загрузка не удалась, возможно, возникли проблемы с сетью, которые необходимо решить.

Разбираем третью ошибку:

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/k8s-manifests/kube-flannel-rbac.yml

При выполнении команды 'kubectl apply возникает ошибка 404 Not Found с URL манифеста Flannel;

Эта ошибка возникает потому, что заданный YAML-файл недоступен по указанному URL. Чтобы исправить эту ошибку, необходимо загрузить файл локально, а затем применить его с помощью команды kubectl apply.

Решение: 

Загрузите YAML-файл с помощью следующей команды:

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/k8s-manifests/kube-flannel-rbac.yml

Файл kube-flannel-rbac.yml в ваш текущий каталог.

Примените YAML-файл  с помощью следующей команды:

kubectl apply -f kube-flannel-rbac.yml

Перейдем к четвертой ошибке:

sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/k8s-manifests/kube-flannel-rbac.yml

Соединение с сервером localhost:8080 прервано — вы указали правильный хост или порт?

Эта ошибка возникает, когда kubectl не может подключиться к API-серверу  Kubernetes. Чтобы устранить эту ошибку, вы можете проверить состояние API-сервера  и конфигурацию kubectl.

Проверьте состояние API-сервера  Kubernetes с помощью следующей команды:

sudo systemctl status kubelet

Это отобразит статус службы kubelet. Если служба не запущена, вы можете запустить ее с помощью команды sudo systemctl start kubelet.

Проверьте конфигурацию kubectl с помощью данной команды:

kubectl config view

Это покажет вашу актуальную конфигурацию kubectl. Убедитесь, что в поле server установлен правильный URL API-сервера. 

Если необходимо, обновите конфигурацию kubectl, чтобы указать на верный API-сервер Kubernetes. Для изменения конфигурации можно использовать команду kubectl config. Например:

kubectl config set-cluster my-cluster --server=https://my-kubernetes-api-server:6443
kubectl config set-context my-context --cluster=my-cluster
kubectl config use-context my-context

Замените my-cluster и my-context на необходимые вам имена, а https://my-kubernetes-api-server:6443 замените на URL вашего API-сервера. После обновления конфигурации вы можете снова выполнить команду kubectl apply.

Время пятой ошибки 

Она может возникнуть при вызове данной команды:

apt-get update
apt-get install apt-transport-https
apt install -y docker.io
sudo systemctl status docker

Сама ошибка:

● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2023-03-12 07:12:57 UTC; 1min 12s ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 4277 (dockerd)
      Tasks: 8
     Memory: 23.1M
     CGroup: /system.slice/docker.service
             └─4277 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Mar 12 07:12:57 master dockerd[4277]: time="2023-03-12T07:12:57.234538017Z" level=warning msg="Your kernel does not support CPU realtime scheduler"
Mar 12 07:12:57 master dockerd[4277]: time="2023-03-12T07:12:57.234813472Z" level=warning msg="Your kernel does not support cgroup blkio weight"
Mar 12 07:12:57 master dockerd[4277]: time="2023-03-12T07:12:57.234920598Z" level=warning msg="Your kernel does not support cgroup blkio weight_device"
Mar 12 07:12:57 master dockerd[4277]: time="2023-03-12T07:12:57.235173251Z" level=info msg="Loading containers: start."
Mar 12 07:12:57 master dockerd[4277]: time="2023-03-12T07:12:57.373408785Z" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be used to set a preferred IP address"
Mar 12 07:12:57 master dockerd[4277]: time="2023-03-12T07:12:57.430371512Z" level=info msg="Loading containers: done."
Mar 12 07:12:57 master dockerd[4277]: time="2023-03-12T07:12:57.462048764Z" level=info msg="Docker daemon" commit="20.10.21-0ubuntu1~20.04.1" graphdriver(s)=overlay2 version=20.10.21
Mar 12 07:12:57 master dockerd[4277]: time="2023-03-12T07:12:57.462172535Z" level=info msg="Daemon has completed initialization"
Mar 12 07:12:57 master systemd[1]: Started Docker Application Container Engine.
Mar 12 07:12:57 master dockerd[4277]: time="2023-03-12T07:12:57.500701925Z" level=info msg="API listen on /run/docker.sock"

Что со всем этим можно сделать:

Сообщение об ошибке указывает на то, что ядро вашей системы не поддерживает определенные функции, требуемые Docker, а именно "CPU realtime scheduler", "cgroup blkio weight" и "cgroup blkio weight_device".

Чтобы устранить неполадки и решить проблему, вы можете попробовать сделать следующее: 

Проверьте состояние службы Docker с помощью команды:

sudo systemctl status docker

Это покажет вам статус службы Docker и все сообщения об ошибках.

Если служба не работает, запустите ее с помощью команды:

sudo systemctl start docker

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

В качестве альтернативы можно попробовать изменить конфигурацию Docker, чтобы отключить функции, которые не поддерживаются вашим ядром. Для этого создайте файл /etc/docker/daemon.json, если он еще не существует, и добавьте в него следующую информацию:

{     "cgroupdriver": "systemd" }

Это устанавливает драйвер cgroup в systemd.

Перезапустите службу Docker с помощью команды:

sudo systemctl restart docker

Это должно активировать изменения, внесенные в конфигурацию Docker.

Убедитесь, что Docker работает без ошибок, еще раз проверив его состояние:

sudo systemctl status docker

Если проблема сохраняется, вам может потребоваться изучить документацию по Docker и ядру или обратиться за помощью в соответствующие сообщества.

Основываясь на сообщение об ошибке и выводе команды systemctl status docker, похоже, что Docker запущен с уведомлениями, связанными с поддержкой ядром определенных параметров типа CPU realtime scheduler и cgroup blkio weight. Однако эти уведомления не должны вызывать непосредственных проблем с запуском контейнеров Docker.

Если вы столкнулись с какими-либо специфическими проблемами, связанными с Docker, вы можете попробовать выполнить следующие шаги для решения проблем:

  1. Проверьте логи Docker: для этого используйте команду sudo journalctl -u docker. Это может дать больше информации о любых ошибках или проблемах, связанных с Docker.

  2. Перезапустите Docker: для того используйте команду sudo systemctl restart docker.

  3. Если приведенные выше шаги не помогли, вы можете попробовать полностью удалить, а затем заново установить Docker. Используйте команду sudo apt-get remove docker docker-engine docker.io containerd runc для удаления Docker и его приложений, а затем следуйте официальному руководству по установке Docker для Ubuntu 20.04 для повторной установки.

  4. Если при работе с Docker у вас всё ещё есть проблемы, возможно, вам нужно проверить, поддерживает ли ядро необходимые функции, требуемые Docker. Для этого используйте команду grep CONFIG_BLK_CGROUP/boot/config-$(uname -r), чтобы проверить, поддерживает ли ядро параметр cgroup blkio weight. По аналогии можно вызвать команду grep CONFIG_RT_GROUP_SCHED /boot/config-$(uname -r), чтобы проверить, поддерживает ли ядро CPU realtime scheduler. Если эти функции не поддерживаются, потребуется обновить ядро или использовать другую версию.

Шестая ошибка, когда вы запускаете данную команду

Ошибка:

echo “deb https://apt.kubernetes.io/ kubernetes-xenial main” | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
“deb https://apt.kubernetes.io/ kubernetes-xenial main”
root@master:~# sudo apt-get update
E: Type '“deb' is not known on line 2 in source list /etc/apt/sources.list.d/kubernetes.list
E: The list of sources could not be read.

Ваше решение: 

Сообщение указывает на синтаксическую ошибку в файле /etc/apt/sources.list.d/kubernetes.list. Ошибка возникает потому, что в файле присутствует символ двойной кавычки, который не распознается как допустимый синтаксис.

Чтобы устранить эту ошибку, необходимо отредактировать файл /etc/apt/sources.list.d/kubernetes.list и удалить двойные кавычки вокруг URL. 

Откройте файл /etc/apt/sources.list.d/kubernetes.list с помощью текстового редактора, например, nano или vi:

sudo nano /etc/apt/sources.list.d/kubernetes.list

Удалите двойные кавычки вокруг URL, чтобы файл выглядел следующим образом:

deb https://apt.kubernetes.io/ kubernetes-xenial main

Сохраните файл и выйдите из редактора.

Снова запустите команду update.

sudo apt-get update

Это позволит устранить ошибку и продолжить установку или обновление Kubernetes.

Мы прошли середину — 7 ошибка, когда вы используете эту команду:

sudo sysctl — system

Ошибка

Error 8
cat << EOF | sudo tee /etc/sysctl.d/k8s.conf
> net.bridge.bridge-nf-call-ip6tables = 1
> net.bridge.bridge-nf-call-iptables = 1
> EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
ubuntu@master:~$ sudo sysctl — system
sysctl: cannot stat /proc/sys/—: No such file or directory
sysctl: cannot stat /proc/sys/system: No such file or directory

Эта ошибка вызвана опечаткой в запущенной вами команде. Вместо команды sudo sysctl --system вы выполнили команду sudo sysctl - system, которая содержит неправильный символ перед словом "system" (— вместо -).

Чтобы исправить эту ошибку, нужно просто повторно выполнить команду sudo sysctl --system с правильным синтаксисом:

sudo sysctl --system

Это перезагрузит настройки sysctl-системы с изменениями, которые вы сделали в предыдущей команде (cat << EOF | sudo tee /etc/sysctl.d/k8s.conf ...). 

Итак, ошибка 8

sudo systemctl status docker
● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Sun 2023-03-12 07:30:20 UTC; 21s ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 6885 (code=exited, status=1/FAILURE)

Mar 12 07:30:20 master systemd[1]: docker.service: Scheduled restart job, restart counter is at 3.
Mar 12 07:30:20 master systemd[1]: Stopped Docker Application Container Engine.
Mar 12 07:30:20 master systemd[1]: docker.service: Start request repeated too quickly.
Mar 12 07:30:20 master systemd[1]: docker.service: Failed with result 'exit-code'.
Mar 12 07:30:20 master systemd[1]: Failed to start Docker Application Container Engine.

Сообщение об ошибке указывает на то, что служба Docker не может запуститься на вашей ОС Ubuntu 20.04. Вот несколько возможных причин, почему это может произойти:

  • Недостаточно системных ресурсов: для нормальной работы Docker требуется определенное количество системных ресурсов типа оперативной памяти и дискового пространства. Если их не хватает, то Docker может не запуститься.

  • Проблемы с конфигурацией Docker: например, неправильные настройки в конфигурационном файле демона Docker.

  • Сетевые проблемы: Docker может не запуститься, если он не подключен к сети к сети.

Чтобы устранить эту проблему, вы можете попробовать выполнить следующие действия:

  1. Удостоверьтесь, что на вашей компьютере достаточно ресурсов системы. Вы можете проверить системные ресурсы с помощью команды top.

  2. Проверьте конфигурационный файл демона Docker (/etc/docker/daemon.json) на наличие ошибок или неправильных настроек. Вы также можете попробовать сбросить конфигурацию к исходным значениям.

  3. Убедитесь, что ваша машина подключена к сети и что нет никаких проблем с сетевой конфигурацией.

  4. Вы можете попробовать перезапустить службу Docker с помощью команды systemctl:

sudo systemctl restart docker

Если проблема сохраняется, вы можете проверить логи Docker для получения дополнительной информации об ошибке. Чтобы посмотреть журналы, используйте следующую команду:

sudo journalctl -u docker.service

Ошибка №9

ubuntu@master:~$ sudo systemctl status kubelet
● kubelet.service - kubelet: The Kubernetes Node Agent
     Loaded: loaded (/lib/systemd/system/kubelet.service; enabled; vendor preset: enabled)
    Drop-In: /etc/systemd/system/kubelet.service.d
             └─10-kubeadm.conf
     Active: activating (auto-restart) (Result: exit-code) since Sun 2023-03-12 07:30:56 UTC; 7s ago
       Docs: https://kubernetes.io/docs/home/
    Process: 6948 ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET>
   Main PID: 6948 (code=exited, status=1/FAILURE)

Mar 12 07:30:56 master systemd[1]: kubelet.service: Failed with result 'exit-code'.

journalctl -u kubelet
Mar 12 12:28:34 ip-10-0-30-59 kubelet[17467]: E0312 12:28:34. 039287   17467 run.go:74] "command failed" err="failed to validate kubelet flags: the container runtime endpoint address >
Mar 12 12:28:34 ip-10-0-30-59 systemd[1]: kubelet.service: Main process exited, code=exited, status=1/FAILURE
Mar 12 12:28:34 ip-10-0-30-59 systemd[1]: kubelet.service: Failed with result 'exit-code'.
Mar 12 12:28:44 ip-10-0-30-59 systemd[1]: kubelet.service: Scheduled restart job, restart counter is at 4.
Mar 12 12:28:44 ip-10-0-30-59 systemd[1]: Stopped kubelet: The Kubernetes Node Agent.
Mar 12 12:28:44 ip-10-0-30-59 systemd[1]: Started kubelet: The Kubernetes Node Agent.

Сообщение об ошибке указывает на то, что служба kubelet не может запуститься из-за проблемы с адресом конечной точки запуска контейнера. 

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

Проверьте журналы Docker на наличие ошибок:

sudo systemctl status docker

Сначала проверьте состояние службы Docker:

sudo journalctl -u docker

Проверьте конфигурационный файл Kubernetes на ошибки:

sudo cat /etc/kubernetes/kubelet.conf

Убедитесь, что файл конфигурации корректен и содержит правильную информацию.

Перезапустите службу kubelet:

sudo systemctl restart kubelet

Если ошибка была временной, то можете переустановить Docker и Kubernetes. Если ни одно из вышеперечисленных действий не помогло, попробуйте удалить, а затем заново установить Docker и Kubernetes.

sudo apt-get remove docker kubeadm kubectl kubelet
sudo apt-get install docker kubeadm kubectl kubelet

Конец близок — 10 ошибка

status kubelet
● kubelet.service - kubelet: The Kubernetes Node Agent
     Loaded: loaded (/lib/systemd/system/kubelet.service; enabled; vendor preset: enabled)
    Drop-In: /etc/systemd/system/kubelet.service.d
             └─10-kubeadm.conf
     Active: active (running) since Mon 2023-03-13 03:23:36 UTC; 2min 7s ago
       Docs: https://kubernetes.io/docs/home/
   Main PID: 6431 (kubelet)
      Tasks: 9 (limit: 1143)
     Memory: 51.2M
     CGroup: /system.slice/kubelet.service
             └─6431 /usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --config=/var/lib/kubelet/config.yaml --container-runtime-endpoint=unix:///var/run/containerd/containerd.sock --pod-infra-container-image=registry.k8s.io/pause:3.9

Mar 13 03:24:55 ip-10-0-25-32 kubelet[6431]: I0313 03:24:55.627566    6431 scope.go:115] "RemoveContainer" containerID="21d2dba09108263e7e4ab22431e1e71645d784ba5c6e692b8367bc947e6bcf39"
Mar 13 03:24:55 ip-10-0-25-32 kubelet[6431]: E0313 03:24:55.628439    6431 pod_workers.go:965] "Error syncing pod, skipping" err="failed to \"StartContainer\" for \"kube-flannel\" with CrashLoopBackOff: \"back-off 40s restarting failed container=kube-flannel pod=kube-flannel-ds-lwbxr_kube-flannel(4dcbb423-a021-4f72-ab55-f846f3a3ebfb)>

Mar 13 03:25:36 ip-10-0-25-32 kubelet[6431]: I0313 03:25:36.626516    6431 scope.go:115] "RemoveContainer" containerID="d30a5bfd77a35ef38f548b763cc5ec3f1bcb9ee8923c92ddbf1030c15ed8d7b3"
Mar 13 03:25:36 ip-10-0-25-32 kubelet[6431]: E0313 03:25:36.627396    6431 pod_workers.go:965] "Error syncing pod, skipping" err="failed to \"StartContainer\" for \"kube-flannel\" with CrashLoopBackOff: \"back-off 1m20s restarting failed container=kube-flannel pod=kube-flannel-ds-lwbxr_kube-flannel(4dcbb423-a021-4f72-ab55-f846f3a3ebf

Сообщение об ошибке указывает на то, что возникли проблемы с запуском контейнера "kube-flannel", и pod застрял в состоянии CrashLoopBackOff. Это может быть вызвано различными причинами, такими как неправильная конфигурация стручка, недостаток ресурсов или проблема с образом контейнера.

Вот несколько шагов, которые можно предпринять для устранения этой проблемы:

  1. Проверьте логи контейнера: для этого используйте команду "kubectl logs".

  2. Убедитесь, что образ контейнера доступен.

  3. Проверьте, достаточно ли ресурсов выделено для процессора и памяти. Если нет, увеличьте лимиты ресурсов, чтобы контейнер запустился нормально.

  4. Проверьте правильность конфигурации pod,  его зависимостей и переменных окружения.

  5. Убедитесь, что служба kubelet запущена и нормально функционирует на узле. Если нет, то попробуйте перезапустить службу kubelet и посмотрите, решит ли это проблему.

Ура, 11! 

kubeadm join 10.0.16.34:6443 --token nvehe7.0h715ldeandytkms --discovery-token-ca-cert-hash sha256:f7f010085fb1854e96d0be34e948d26433783ce61271b7e59e1f3d815e971dc5

Command 'kubeadm' not found, but can be installed with:

Сообщение об ошибке указывает на то, что команда 'kubeadm' не найдена в системе. Это может произойти, если компоненты кластера Kubernetes не установлены или если переменная окружения PATH установлена неправильно.

Чтобы установить компоненты кластера Kubernetes на Ubuntu 20.04, вы можете:

Добавьте репозиторий Kubernetes apt:

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"

Обновите индекс пакета apt:

sudo apt-get update

Установите компоненты Kubernetes:

sudo apt-get install -y kubelet kubeadm kubectl

Установите переменную окружения PATH, чтобы включить бинарные файлы Kubernetes:

echo 'export PATH=$PATH:/usr/bin' >> ~/.bashrc source ~/.bashrc

После этих пунктов у вас должно получиться использовать команду 'kubeadm' для присоединения к кластеру Kubernetes.

От редакции

Начать работать с Kubernetes вы можете на курсах: Kubernetes База и Kubernetes для разработчиков.

Kubernetes База стартует в формате потока 11 мая. Вы погрузитесь в глубины K8s вместе с другими студентами, а на вопросы по инструменту вам будут отвечать спикеры курса.

Узнать больше о курсе Kubernetes для разработчиков и записаться на поток Kubernetes База можно на нашем сайте.

Комментарии (7)


  1. slonopotamus
    14.04.2023 21:13
    +9

    Топ-1 ошибок в статье про топ-10 ошибок при установке Kubernetes в Ubuntu: не надо превращать операционку с пакетным менеджером в Linux from Scratch, а потом героически преодолевать последствия. У убунты есть официальный мануал по куберу: https://ubuntu.com/kubernetes/install в котором вся установка сводится к sudo snap install microk8s --classic. Зачем в вашей конструкции присутствует Docker я вообще не понял.

    с использованием Ubuntu 20.04

    Я вижу следы, указывающие на xenial, то бишь Ubuntu 16.04, которая уже EOL. Автор или врёт или настолько некомпетентен, что не может отличить xenial от focal. В обоих случаях степень доверия к этому источнику принимает отрицательные значения.


    1. lllamnyp
      14.04.2023 21:13

      На счёт xenial, на самом деле, нет смысла придираться. Долгое время репозиторий куба содержал в своём урле строку "-xenial", хотя давно уже зарелизили и bionic и focal. Это не важно, т.к. кубернетис всё равно набор статически линкованных бинарей. Емнип, в последнее время от этого отказались и там просто что-то вида dl.k8s.io, без отсылки к именному релизу конкретного дистрибутива линукса.


  1. duckhawk
    14.04.2023 21:13
    +2

    Я ещё как-то могу понять использование 20.04 (хотя 22.04 уже весьма стабильна, и зачем автору 20.04 - большой вопрос)

    Но docker? Учитывая, что он deprecated и скоро k8s не будет его поддерживать в принципе? Вредные советы какие-то.


    1. lllamnyp
      14.04.2023 21:13

      А как вам ubuntu в aws, у которого есть 1. Amazon linux, 2. Managed kubernetes, да ещё, до кучи, flannel, когда есть 3. Aws-cni?


      1. duckhawk
        14.04.2023 21:13

        Не все хотят managed cluster обязательно же :)

        Я скорее про то, что статья выглядит как вредные советы. "Берите старую убунту", "берите докер".


  1. allivut
    14.04.2023 21:13

    Больше похоже на ошибки того кто не понимает как работает Линукс. Кубы тут мимоходом. Докер?

    Кажется автор статьи далек от технологий, а просто тренируется в переводах


  1. AnsRomanov
    14.04.2023 21:13

    С учетом того что автор поднимает это добро в AWS, по-хорошему задача решается одной командой eksctl create cluster --name my-cluster --region region-code.
    Если прямо очень хочется погрузиться в кишки куба и строить свои велосипеды то есть отличный мануал Kubernetes the hard way от Kelsey Tightower, который удовлетворит самые изощренные потребности.