• DevOps
  • Защита информации
  • ИТ-поддержка
  • Управление кластером Kubernetes

    Kubernetes (K8s) - это открытое программное обеспечение для автоматизации развёртывания, масштабирования и управления контейнеризированными приложениями.

    Разберем из каких элементов состоит kubernetes кластер:

    1. Мастер k8s - это коллекция из трех процессов, которые выполняются на одном узле в вашем кластере, который обозначен как главный узел. Это процессы: kube-apiserver, kube-controller-manager и kube-scheduler.
    2. Каждый отдельный неосновной узел в вашем кластере выполняет два процесса:
      • kubelet взаимодействует с мастером Kubernetes.
      • kube-proxy - сетевой прокси, который обрабатывает сетевые сервисы Kubernetes на каждом узле.
      • среда выполнения контейнеров Docker, containerd, CRI-O

    Установка кластера зависит от выбранной архитектуры кластера и его размещения: On-Premises или Cloud Managed. В первом случае можно использовать kubespray или kops, во втором - утилиты, которые предоставляют облачные провайдеры.

    Для простоты будем использовать aws и для установки кластера напишем следующее описание:

    apiVersion: eksctl.io/v1alpha5
    kind: ClusterConfig
    
    metadata:
      name: test-cluster
      region: eu-west-1
      version: "1.17"
    
    nodeGroups:
      - name: NG-1-17
        instanceType: t3a.small
        desiredCapacity: 4
        #ami: ami-0b69a0b152acc27cf
        amiFamily: AmazonLinux2
        minSize: 2
        maxSize: 8
        volumeSize: 30
        ssh:
          allow: true # will use ~/.ssh/id_rsa.pub as the default ssh key
    

    Для создания кластера необходимы утилиты awscli и eksctl, которые доступны для всех типов ОС, а также активный аккаунт в aws.

    Применяем выбранные настройки командой:

    eksctl create cluster -f test-cluster.yaml

    Если все сделано правильно, у вас появится папка .kube, в которой будет находится описание для подключения к кластеру (токен, сертификаты, конекст и адрес подключения к кластеру).

    После успешного создания кластера, можно выполнить команду:

    kubectl get nodes

    Эта команда выведет информацию о нодах кластера.

    Для управления кластером необходимо обращаться к объектам API kubernetes, описывая состояние необходимых объектов. Объектами Kubernetes могут быть:

    • Pod
    • Service
    • Том
    • Namespace

    Kubernetes также содержит абстракции более высокого уровня, которые опираются на контроллеры для создания базовых объектов и предоставляют дополнительные функциональные и удобные функции. Они включают:

    • Deployment
    • DaemonSet
    • StatefulSet
    • ReplicaSet
    • Job

    Примером описания необходимого состояния объекта может быть следующий листинг кода:

    apiVersion: apps/v1 # до версии 1.9.0 нужно использовать apps/v1beta2
    kind: Deployment
    metadata:
      name: nginx-deployment
    spec:
      selector:
        matchLabels:
          app: nginx
      replicas: 2 # запускает 2 пода, созданных по шаблону
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.14.2
            ports:
            - containerPort: 80

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

    Примерно схожим образом выполняется управление и другими объектами кластера. Такой подход отлично вписывается в концепцию IaS - infrastructure as a code, когда сохранив в системе версионности все файлы конфигурации кластера, можно повторить его воссоздание на другой платформе в случае падения или разрушения кластера.

    Возможно, для решения ваших задач подойдет наш DevOps-аутсорсинг или Managed Kubernetes as a Service.

    Не нашли ответа на свой вопрос?
    • Есть ли услуги переноса кластеров с площадки на площадку?
    • Добрый день, да. Площадку можем также помочь выбрать.
    • Используете ли вы IAC для работы с инфрой?
    • Да, если говорить об использовании облачных провайдеров, предпочитаем использовать terraform, а если же речь идет о выделенных площадках - Ansible.
    • Вы единоразово внедряете управление кластером или предоставляете свой облачный продукт?
    • Добрый день, спасибо за Ваш вопрос. Мы можем внедрить Kubernetes как на нашем хостинге (в качестве продукта), так и единоразово On-premises или на любой другой площадке (managed), которую вы выберете.
    • У нас есть приложение, которое работает в Docker Swarm. У вас есть услуга по помощи миграции в Kubernetes?
    • Добрый день. Да, мы можем изучить Вашу текущую структуру. Подготовить и согласовать новую архитектуру для ваших проектов и выполнить переход Kubernetes.
    • Добрый день, у нас есть потребность миграции сервисов в FarGate, есть ли у вас специализация?
    • Добрый день, да, был опыт. Свяжитесь с нами удобным для Вас способом, мы обязательно поможем.
    • Скажите, можем ли мы у Вас арендовать закрытую среду для разработки? Gitlab + CI\CD + Kubernetes для разработки стартапа и его дальнейшего выхода на рынок?
    • Добрый день, да. Мы можем спланировать и реализовать On-premises структуру на наших ресурсах и предоставить Вам в пользование с обслуживанием.
    • Даете ли какую то свою вебку типа ранчера или подобную? Как происходит управление кластером кубика с моей стороны как клиента? Возьмем типовые задачи - создать, удалить, расширить, посмотреть логи. прикрепить хранилище и т.д
    • Добрый день, обычно, мы самостоятельно управляем, но да, k8s предполагает довольно гибкое распределение разрешений на выполняемые действия, поэтому доступ в кластер настраивается согласно ТЗ, в том числе, в ТЗ можно указать и gui для управления - дашборд или сторонние.
    • Сколько пользователей и сертификатов идет в рамках тарифа? К примеру, нам требуется сделать 4 роли для 17 человек. Это можно сделать в рамках тарифа?
    • Добрый день, ограничений по ролям нет.
    Содержание

    Есть вопросы?

    Закажите звонок специалиста!

    Есть вопросы?

    Закажите звонок специалиста!
    *нажимая на кнопку, Вы даете согласие на обработку персональных данных