У вас дома есть старый компьютер, который не используется из-за современных операционных систем, требующих высокопроизводительных ресурсов? Что ж, вы можете вернуть этот компьютер в рабочее состояние с помощью некоторых облегченных дистрибутивов Linux. Существует множество небольших дистрибутивов Linux, которые достаточно надежны для выполнения вашей повседневной личной работы.
Эти дистрибутивы настолько крошечные, что даже не получают достаточного внимания. Итак, сегодня мы собираемся познакомить вас с самыми маленькими дистрибутивами Linux. Перечисленные здесь дистрибутивы оживят старые компьютеры. Давайте начнем.
ifconfig(настройка интерфейса) — это инструмент управления сетью. Он используется для настройки и просмотра состояния сетевых интерфейсов в операционных системах Linux. С его помощью ifconfig вы можете назначать IP-адреса, включать или отключать интерфейсы, управлять кешем ARP, маршрутами и т. д.
В этой статье мы рассмотрим, как использовать команду ifconfig. Читать →
Сегодн в статье научимся узнавать температуру жестких дисков (HDD) в Ubuntu Server, данная инструкция будет актуальна и для других дистрибутивов Linux.
В этой заметке установим hddtemp и узнаем, как с помощью неё можно посмотреть температуру жесткого(их) диска(ов). Так же рассмотрим возможность добавления в базу hddtemp SSD диска которого нет в его базе.
Установка hddtemp
Прежде всего установим саму утилиту. Открываем терминал и набираем следующее:
sudo apt install hddtemp
Попробуем запустить:
sudo hddtemp /dev/sda
/dev/sdd: WDC WD2000FYYZ-01UL1B2: 35°C
В результате мы получили достаточно длинную строку с описанием и значением. В то время как для например скриптов нам нужно голое значение.
Проще всего его можно получить запустив hddtemp с ключом -n. Что избавит нас от awk, sed и т.п.
sudo hddtemp -n /dev/sda
Данными примерами мы посмотрели температуру жесткого диска HDD, а если посмотреть на SSD. Давайте посмотрим его температуру:
sudo hddtemp /dev/sdb
/dev/sda: XrayDisk 120GB: 41°C
Как видим SSD тоже прекрасно определился программой и выдал нам температуру. Но что делать, если вывод будет следующим:
WARNING: Drive /dev/sda doesn't seem to have a temperature sensor. WARNING: This doesn't mean it hasn't got one. WARNING: If you are sure it has one, please contact me (hddtemp@guzu.net). WARNING: See --help, --debug and --drivebase options. /dev/sda: Samsung SSD 860 EVO 500G B ▒@: no sensor
Похоже на то, что данных о SSD диске нет в базе. При запуске с ключом --debug выведет поля SMART. Температура HDD выводится в поле со значением 194, а как же обстоят дела у SSD диска:
sudo hddtemp --debug /dev/sda
================= hddtemp 0.3-beta15 ==================
Model: Samsung SSD 860 EVO 500G B ▒@
field(5) = 0
field(9) = 76
field(12) = 6
field(177) = 0
field(179) = 0
field(181) = 0
field(182) = 0
field(183) = 0
field(187) = 0
field(190) = 30
field(195) = 0
field(199) = 0
field(235) = 2
field(241) = 45
If one of the field value seems to match the temperature, be sure to read
the hddtemp man page before sending a report (section REPORT). Thanks.
В поле 190 стоит цифра 30, что похоже на температуру нашего диска.
Добавим наш SSD диск в базу командой из под root:
sudo su
echo '"Samsung SSD 860 EVO 500G" 190 C "Samsung SSD 860 EVO 500G"' >> /etc/hddtemp.db
Проверим:
sudo hddtemp -n /dev/sda
Из указанных примеров видно, что для доступа к жестким дискам нужен рутовый аккаунт. По причине этого мы имеем ограничение по использованию. Например с Zabbix. Но hddtemp может работать как демон с доступом по TCP для любого пользователя. Для запуска демона прежде всего нужно определится какие именно диски он будет опрашивать. По умолчанию опрос делается первого диска sda, но мы можем это изменить, меняем конфигурацию:
P.S. Еще одна полезная команда посмотреть smart информацию
smartctl -a /dev/sda -d sat+cciss,Х
[endtxt]
RSS
Добавление RSS-ленты на главную страницу этого сайта не поддерживается, так как это может привести к зацикливанию, замедляющему работу вашего сайта. Попробуйте использовать другой блок, например блок Последние записи, для отображения записей сайта.
Первой установкой Fedora была Fedora 19, кодовое имя «Schrödinger’s Cat», названное в честь квантово-механического мысленного эксперимента с котом Шредингера. В то время версии Fedora выпускались с числовой версией и кодовым именем до того, как было отменено соглашение об именах: «Какой облом!».
Тем не менее, с тех пор мы ни разу не оглядывались назад, а перенесся в 2021 год, и Fedora 34 уже на подходе. Мы в восторге от последней версии Fedora 34, ее последних функций, обновленных наборов инструментов и GNOME 40.
В новой Fedora 34 появятся новые номера, вызывающие волнение; Gnome 40, Ruby 3.0, OpenSSL3.0 и многие новые числа и функции, освещенные в этой статье.
Дата выпуска Fedora 34
Бета-версия Fedora 34 доступна для загрузки, что означает, что следующим шагом Fedora Project станет выпуск Fedora Linux 34. Выпуск Fedora Linux 34 запланирован на конец апреля. Неофициальная дата выпуска — 20 апреля 2021 года. Эта дата не может наступить раньше для энтузиастов Fedora или для тех, кто хотел бы протестировать или перейти на Fedora.
Представляем новые функции Fedora 34
Окружение рабочего стола — GNOME 40
Fedora Linux 34 Workstation включает GNOME 40, новейшую версию среды рабочего стола GNOME. Fedora 34 — первый официальный дистрибутив Linux, предлагающий GNOME 40 по умолчанию с новой установкой.
Так что нового в GNOME 40 на Fedora 34? Макеты изменились с вертикальной на горизонтальную, но большинство функций верхней панели остались без изменений. Он имеет черточку внизу, а рабочие области расположены в виде горизонтальной полосы. Вы можете легко переключаться между рабочими областями и запускать приложения. Fedora 34 предлагает лучший пользовательский интерфейс, перетаскивая его, когда эскизы рабочей области появляются над измельчением приложения.
Интересный факт:
С этого момента GNOME меняет свое соглашение об именах и схемах для новых выпусков. Четные числа, используемые в серии GNOME 3.x, например 3.34, 3.36, 3.38, будут заменены схемой основных чисел. GNOME 40, GNOME 41, GNOME 42 и т. д. Станут новыми схемами. Намного проще!
Ключевые изменения в GNOME 40
Метки с многострочными значками
При наведении указателя мыши на сетку оболочки GNOME вы увидите многострочные метки значков с полным текстом имени приложения.
Горизонтальная прокрутка для сетки приложения
Сетка приложений в версиях GNOME до 40 прокручивается по вертикали, но в Fedora Linux 34 есть сетка приложений, которая прокручивается по горизонтали с индикаторами страниц внизу. Вы можете легко искать и запускать установленные приложения в вашей системе. Новая функция хорошо сочетается с сенсорными устройствами и может показаться странной с прокруткой колесика мыши.
Улучшения приложения для файлов
Приложение для работы с файлами может оказаться самым большим бенефициаром в новом выпуске GNOME 40. К новым функциям можно отнести:
Простой, чистый и лучший диалог предпочтений.
Теперь вы можете отсортировать файлы по дате их создания.
Текущие файловые операции позволяют лучше и точнее оценивать время.
Вы можете запускать исполняемые текстовые файлы прямо из приложения «Файлы».
Календарь GNOME
В приложении-календаре есть 15-минутное напоминание.
Окружение рабочего стола — KDE Plasma 5.21
Если вы предпочитаете KDE в качестве среды рабочего стола, Fedora Linux 34 включает в себя KDE Plasma 5.21, который использует готовый сервер отображения Wayland. Он использует Systemd при запуске, что сокращает время запуска. Сервер отображения имеет ускоренную трехмерную графику, поддержку безголового дисплея и графические процессоры NVIDIA. Архитектура aarch64 поставляется с Fedora KDE Plasma Desktop Spin и доступна для установки.
LXQt 0,16
Проект Fedora обновил базу LXQt до последней версии в Fedora 34.
Xfce 4.16
Xfce — это легкая среда рабочего стола, доступная для дистрибутивов Linux. Последняя среда рабочего стола Xfce, Xfce 4.16, использует GTK3, имеет новые значки и множество новых функций, доступных в Fedora Linux 34.
PipeWire для PulseAudio
В Fedora Linux 34 в качестве звукового демона по умолчанию используется PipeWire для управления и микширования аудиопотоков. Вы получите большую гибкость и лучшее качество звука с PipeWire. PipeWire был интегрирован в Fedora Linux 34 для создания единой звуковой инфраструктуры для работы с контейнерами, профессионального микширования и использования на рабочем столе. В целом, PipeWire более безопасен и предлагает лучшее качество звука в Fedora 34, чем со звуковым демоном PulseAudio, который использовался по умолчанию в предыдущих выпусках Fedora. Я надеюсь, что мы увидим конец многих проблем, с которыми пользователи Fedora столкнулись с PulseAudio.
Представляем прозрачное сжатие BTRFS
BTRFS была файловой системой по умолчанию для рабочих станций Fedora со времен Fedora Linux 33, но команда проекта Fedora сделала лучше в Fedora 34. Fedora 34 добавила прозрачное сжатие в BTRFS, сэкономив больше дискового пространства и увеличив срок службы твердотельных накопителей. Команда проекта Fedora закладывает основу для будущего улучшения сжатия, но с Fedora 34 мы уже можем наблюдать улучшение производительности чтения и записи. Будущее выглядит безоблачным, и функции могут стать лучше с новыми выпусками Fedora.
i3 тайловый оконный менеджер
Тайловый оконный менеджер i3 для x11 обеспечивает скорость и переносимость в Fedora 34. Тайловые оконные менеджеры могут устрашать неопытных пользователей, поскольку они полностью отличаются от KDE и GNOME, которые управляются с помощью меню. Официальный оконный менеджер i3, доступный в Fedora 34, быстр и полностью настроен. Диспетчер окон i3 отличается небольшим объемом памяти и памяти, что может быть привлекательно для существующих и новых пользователей Fedora.
Systemd-oomd
Systemd-oomd обеспечивает лучший пользовательский опыт в ситуациях нехватки памяти. Systemd-oomd по умолчанию доступен в некоторых спинах Fedora. В Fedora 34 в качестве демона по умолчанию для всех спинов и вариантов используется System-oomd. System-oomd позволит Fedora 34 быстро выйти из ситуаций, связанных с нехваткой ресурсов. System-oomd использует информацию о сбоях в работе Linux для принятия решений, которые помогут восстановить систему после проблем с зависанием раньше, чем позже.
Новые возможности для разработчиков программного обеспечения
Fedora считается лучшей операционной системой для разработки программного обеспечения, которая у нас есть, если вы спросите любого разработчика программного обеспечения. Fedora Linux 34 включает в себя почти все инструменты разработки, которые вам когда-либо понадобятся в репозиториях, а весь набор инструментов и пакеты Fedora Linux 34 были обновлены.
Ящик для инструментов
Fedora 34 имеет набор инструментов, который дает разработчикам лучший опыт разработки и отладки контейнерных приложений. Разработчики могут безопасно устанавливать инструменты разработки, запускать различные конфигурации, опробовать свои приложения, сохраняя при этом стабильность своей операционной системы Fedora. Вы можете легко настроить контейнеры RHEL в наборе инструментов и разрабатывать приложения в RHEL.
Пакеты и инструментальные средства
Ruby 3.0. Ruby 3.0 включает новые функции, такие как RBS, Ractor и планировщик, что упрощает и ускоряет разработку приложений в Fedora 34.
Binutils 2.35. Fedora 34 включает более новую версию Binutils 2.35, которая была перебазирована с Binutils 2.34, и поставляется с поддержкой DWARF-5 и множеством исправлений ошибок для улучшения взаимодействия с пользователем.
Golang 1.16. Новый пакет Golang обеспечивает надежную среду разработки для проектов, написанных на Fedora 34.
IBus 1.5.24
LLVM 12
BIND 9.16
MariaDB 10.5
Ruby on Rails 6.1
OpenSSL3.0
GCC 11
glibc 2.33
Лучшее будущее!
Fedora 34 обеспечивает более удобное взаимодействие с пользователем, особенно с GNOME 40. Fedora Linux 34 — это устаревший дистрибутив общего назначения, а новые наборы инструментов и обновления идеально подходят для разработки. Fedora 34 приносит свободу, друзей, функции и является первым крупным дистрибутивом Linux, предлагающим GNOME 40 «из коробки».
Готовые кластеры в облаке, например AWS, Google Cloud, Yandex Cloud и так далее.
Использовать одну из готовых реализаций — быстрый и надежный способ развертывания системы оркестрации контейнеров Docker. Однако, мы рассмотрим ручное создание кластера Kubernetes из 3-х нод — один мастер (управление) и две рабочие ноды (запуск контейнеров).
Подготовка системы
Данные действия выполняем на всех узлах будущего кластера. Это необходимо, чтобы удовлетворить программные системные требования для нашего кластера.
Настройка системы
1. Задаем имена узлам. Для этого выполняем команды на соответствующих серверах:
hostnamectl set-hostname k8s-master1.dmosk.local
hostnamectl set-hostname k8s-worker1.dmosk.local
hostnamectl set-hostname k8s-worker2.dmosk.local
* в данном примере мы зададим имя k8s-master1 для мастера и, соответственно, k8s-worker1 и k8s-worker2 — для первого и второго рабочих нод. Каждая команда выполняется на своем сервере.
Необходимо, чтобы наши серверы были доступны по заданным именам. Для этого необходимо на сервере DNS добавить соответствующие А-записи. Или на каждом сервере открываем hosts:
* net.bridge.bridge-nf-call-iptables контролирует возможность обработки трафика через bridge в netfilter. В нашем примере мы разрешаем данную обработку для IPv4 и IPv6.
Применяем параметры командой:
sysctl --system
Брандмауэр
Для мастер-ноды и рабочей создаем разные наборы правил.
По умолчанию, в Ubuntu брандмауэр настроен на разрешение любого трафика. Если мы настраиваем наш кластер в тестовой среде, настройка брандмауэра не обязательна.
* для нас является важной настройкой cgroupdriver — она должна быть выставлена в значение systemd. В противном случае, при создании кластера Kubernetes выдаст предупреждение. Хоть на возможность работы последнего это не влияет, но мы постараемся выполнить развертывание без ошибок и предупреждений со стороны системы.
И перезапускаем docker:
systemctl restart docker
Установка Kubernetes
Установку необходимых компонентов выполним из репозитория. Добавим его ключ для цифровой подписи:
deb https://apt.kubernetes.io/ kubernetes-xenial main
Обновим список пакетов:
apt-get update
Устанавливаем пакеты:
apt-get install kubelet kubeadm kubectl
* где:
kubelet — сервис, который запускается и работает на каждом узле кластера. Следит за работоспособностью подов.
kubeadm — утилита для управления кластером Kubernetes.
kubectl — утилита для отправки команд кластеру Kubernetes.
Нормальная работа кластера сильно зависит от версии установленных пакетов. Поэтому бесконтрольное их обновление может привести к потере работоспособности всей системы. Чтобы этого не произошло, запрещаем обновление установленных компонентов:
По-отдельности, рассмотрим процесс настройки мастер ноды (control-plane) и присоединения к ней двух рабочих нод (worker).
Настройка control-plane (мастер ноды)
Выполняем команду на мастер ноде:
kubeadm init --pod-network-cidr=10.244.0.0/16
* данная команда выполнит начальную настройку и подготовку основного узла кластера. Ключ —pod-network-cidr задает адрес внутренней подсети для нашего кластера.
Выполнение займет несколько минут, после чего мы увидим что-то на подобие:
...
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 192.168.0.15:6443 --token f7sihu.wmgzwxkvbr8500al
--discovery-token-ca-cert-hash sha256:6746f66b2197ef496192c9e240b31275747734cf74057e04409c33b1ad280321
* данную команду нужно вводить на worker нодах, чтобы присоединить их к нашему кластеру. Можно ее скопировать, но позже мы будем генерировать данную команду по новой.
В окружении пользователя создаем переменную KUBECONFIG, с помощью которой будет указан путь до файла конфигурации kubernetes:
export KUBECONFIG=/etc/kubernetes/admin.conf
Чтобы каждый раз при входе в систему не приходилось повторять данную команду, открываем файл:
vi /etc/environment
И добавляем в него строку:
export KUBECONFIG=/etc/kubernetes/admin.conf
Посмотреть список узлов кластера можно командой:
kubectl get nodes
На данном этапе мы должны увидеть только мастер ноду:
NAME STATUS ROLES AGE VERSION
k8s-master.dmosk.local NotReady <none> 10m v1.20.2
Чтобы завершить настройку, необходимо установить CNI (Container Networking Interface) — в моем примере это flannel:
Копируем его и используем на двух наших узлах. После завершения работы команды, мы должны увидеть:
Run 'kubectl get nodes' on the control-plane to see this node join the cluster.
На мастер ноде вводим:
kubectl get nodes
Мы должны увидеть:
NAME STATUS ROLES AGE VERSION
k8s-master1.dmosk.local Ready control-plane,master 18m v1.20.2
k8s-worker1.dmosk.local Ready <none> 79s v1.20.2
k8s-worker2.dmosk.local Ready <none> 77s v1.20.2
Наш кластер готов к работе. Теперь можно создавать поды, развертывания и службы. Рассмотрим эти процессы подробнее.
Pods
Поды — неделимая сущность объекта в Kubernetes. Каждый Pod может включать в себя несколько контейнеров (минимум, 1). Рассмотрим несколько примеров, как работать с подами. Все команды выполняем на мастере.
Создание
Поды создаются командой kubectl, например:
kubectl run nginx --image=nginx:latest --port=80
* в данном примере мы создаем под с названием nginx, который в качестве образа Docker будет использовать nginx (последнюю версию); также наш под будет слушать запросы на порту 80.
Чтобы получить сетевой доступ к созданному поду, создаем port-forward следующей командой:
* в данном примере запросы к кластеру kubernetes на порт 8888 будут вести на порт 80 (который мы использовали для нашего пода).
Команда kubectl port-forward является интерактивной. Ее мы используем только для тестирования. Чтобы пробросить нужные порты в Kubernetes используются Services — об этом будет сказано ниже.
Можно открыть браузер и ввести адрес http://<IP-адрес мастера>:8888 — должна открыться страница приветствия для NGINX.
Просмотр
Получить список всех подов в кластере можно командой:
kubectl get pods
Например, в нашем примере мы должны увидеть что-то на подобие:
NAME READY STATUS RESTARTS AGE
nginx 1/1 Running 0 3m26s
Посмотреть подробную информацию о конкретном поде можно командой:
kubectl describe pods nginx
Запуск команд внутри контейнера
Мы можем запустить одну команду в контейнере, например, такой командой:
kubectl exec nginx -- date
* в данном примере будет запущена команда date внутри контейнера nginx.
Также мы можем подключиться к командной строке контейнера командой:
kubectl exec --tty --stdin nginx -- /bin/bash
Удаление
Для удаления пода вводим:
kubectl delete pods nginx
Использование манифестов
В продуктивной среде управление подами выполняется с помощью специальных файлов с описанием того, как должен создаваться и настраиваться под — манифестов. Рассмотрим пример создания и применения такого манифеста.
* в данном примере будет создан под с названием web-srv; в данном поде будет развернуто 3 контейнера — nginx, php-fpm и mariadb на основе одноименных образов.
Для объектов Kubernetes очень важное значение имеют метки или labels. Необходимо всегда их описывать. Далее, данные метки могут использоваться для настройки сервисов и развертываний.
Чтобы применить манифест выполняем команду:
kubectl apply -f manifest_pod.yaml
Мы должны увидеть ответ:
pod/web-srv created
Смотрим поды командой:
kubectl get pods
Мы должны увидеть:
NAME READY STATUS RESTARTS AGE
web-srv 3/3 Ready 0 3m11s
* для Ready мы можем увидеть 0/3 или 1/3 — это значит, что контейнеры внутри пода еще создаются и нужно подождать.
Deployments
Развертывания позволяют управлять экземплярами подов. С их помощью контролируется их восстановление, а также балансировка нагрузки. Рассмотрим пример использования Deployments в Kubernetes.
Создание
Deployment создаем командой со следующим синтаксисом:
kubectl create deploy <название для развертывания> --image <образ, который должен использоваться>
В данном примере Kubernetes будет создавать от 5 до 10 экземпляров контейнеров — добавление нового экземпляра будет происходить при превышении нагрузки на процессор до 75% и более.
Посмотреть созданные параметры балансировки можно командой:
kubectl get hpa
Редактирование
Для нашего развертывания мы можем изменить используемый образ, например:
kubectl set image deploy/web-set nginx=httpd:latest --record
* данной командой для deployment web-set мы заменим образ nginx на httpd; ключ record позволит нам записать действие в историю изменений.
Если мы использовали ключ record, то историю изменений можно посмотреть командой:
kubectl rollout history deploy/web-set
Перезапустить deployment можно командой:
kubectl rollout restart deploy web-set
Манифест
Как в случае с подами, для создания развертываний мы можем использовать манифесты. Попробуем рассмотреть конкретный пример.
* в данном манифесте мы создадим deployment и autoscaling. Итого, мы получим 5 экземпляров подов для развертывания web-deploy, которые могут быть расширены до 10 экземпляров. Добавление нового будет происходить при превышении нагрузки на процессор более чем на 75% или потреблением оперативной памяти более чем на 80%.
Чтобы создать объекты с помощью нашего манифеста вводим:
kubectl apply -f manifest_deploy.yaml
Мы должны увидеть:
deployment.apps/web-deploy created
horizontalpodautoscaler.autoscaling/web-deploy-autoscaling created
Объекты web-deploy и web-deploy-autoscaling созданы.
Удаление
Для удаления конкретного развертывания используем команду:
kubectl delete deploy web-set
Для удаления всех развертываний вместо названия deployment указываем ключ —all:
kubectl delete deploy --all
Удалить критерии autoscaling для конкретного развертывания можно командой:
kubectl delete hpa web-set
Удалить все критерии autoscaling можно командой:
kubectl delete hpa --all
Удалить объекты, созданные с помощью манифеста можно командой:
kubectl delete -f manifest_deploy.yaml
Services
Службы позволяют обеспечить сетевую доступность для развертываний. Существует несколько типов сервисов:
ClusterIP — сопоставление адреса с deployments для подключений внутри кластера Kubernetes.
NodePort — для внешней публикации развертывания.
LoadBalancer — сопоставление через внешний балансировщик.
ExternalName — сопоставляет службу по имени (возвращает значение записи CNAME).
Мы рассмотрим первые два варианта.
Привязка к Deployments
Попробуем создать сопоставления для ранее созданного развертывания:
* где web-deploy — deployment, который мы развернули с помощью манифеста. Публикация ресурса происходит на внутреннем порту 80. Обращаться к контейнерам можно внутри кластера Kubernetes.
Для создания сопоставления, с помощью которого можно будет подключиться к контейнерам из внешней сети выполняется командой:
* данная команда отличается от команды выше только типом NodePort — для данному deployment будет сопоставлен порт для внешнего подключения, который будет вести на внутренний (в нашем примере, 80).
Просмотр
Чтобы посмотреть созданные нами службы, вводим:
kubectl get services
Мы можем увидеть что-то на подобие:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
web-deploy NodePort 10.111.229.132 <none> 80:30929/TCP 21s
* в данном примере указано, что у нас есть служба типа NodePort, а к сервису можно подключиться по порту 30929.
Можно попробовать открыть браузер и ввести http://<IP-адрес мастера>:30929 — мы должны увидеть нужную нам страницу (в наших примерах, либо NGINX, либо Apache).
Посмотреть список сервисов с указанием селектором можно командой:
kubectl get services -o wide
Удаление
Удаляем созданную службу командой:
kubectl delete services web-deploy
* в данном примере будет удалена служба для развертывания web-deploy.
Удалить все службы можно командой:
kubectl delete services --all
Манифест
Как в случае с подами и развертываниями, мы можем использовать манифест-файлы. Рассмотрим небольшой пример.
* в данном примере мы создадим службу, которая будем связываться с развертыванием по лейболу project: myweb.
Ingress Controller
В данной инструкции не будет рассказано о работе с Ingress Controller. Оставляем данный пункт для самостоятельного изучения.
Данное приложение позволяет создать балансировщик, распределяющий сетевые запросы между нашими сервисами. Порядок обработки сетевого трафика определяем с помощью Ingress Rules.
Существует не маленькое количество реализаций Ingress Controller — их сравнение можно найти в документе по ссылке в Google Docs.
Для установки Ingress Controller Contour (среди множества контроллеров, он легко устанавливается и на момент обновления данной инструкции полностью поддерживает последнюю версию кластера Kubernetes) вводим:
Веб-интерфейс позволяет получить информацию о работе кластера в удобном для просмотра виде.
В большинстве инструкций рассказано, как получить доступ к веб-интерфейсу с того же компьютера, на котором находится кластер (по адресу 127.0.0.1 или localhost). Но мы рассмотрим настройку для удаленного подключения, так как это более актуально для серверной инфраструктуры.
Переходим на страницу веб-интерфейса в GitHub и копируем ссылку на последнюю версию файла yaml:
* на момент обновления инструкции, последняя версия интерфейса была 2.1.0.
* где https://raw.githubusercontent.com/kubernetes/dashboard/v2.1.0/aio/deploy/recommended.yaml — ссылка, которую мы скопировали на портале GitHub.
Открываем на редактирование скачанный файл:
vi recommended.yaml
Комментируем строки для kind: Namespace и kind: Secret (в файле несколько блоков с kind: Secret — нам нужен тот, что с name: kubernetes-dashboard-certs):
* нам необходимо закомментировать эти блоки, так как данные настройки в Kubernetes мы должны будем сделать вручную.
Теперь в том же файле находим kind: Service (который с name: kubernetes-dashboard) и добавляем строки type: NodePort и nodePort: 30001 (выделены красным):
* таким образом, мы публикуем наш сервис на внешнем адресе и порту 30001.
Для подключения к веб-интерфейсу не через локальный адрес, начиная с версии 1.17, обязательно необходимо использовать зашифрованное подключение (https). Для этого нужен сертификат. В данной инструкции мы сгенерируем самоподписанный сертификат — данный подход удобен для тестовой среды, но в продуктивной среде необходимо купить сертификат или получить его бесплатно в Let’s Encrypt.
И так, создаем каталог, куда разместим наши сертификаты:
* можно не менять параметры команды, а так их и оставить. Браузер все-равно будет выдавать предупреждение о неправильном сертификате, так как он самоподписанный.
Создаем namespace:
kubectl create namespace kubernetes-dashboard
* это та первая настройка, которую мы комментировали в скачанном файле recommended.yaml.
Теперь создаем настройку для secret с использованием наших сертификатов:
* собственно, мы не использовали настройку в скачанном файле, так как создаем ее с включением в параметры пути до созданных нами сертификатов.
Теперь создаем остальные настройки с помощью скачанного файла:
kubectl create -f recommended.yaml
Мы увидим что-то на подобие:
serviceaccount/kubernetes-dashboard created
service/kubernetes-dashboard created
secret/kubernetes-dashboard-csrf created
secret/kubernetes-dashboard-key-holder created
configmap/kubernetes-dashboard-settings created
role.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
deployment.apps/kubernetes-dashboard created
service/dashboard-metrics-scraper created
deployment.apps/dashboard-metrics-scraper created
Теперь открываем браузер и переходим по ссылке https://<IP-адрес мастера>:30001 — браузер покажет ошибку сертификата (если мы настраиваем по инструкции и сгенерировали самоподписанный сертификат). Игнорируем ошибку и продолжаем загрузку.
Kubernetes Dashboard потребует пройти проверку подлинности. Для этого можно использовать токен или конфигурационный файл:
На сервере вводим команду для создания сервисной учетной записи: