Автор делится своим опытом установки Kubernetes на AWS Cloud и с использованием Ubuntu 20.04. Он столкнулся с некоторыми ошибками в процессе установки, и смог найти решения для них. Ошибка при копировании и дальнейшем выполнении команд Kubernetes с официального сайта продукта:  Проблемы с ключом GPG при установке kubectl на Linux; Проблемы с правами доступа и дисковым пространством при выполнении команды 'sudo curl' для установки Kubernetes на Linux; При выполнении команды 'kubectl apply возникает ошибка 404 Not Found с URL манифеста Flannel; При выполнении команды 'sudo kubectl apply' возникает ошибка Connection Refused с URL Flannel Manifest; Как устранить неполадки при установке Docker, если ядро не поддерживает необходимые функции; Синтаксическая ошибка в файле списка источников Kubernetes; Ошибка при запуске службы Docker на Ubuntu 20.04 Служба Kubelet не запускается и выдает ошибку адреса конечной точки запуска контейнера на Ubuntu Контейнер 'kube-flannel'\ запускается с ошибкой, в результате которой pod переходит в состояние CrashLoopBackOff 'kubeadm' не найден Ошибка: Давайте разберемся, как мы можем решить эту проблему:  Первая ошибка, с которой вы столкнулись, связана с проблемой соединения с сервером Kubernetes API. Сообщение об ошибке «Соединение с сервером localhost:8080 было отклонено» показывает, что команда kubectl не может подключиться к серверу Kubernetes API. Это может произойти по разным причинам: например, из-за неправильных настроек сети, неверно сконфигурированного файла kubeconfig или проблемы с самим API-сервером Kubernetes. Чтобы устранить эту ошибку, можно попробовать выполнить следующие действия: Убедитесь, что API-сервер Kubernetes  запущен. Проверьте состояние сервера Kubernetes API, выполнив команду sudo systemctl status kube-apiserver. Если служба не запущена, попробуйте запустить ее, выполнив команду sudo systemctl start kube-apiserver. Убедитесь, что API-сервер Kubernetes  доступен с вашего компьютера. Проверьте, настроен ли файл kubeconfig с верным IP-адресом или именем хоста сервера. Проверьте настройки kubeconfig: проверьте и убедитесь, в том, что файл kubeconfig  содержит правильную информацию о кластере Kubernetes, включая адрес сервера и информацию об аутентификации. А теперь перейдем ко второй ошибке нашего списка:  Сообщение об ошибке «The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY B53DC80D13EDEF05» указывает на то, что в вашей системе отсутствует GPG-ключ для репозитория пакетов Kubernetes. Чтобы исправить эту ошибку, необходимо импортировать GPG-ключ для репозитория пакетов Kubernetes с помощью следующей команды: После импорта ключа можете снова запустить sudo apt update, чтобы обновить списки пакетов. Эта ошибка возникает, когда вы выполняете данную команду от имени обычного пользователя, потому что только администратор может напрямую добавлять в apt и when без создания каталога. Ошибка Как можно решить эту проблему? Давайте разберемся:  Ошибка «curl: (23) Failed writing body (0 != 1210)» появляется, когда команда curl не может записать данные в указанный файл из-за ограниченных прав доступа или дискового пространства. Чтобы решить эту ошибку, вы можете попробовать выполнить следующие действия: Проверьте, достаточно ли свободного места на диске, выполнив следующую команду: Эта команда должна показать доступное дисковое пространство и есть ли необходимость освободить его.  Проверьте, достаточно ли у вас прав на запись в указанный файл. Для этого запустите следующую команду: Эта команда должна отобразить разрешения каталога, в который записывается файл. Если у вас недостаточно прав, попробуйте выполнить команду с правами администратора. Проверьте, нет ли проблем с сетевым подключением, попробовав загрузить файл с помощью веб-браузера или следующей команды: Если загрузка прошла успешно, попробуйте снова выполнить начальную команду. Если загрузка не удалась, возможно, возникли проблемы с сетью, которые необходимо решить. Разбираем третью ошибку: При выполнении команды 'kubectl apply возникает ошибка 404 Not Found с URL манифеста Flannel; Эта ошибка возникает потому, что заданный YAML-файл недоступен по указанному URL. Чтобы исправить эту ошибку, необходимо загрузить файл локально, а затем применить его с помощью команды kubectl apply. Решение:  Загрузите YAML-файл с помощью следующей команды: Файл kube-flannel-rbac.yml в ваш текущий каталог. Примените YAML-файл  с помощью следующей команды: Перейдем к четвертой ошибке: Соединение с сервером localhost:8080 прервано — вы указали правильный хост или порт? Эта ошибка возникает, когда kubectl не может подключиться к API-серверу  Kubernetes. Чтобы устранить эту ошибку, вы можете проверить состояние API-сервера  и конфигурацию kubectl. Проверьте состояние API-сервера  Kubernetes с помощью следующей команды: Это отобразит статус службы kubelet. Если служба не запущена, вы можете запустить ее с помощью команды sudo systemctl start kubelet. Проверьте конфигурацию kubectl с помощью данной команды: Это покажет вашу актуальную конфигурацию kubectl. Убедитесь, что в поле server установлен правильный URL API-сервера.  Если необходимо, обновите конфигурацию kubectl, чтобы указать на верный API-сервер Kubernetes. Для изменения конфигурации можно использовать команду kubectl config. Например: Замените my-cluster и my-context на необходимые вам имена, а https://my-kubernetes-api-server:6443 замените на URL вашего API-сервера. После обновления конфигурации вы можете снова выполнить команду kubectl apply. Время пятой ошибки  Она может возникнуть при вызове данной команды: Сама ошибка: Что со всем этим можно сделать: Сообщение об ошибке указывает на то, что ядро вашей системы не поддерживает определенные функции, требуемые Docker, а именно "CPU realtime scheduler", "cgroup blkio weight" и "cgroup blkio weight_device". Чтобы устранить неполадки и решить проблему, вы можете попробовать сделать следующее:  Проверьте состояние службы Docker с помощью команды: Это покажет вам статус службы Docker и все сообщения об ошибках. Если служба не работает, запустите ее с помощью команды: Если сообщения об ошибках не исчезают, можно попробовать обновить ядро до более новой версии, поддерживающей необходимые функции. В качестве альтернативы можно попробовать изменить конфигурацию Docker, чтобы отключить функции, которые не поддерживаются вашим ядром. Для этого создайте файл /etc/docker/daemon.json, если он еще не существует, и добавьте в него следующую информацию: Это устанавливает драйвер cgroup в systemd. Перезапустите службу Docker с помощью команды: Это должно активировать изменения, внесенные в конфигурацию Docker. Убедитесь, что Docker работает без ошибок, еще раз проверив его состояние: Если проблема сохраняется, вам может потребоваться изучить документацию по Docker и ядру или обратиться за помощью в соответствующие сообщества. Основываясь на сообщение об ошибке и выводе команды systemctl status docker, похоже, что Docker запущен с уведомлениями, связанными с поддержкой ядром определенных параметров типа CPU realtime scheduler и cgroup blkio weight. Однако эти уведомления не должны вызывать непосредственных проблем с запуском контейнеров Docker. Если вы столкнулись с какими-либо специфическими проблемами, связанными с Docker, вы можете попробовать выполнить следующие шаги для решения проблем: Проверьте логи Docker: для этого используйте команду sudo journalctl -u docker. Это может дать больше информации о любых ошибках или проблемах, связанных с Docker. Перезапустите Docker: для того используйте команду sudo systemctl restart docker. Если приведенные выше шаги не помогли, вы можете попробовать полностью удалить, а затем заново установить Docker. Используйте команду sudo apt-get remove docker docker-engine docker.io containerd runc для удаления Docker и его приложений, а затем следуйте официальному руководству по установке Docker для Ubuntu 20.04 для повторной установки. Если при работе с 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. Если эти функции не поддерживаются, потребуется обновить ядро или использовать другую версию. Шестая ошибка, когда вы запускаете данную команду Ошибка: Ваше решение:  Сообщение указывает на синтаксическую ошибку в файле /etc/apt/sources.list.d/kubernetes.list. Ошибка возникает потому, что в файле присутствует символ двойной кавычки, который не распознается как допустимый синтаксис. Чтобы устранить эту ошибку, необходимо отредактировать файл /etc/apt/sources.list.d/kubernetes.list и удалить двойные кавычки вокруг URL.  Откройте файл /etc/apt/sources.list.d/kubernetes.list с помощью текстового редактора, например, nano или vi: Удалите двойные кавычки вокруг URL, чтобы файл выглядел следующим образом: Сохраните файл и выйдите из редактора. Снова запустите команду update. Это позволит устранить ошибку и продолжить установку или обновление Kubernetes. Мы прошли середину — 7 ошибка, когда вы используете эту команду: Ошибка Эта ошибка вызвана опечаткой в запущенной вами команде. Вместо команды sudo sysctl --system вы выполнили команду sudo sysctl - system, которая содержит неправильный символ перед словом "system" (— вместо -). Чтобы исправить эту ошибку, нужно просто повторно выполнить команду sudo sysctl --system с правильным синтаксисом: Это перезагрузит настройки sysctl-системы с изменениями, которые вы сделали в предыдущей команде (cat << EOF | sudo tee /etc/sysctl.d/k8s.conf ...).  Итак, ошибка 8 Сообщение об ошибке указывает на то, что служба Docker не может запуститься на вашей ОС Ubuntu 20.04. Вот несколько возможных причин, почему это может произойти: Недостаточно системных ресурсов: для нормальной работы Docker требуется определенное количество системных ресурсов типа оперативной памяти и дискового пространства. Если их не хватает, то Docker может не запуститься. Проблемы с конфигурацией Docker: например, неправильные настройки в конфигурационном файле демона Docker. Сетевые проблемы: Docker может не запуститься, если он не подключен к сети к сети. Чтобы устранить эту проблему, вы можете попробовать выполнить следующие действия: Удостоверьтесь, что на вашей компьютере достаточно ресурсов системы. Вы можете проверить системные ресурсы с помощью команды top. Проверьте конфигурационный файл демона Docker (/etc/docker/daemon.json) на наличие ошибок или неправильных настроек. Вы также можете попробовать сбросить конфигурацию к исходным значениям. Убедитесь, что ваша машина подключена к сети и что нет никаких проблем с сетевой конфигурацией. Вы можете попробовать перезапустить службу Docker с помощью команды systemctl: Если проблема сохраняется, вы можете проверить логи Docker для получения дополнительной информации об ошибке. Чтобы посмотреть журналы, используйте следующую команду: Ошибка №9 Сообщение об ошибке указывает на то, что служба kubelet не может запуститься из-за проблемы с адресом конечной точки запуска контейнера.  Ошибка может быть вызвана несколькими причинами, такими как неправильная конфигурация или проблема с установкой Docker или Kubernetes. Проверьте журналы Docker на наличие ошибок: Сначала проверьте состояние службы Docker: Проверьте конфигурационный файл Kubernetes на ошибки: Убедитесь, что файл конфигурации корректен и содержит правильную информацию. Перезапустите службу kubelet: Если ошибка была временной, то можете переустановить Docker и Kubernetes. Если ни одно из вышеперечисленных действий не помогло, попробуйте удалить, а затем заново установить Docker и Kubernetes. Конец близок — 10 ошибка Сообщение об ошибке указывает на то, что возникли проблемы с запуском контейнера "kube-flannel", и pod застрял в состоянии CrashLoopBackOff. Это может быть вызвано различными причинами, такими как неправильная конфигурация стручка, недостаток ресурсов или проблема с образом контейнера. Вот несколько шагов, которые можно предпринять для устранения этой проблемы: Проверьте логи контейнера: для этого используйте команду "kubectl logs". Убедитесь, что образ контейнера доступен. Проверьте, достаточно ли ресурсов выделено для процессора и памяти. Если нет, увеличьте лимиты ресурсов, чтобы контейнер запустился нормально. Проверьте правильность конфигурации pod,  его зависимостей и переменных окружения. Убедитесь, что служба kubelet запущена и нормально функционирует на узле. Если нет, то попробуйте перезапустить службу kubelet и посмотрите, решит ли это проблему. Ура, 11!  Сообщение об ошибке указывает на то, что команда 'kubeadm' не найдена в системе. Это может произойти, если компоненты кластера Kubernetes не установлены или если переменная окружения PATH установлена неправильно. Чтобы установить компоненты кластера Kubernetes на Ubuntu 20.04, вы можете: Добавьте репозиторий Kubernetes apt: Обновите индекс пакета apt: Установите компоненты Kubernetes: Установите переменную окружения PATH, чтобы включить бинарные файлы Kubernetes: После этих пунктов у вас должно получиться использовать команду 'kubeadm' для присоединения к кластеру Kubernetes. Начать работать с Kubernetes вы можете на курсах: Kubernetes База и Kubernetes для разработчиков. Kubernetes База стартует в формате потока 11 мая. Вы погрузитесь в глубины K8s вместе с другими студентами, а на вопросы по инструменту вам будут отвечать спикеры курса. Узнать больше о курсе Kubernetes для разработчиков и записаться на поток Kubernetes База можно на нашем сайте.