Автоматическое масштабирование

Автомасштабирование импользуется для планирования динамической нагрузки на кластер. Для настройки автомасштабирование кластера Kubernetes есть программа Cluster Autoscaler. Если будет повышенная нагрузка на сервер, то кластер при автоматическом масштабировании сервис увеличит количество нод, а при отсутствии нагрузки — уменьшит. Cluster Autoscaler (CA) изменяет количество узлов зависимо от количества ожидающих модулей pod. Программа периодически проверяет количество модулей, […]

Ручное масштабирование

Для ручного масштабирования кластера Kubernetes используются следующие функции: Master Откройте панель управления кластерами, для желаемого кластера выберите в контекстном меню пункт «Изменить тип виртуальной машины Master» и задайте необходимые параметры мастера.   Node group Откройте панель управления кластерами, для желаемого кластера выберите в контекстном меню пункт «Изменить размер» и введите необходимое количество узлов. Нажмите «Сохранить […]

Установка client-keystone-auth

Выполнение операции Single Sign-On (SSO) при подключении к кластеру производится при помощи client-keystone-auth. Windows Шаги установки для Windows: Воспользуйтесь командой через PowerShell: iex (New-Object System.Net.WebClient).DownloadString(‘https://hub.mcs.mail.ru/repository/client-keystone-auth/latest/windows/client-install.ps1’)   Задайте путь до client-keystone-auth в переменные среды: Add client-keystone-auth installation dir to your PATH? [Y/n]   Введите «Y». Установка завершена. Linux/Mac OS Шаги установки для Linux/Mac OS: Воспользуйтесь командой в […]

Создание кластера в Terraform

Чтобы создать кластер Kubernetes, где будет создана нод-группа с включенным автомасштабированием, создайте файл kubernetes.tf, где будет описано создание кластера Kubernetes. Добавьте текст из примеров ниже, и исправьте значения настроек для вашего кластера. Для создания кластера нам потребуются следующие объекты: Ресурсы (resource) linxcs_networking_network — сеть, в которой будет создан кластер и его ноды. В примере ниже сеть […]

Ошибка подключения к дэшборду

Проблема После создания нового кластера Kubernetes, при попытке зайти в дашборд по ссылке https://***:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/login, возникает ошибка »404 the server could not find the requested resource». Решение Для решения проблемы необходимо выполнить следующие шаги: Установить и настроить kubectl согласно инструкции. Сохранить в текущий каталог файл dashboard-19-fix.yaml. Выполнить следующую последовательность команд: 1kubectl apply -f dashboard-19-fix.yaml 2kubectl-n kube-system set image deployment/kubernetes-dashboard […]

Совместимость kubedb с Linx Cloud k8saas

Проблема Проблема масштабирования k8aas с использованием kubedb и команды: 1Resource CREATE failed: WaitConditionTimeout: resources[37].resources.minion_wait_condition: 0 of 1 received Симптомы ВМ создаётся, но среди нод ее нет. Стек в статусе CREATE_FAILED. Контроллер менеджер работает «с тормозами». Не работают базовые компоненты k8s.   Решение Временное Перезапуск мастер-ноды k8s помогает решить проблему кратковременно. Постоянное Вам нужно обратиться в техническую […]

Деплой приложений через API

Развертывание приложения в Kubernetes (k8s) осуществляется с помощью утилиты kubectl. Полный синтаксис команд утилиты можно найти в официальной документации. Подготовка Kubectl работает в командной строке или терминале. Убедиться что kubectl установлен можно при помощи команды: kubectl version —client Общий формат команды kubectl:  kubectl action resource (kubectl -> действие -> сущность, на которую направлено действие) Эта последовательность […]

Настройка безопасности подов

Поды могут иметь доступ к различной информации и компонентам кластера Kubernetes. Также при определенных настройках подов сами поды и кластер Kubernetes, в котором они выполняются, могут быть уязвимы к атакам. В кластере Kubernetes с помощью установленного Gatekeeper можно применять ограничения (constraints). Эти ограничения создаются на основе шаблонов ограничений (constraint templates). Вы можете создавать собственные шаблоны и ограничения. Кроме […]

Ограничение ресурсов для подов

При распределении подов по нодам kube-scheduler проверяет requests и limits для контейнеров и текущую емкость нод. Это позволяет оптимально распределить поды по нодам для удовлетворения их требований и не допустить перегрузки нод. Повсеместное использование requests и limits для контейнеров является одной из лучших практик администрирования кластера Kubernetes.   Requests и limits Если нода, на котором работает под, имеет достаточно доступных ресурсов, контейнер может использовать больше […]

Поды

Описание Под является минимальной вычислительной единицей в терминологии Kubernetes. Под — группа из одного или нескольких контейнеров приложений, включающая общие используемые хранилище (тома), IP-адрес и информацию по их запуску.   Использование подов В Kubernetes есть два основных пути использования подов: Под запускающий единственный контейнер. Модель «один-контейнер-на-один-под» является более распространенной в Kubernetes и в данном кейсе […]

Подключение NFS

Вместе с облачной системой хранения на базе Ceph вы можете использовать общее файловое хранилище, доступное по протоколу NFS, для создания Persistent volumes в вашем кластере Kubernetes. Для этого сначала необходимо создать NFS-диск в приватной подсети, ассоциированной с вашим кластером Kubernetes: Выберите пункт меню «Облачные вычисления» → «Файловое хранилище». Создайте новую сеть файлового хранилища, указав: имя […]

Динамическое выделение дисков с PVC

Механизм Persistent Volume Claim (PVC) в Linx Cloud позволяет динамически выделять и подключать к вашим подам блочные диски с необходимыми характеристиками. Это обеспечивается за счет того, что в Kubernetes от Linx Cloud реализован CSI-драйвер(Container Storage Interface), который взаимодействует с API Linx Cloud для управления блочными дисками. Для того, чтобы динамически создать PV на базе PVC, […]

Persistent Volumes и StatefulSet

StatefulSet — это удобный способ работы со Stateful-приложениями, которым требуется обрабатывать события об остановке работы Pod и осуществления Graceful Shutdown. Обычно, такие приложения — это базы данных и очереди сообщений, которые работают в нескольких экземплярах, синхронизируемых друг с другом посредством репликации или кластеризации. Существует несколько способов организации таких схем: с использованием общих Persistent Volumes (RWX) […]

Подключение существующего диска в качестве Persistent Volume

Механизм PersistentVolume позволяет подключить к кластеру K8S существующий диск, в качестве постоянного хранилища данных. Важно Если вы хотите подключить общее файловое хранилище NFS в качестве диска, то воспользуйтесь инструкцией по этой ссылке. Рассмотрим пример. Имеется диск с файловой системой ext4, на котором есть файл test_file.txt. Создадим PV на основе этого диска, описав для него манифест: — apiVersion: […]

Управление классами хранения

Классы хранения (storage classes) используются при динамическом создании томов (Persistent Volume Claim). В каждом кластере Kubernetes VK Cloud присутствуют преднастроенные классы хранения.   Получить информацию о классах хранения Выполните одну из команд: Для получения списка всех классов хранения: kubectl get storageclasses   Для получения подробной информации о классе хранения: kubectl describe storageclasses <имя класса хранения, полученное […]

Установка Local DNS Cache

Описание Установка Local DNS Cache позволяет снизить количество запросов в CoreDNS и повысить стабильность преобразования DNS имен. Это позволит избежать использования DNAT по протоколу UDP при одновременном резолвинге для решения проблемы conntrack race condition. Файл конфигурации Этот манифест установит на каждый узел кластера локальный DNS-сервер, который будет синхронизироваться с апстримным сервером по протоколу TCP. Файл […]

Ingress Controller

При создании PaaS кластера Kubernetes есть возможность выбрать среди предустановленных сервисов NGINX Ingress Controller. Если он был выбран, то после создания кластера, Ingress Controller будет развернут автоматически. Ingress Controller состоит из двух компонентов: Контроллера, взаимодействующего с API-сервером Kubernetes. Реверсивного прокси-сервера. Контроллер получает данные об ingress-объектах от API-сервера и на основании их настраивает работу реверсивного прокси. […]

Балансировщики нагрузки на сеть

Описание Балансировщик нагрузки — это метод распределения заданий (трафика) между несколькими серверами с целью оптимизации использования ресурсов, сокращения времени обслуживания запросов, горизонтального масштабирования кластера (динамическое добавление и удаление устройств), а также обеспечения отказоустойчивости. Kubernetes как сервис от Linx Cloud интегрирован с облачной платформой Linx Cloud, так что платформа предоставляет Load Balancer как сервис и может […]

Работа с сетью в Kubernetes

Kubernetes предназначен для совместного использования машин между приложениями. Как правило, для совместного использования компьютеров требуется, чтобы два приложения не пытались использовать одни и те же порты. Координация портов между несколькими разработчиками очень сложна в масштабе и подвергает пользователей проблемам на уровне кластера, которые они не могут контролировать. Динамическое распределение портов создает множество сложностей для системы […]

Использование политик Gatekeeper

Шаблоны ограничений Перед началом использования ограничений нужно создать шаблон политики (ConstraintTemplate). Шаблон политики позволяет администраторам настроить поведение политик как аргументы у функций. Библиотека уже настроенных ограничений и шаблонов ограничений доступна по ссылке. Ниже приведен пример шаблона политик, который требует наличие указанных меток: 1apiVersion: templates.gatekeeper.sh/v1beta1 2kind: ConstraintTemplate 3metadata: 4 name: k8srequiredlabels 5spec: 6 crd: 7 spec: 8 […]

Установка Open Policy Agent

Open Policy Agent (OPA) — это механизм политик общего назначения с открытым исходным кодом, который унифицирует применение политик во всем стеке. Вы можете использовать OPA для применения политик в Kubernetes. OPA позволяет контролировать действия конечного пользователя в кластере и обеспечить соответствие кластеров политикам компании. У каждой организации есть внутренние политики и процедуры. Одни нужны для […]

Резервное копирование с помощью Velero

При помощи Velero можно создать резервную копию кластера Kubernetes в облако Linx Cloud и развернуть эту копию в новый кластер. Эта операция полезна при необходимости тиражировать кластер с пользовательскими настройками. Для этого понадобится: Развернутый в Linx Cloud кластер Kubernetes; Velero клиент; Плагин OpenStack.   Описание Velero — это удобный инструмент резервного копирования для Kubernetes, который […]

Использование Docker Registry

Загрузка образов в Kubernetes, используя Docker Registry Данная статья поможет вам в создании пода, использующего Секрет, для загрузки образа из частного реестра Docker или репозитория. Docker Registry — это серверное приложение, предназначенное для хранения и распространения Docker-образов. Для чего может использоваться Docker Registry контроль над местом хранения образов контроль над распространением образов интеграция хранения и […]

Подключение Helm

Helm — популярный менеджер пакетов для Kubernetes, который может быть использован для быстрой установки сложных приложений, таких как CRM, e-commerce, базы данных и т.д. Так как кластеры Kubernetes, устанавливаемые Linx Cloud, используют ролевую модель безопасности, необходимо инициализировать Helm следующим образом: kubectl create serviceaccount —namespace kube-system tiller helm init —service-account tiller kubectl create clusterrolebinding tiller-cluster-rule —clusterrole=cluster-admin […]

Labels и Taints

Label — это пары ключ/значение, которые прикрепляются к объектам Kubernetes, таким как поды. Они предназначены для использования и указания идентифицирующих атрибутов объектов, значимых и актуальных для пользователей. Label можно использовать для организации и выбора подмножеств объектов. Taint позволяют защитить ноды от запуска определенных подов. Toleration применяется к подам и позволяет подам запускаться на нодах, которые […]

Изменение нод-группы

Для редактирования Node Group нужно открыть контекстное меню нод-группы. Кнопка Изменить размер позволяет задать текущее количество нод в нод-группе. После нажатия на кнопку Сохранить изменения, запустится скалирование кластера до заданного количества. Настроить автомасштабирование позволяет включить или выключить данную функцию для нод-группы, а также задать минимальное и максимальное количество нод в ней. Кнопка Удалить нод-группу запустит […]

Добавление нод-группы

Описание Группа узлов (Node Group) — это множество нод с общим шаблоном (размером) ВМ. Можно создавать несколько нод-групп с разными шаблонами/размерами и специальными именами для решения разных задач. Например, можно создать группу узлов на базе высокопроизводительных ВМ для размещения ресурсоемких контейнеров.   Как добавить нод-группу Кластеры старых версий (1.15.3 и ниже) не поддерживаются, а также не […]

Нод-группы

Описание Узел (node) — это отдельная виртуальная или физическая машина, на которой развернуты и выполняются контейнеры приложений. Каждый узел в кластере содержит сервисы для запуска приложений в контейнерах (например Docker) и компоненты, которые обеспечивают централизованное управления узлом. Группа узлов (Node Group) — это множество нод с общим шаблоном (размером) ВМ. Можно создавать несколько нод-групп с […]

Удаление кластера

Операция удаления не будет выполнена, если кластер будет находиться в отключенном состоянии.   В Панели Linx Cloud Чтобы удалить кластер через, нужно зайти в раздел «Контейнеры» и в контекстном меню нужного кластера нажать на «Удалить кластер».   При помощи Terraform Команда terraform destroy удаляет ресурсы из конфигурации Terraform, она обратна команде terraform apply, т.к. удаляет все […]

Обновление версии кластера

Рекомендуем перед тем, как приступить к обнолвению кластера, сохранить важные данные и приложения, выполнить резервное копирование и выполнить обновления на копиях кластера, чтобы предотвратить возможные проблемы и потери данных. Установить более старую версию кластера нельзя, его можно обновить только на более новую. Если обновить кластер до версии Kubernetes 1.23 и выше с неотключаемой технологией SSO, […]

Мониторинг с помощью Prometheus

Описание Kubernetes Dashboard показывает данные мониторинга как Node-узлов, так и каждого индивидуального Pod благодаря встроенным средства мониторинга на базе Heapster, time-series базы данных InfluxDB и Grafana. Расширенный мониторинг инфраструктуры Kubernetes и всех пользовательских приложений можно настроить при помощьи Grafana. Каждый Pod, который задеплоен в кластер Kubernetes, будет автоматически зарегистрирован в Grafana. Кроме того, через Grafana […]

Как создать кластер Kubernetes

Описание При развёртывании Kubernetes вы имеете дело с кластером. Кластер Kubernetes — это набор машин, так называемые узлы (node’s), которые запускают контейнеризированные приложения. Кластер должен иметь как минимум один рабочий узел. На рабочих узлах размещены поды (pod’s), являющиеся компонентами приложения. Внутренние сервисы Kubernetes управляют рабочими узлами и подами в кластере. В промышленных управляющие сервисы обычно […]

История версий Kubernetes

Kubernetes 1.22.6 Что изменилось в сервисе Kubernetes aaS? Версия 9 операционной системы AlmaLinux используется на узлах кластера. Автоматически настроен limit range для пространств имен (namespace). Что изменилось в Kubernetes? Появилась новая версия формата конфигурации для kubeadm: v1beta3. Компонент PodSecurityPolicy заменен на alpha-версию PodSecurity. Новая функция Generic data populators для постоянных томов (Persistent Volumes), определенная статусом alpha. Компонент Memory Manager переведен в […]

Политика поддержки версий Kubernetes

Как правило Kubernetes aaS от Linx Cloud новые версии добавляются через 1 месяц после официального релиза. Сейчас доступны следующие версии: 1.23.6 1.22.6 1.21.4 1.20.4 Создавая новый кластер, выбирайте последнюю доступную версию Kubernetes, следует по возможности всегда обновлять кластер до последней доступной версии. Для кластеров, созданных на версии Kubernetes, которая более не поддерживается, мы не можем гарантировать корректную […]

Сетевое взаимодействие

Сетевая модель Kubernetes Для сетевой реализации модели Kubernetes должны быть соблюдены некоторые требования: каждый модуль может взаимодействовать с любыми другими модулями без использования трансляции сетевых адресов (NAT). IP-адрес, который Pod видит в себе, идентичен тому, который видят другие. все узлы могут связываться со всеми модулями без NAT. Так остаются следующие сетевые проблемы взаимодействия, требующие решения: […]

Работа с Persistent Volumes

Общее описание Persistent Volumes (PV) подходят для постоянного хранения данных подами, такие данные переживут перезапуск пода. Persitent Volume Claim (PVC) — это запрос на выделение Persistent Volume. В результате должен быть выделен как существующий Persistent Volume, так и создан новый. В Linx Cloud можно использовать PV как блочные, так и файловые хранилища, которые доступны в […]

Организация доступа к приложению в Kubernetes

Способы доступа к сервисам внутри кластера есть в официальной документации. С помощью Linx Cloud можно обеспечить доступ к сервисам любым из этих способов: NodePort Открывается порт на worker-узле. Ограничение: Изначально, в целях безопасности, при создании кластера Kubernetes публичные IP-адреса не установливаются автоматически на master-узлах и worker-узлах. Пользователь может самостоятельно назначить IP-адреса узлам по завершении создания […]

Базовые конфигурации

Для создания виртуальных машин в проекте доступны несколько групп их конфигураций (флейворов): Название Параметры конфигураций Описание Basic До 2 vCPU До 4 GB RAM базовая группа, содержащая конфигурации ВМ с невысокой производительностью Standard От 2 до 4 vCPU От 4 GB до 16 GB RAM группа с повышенным количеством CPU и объемом RAM Advanced От […]

Нагрузка и условия комфортной работы с кластерами Kubernetes

Следует соблюдать следующей архитектуру и стратегию нагрузки на кластеры для комфортной работы с кластерами Kubernetes: Характеристика Рекомендуемые значения Количество CPU На 5-10% больше, чем расчетное количество для пиковой нагрузки Количество оперативной памяти На 20% больше, чем расчетный объем для пиковой нагрузки Объём жёсткого диска На 10% больше, чем планируемый объем хранения данных Тип жёсткого диска […]

Управление доступом к кластерам Kubernetes

Данная статья подходит для кластеров Kubernetes версии 1.23 и выше. Если версия кластера более ранняя, то ее можно обновить, чтобы использовать такие же возможности. Управлять доступом к кластерам Kubernetes в Linx Cloud можно на уровне отдельных проектов в личном кабинете, т. е. управление зависит от роли, назначенной пользователю в личном кабинете Linx Cloud, и нет […]

Архитектура сервиса kubernetes от Linx Cloud Services

Как устроен Kubernetes as a Service на платформе Linx Cloud Работа с Kubernetes aaS в Linx Cloud — это: Удобная панель управления для выполнения операций над кластерами, включая их создание. Добавление или удаление нод (Cluster Autoscaler), иными словами возможность автоматического масштабирования узлов кластера. Возможность мониторинга сервисов и самого кластера на основе Prometheus Operator и Grafana. […]

Kubernetes dashboard

Описание С помощью Kubernetes Dashboard (веб-интерфейса для кластеров) пользователи могут управлять приложениями кластера и им самим. Подключение Версия kubectl >v1.23 Для доступа к Kubernetes Dashboard кластера необходимо получить Secret: При помощи интерфейса Linx Cloud: в меню нужного кластера выберите пункт «Получить Secret для входа в Kubernetes dashboard». При помощи помощью kubectl: выполните команду и скопируйте […]

Подключение к кластеру

Описание kubectl — это инструмент командной строки Kubernetes для запуска команд в кластерах Kubernetes: развертывание приложений, управление ресурсами кластера, просмотр логов. Весь список команд, запускающихся при помощи kubectl, можно посмотреть в официальной документации. Если используется версия kubectl v1.23 и выше, то при подключении нужно ввести пароль. Для автоматического ввода пароля необходимо ввести его в файле […]

Создание кластера Kubernetes

Описание Кластер Kubernetes — набор машин, другими словами узлов (node’s), запускающие контейнеризированные приложения. Управление внутренними сервисами Kubernetes происходит через рабочие узлы и поды в кластере. Поды (pod’s) — это компоненты приложения, располагающиеся на рабочих узлах  В промышленных средах сервисы управления рекомендуется запускать на нескольких компьютерах, а кластер развертывать на нескольких узлах, это будет гарантировать отказоустойчивость […]

Что вас интересует?
остались вопросы?

Закажите консультацию специалиста

заказать тест-драйв
Получить демо-доступ

Спасибо за ваш запрос, мы свяжемся с вами в ближайшее время!