Есть вопросы?
Закажите звонок специалиста!
Есть вопросы?
Закажите звонок специалиста!
Kubernetes (K8s) - это открытое программное обеспечение для автоматизации развёртывания, масштабирования и управления контейнеризированными приложениями.
Разберем из каких элементов состоит kubernetes кластер:
Установка кластера зависит от выбранной архитектуры кластера и его размещения: 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 могут быть:
Kubernetes также содержит абстракции более высокого уровня, которые опираются на контроллеры для создания базовых объектов и предоставляют дополнительные функциональные и удобные функции. Они включают:
Примером описания необходимого состояния объекта может быть следующий листинг кода:
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.