Kubernetes

  • OpenShift – сервисы поверх kubernates (напр. интеграция jenkins и другие плюшки для удобного управления/devops), платный от redhat, использует крупный enterprise, напр. сбер
Основное

Kubernates (k8s) – самый популярный инструмент/фреймворк управления/оркестрации контейнерами (docker, containerd; но так же может управлять и vm/baretal – значительно реже). Изначально разработан Google. В github находится как код k8s, так и в h4cker.org/github есть ресурсы для изучения и старта работы с k8s.

    • k8s позволяет автоматически скейлить pod’ы/контейнеры и ноды (хосты)
    • k8s позволяет мониторить контейнеры и осуществлять действия с упавшими – рестарт/редеплой
    • k8s позволяет через назначенные админом лейблы создать условия запуска pod/контейнеров только на определенных хостах/нодах (в терминологии k8s): напр. с определенными ресурсами или на нодах определенных availability zone равномерно/неравномерно (affinity/anti affinity) распределить pod’ы (для создания отказоустойвости и равномерной нагрузки)
    • k8s включает container management automation с extensive API.
    • k8s может быть развернут как через terraform, так и через UI
    • k8s гибкий – легко дорабатывается дополнительными возможностями, с использованием различных возможностей расширения k8s API (custom pod scheduling logic, on-demand provisioning).
    • Эта гибкость делает k8s отличной платформой для реализации SaaS сервисов.

Kubernetes – это популярная и мощная платформа для оркестрации контейнеров, которая предоставляет ряд значительных преимуществ:

  1. Автоматизация развертывания и управления контейнерами: Kubernetes предоставляет средства для автоматизации развертывания, масштабирования и управления контейнерами. Он позволяет управлять сотнями и даже тысячами контейнеров на кластере с минимальными усилиями.
  2. Масштабируемость: Kubernetes обеспечивает легкость масштабирования приложений. Вы можете легко увеличивать или уменьшать количество экземпляров вашего приложения в зависимости от нагрузки.
  3. Высокая доступность и отказоустойчивость: Kubernetes поддерживает высокую доступность приложений. Он автоматически переносит работу с узла на узел в случае сбоев и обеспечивает отказоустойчивость.
  4. Самоисцеляющиеся системы: Kubernetes умеет самостоятельно восстанавливать работоспособность приложений. Если узел выходит из строя, Kubernetes перезапускает приложения на других доступных узлах.
  5. Декларативная модель конфигурации: Kubernetes использует декларативную модель, что означает, что вы описываете желаемое состояние приложения, а Kubernetes автоматически приводит его в соответствие с этим состоянием. Это упрощает управление конфигурацией и обеспечивает консистентность.
  6. Распределенное хранилище конфигурации: Kubernetes имеет встроенное распределенное хранилище конфигурации (etcd), которое обеспечивает централизованное управление конфигурацией и служит источником правды для состояния кластера.
  7. Сетевая изоляция: Kubernetes предоставляет средства для изоляции сетевого трафика между приложениями и микросервисами, обеспечивая безопасность и устойчивость сети.
  8. Плагины и расширяемость: Kubernetes можно расширить с помощью плагинов и настраиваемых ресурсов. Это позволяет адаптировать платформу под различные потребности и интегрировать ее с различными инструментами и сервисами.
  9. Комьюнити и экосистема: Kubernetes имеет активное комьюнити и богатую экосистему, что означает наличие множества ресурсов, инструментов и поддержки для разработчиков и администраторов.
  10. Поддержка множества облачных платформ: Kubernetes поддерживает различные облачные платформы (AWS, Azure, Google Cloud и др.) и также может быть развернут на собственном оборудовании.
  11. Открытый исходный код: Kubernetes является проектом с открытым исходным кодом, что позволяет организациям свободно использовать, модифицировать и распространять его.

Эти преимущества делают Kubernetes мощной платформой для управления контейнерами и оркестрации приложений. Он позволяет организациям более эффективно использовать контейнеры и микросервисы, повышать отказоустойчивость, упрощать развертывание и управление приложениями, а также значительно ускорять разработку и доставку ПО.

 

 

pod management
  • Можно запустить pod “напрямую”, но на практике используют инструкцию deployment, чтобы он запускал pod. Это позволяет отслеживать состояние/количества pod instance и в случае расхождения его с реальным переподнимались instance, увеличивалось/уменьшалось количество контейнеров и проч management
https://stackoverflow.com/questions/41325087/what-is-the-difference-between-a-pod-and-a-deployment

type:deployment
type:pod
I would like to pitch in from my experience, you will almost never use an object with the kind pod, because that doesn't make any sense in practice.
You need to have the service object because the pods from the deployment object can be killed, scaled up and down, and you can't rely on their IP addresses because they will not be persistent.
  • В своем ядре k8s управляет размещением pods, которые могут состоять из одного или нескольких контейнеров на k8s cluster node.
  • В случае падения pod k8s может создать новый его инстанс. При удалении ноды кластера k8s может перенести affected workload на другую ноду кластера.
  • k8s pod может быть масштабирован для обеспечения большего или меньшего количества вычислительной мощности для задачи масштабирования. Причем масштабирование может произойти как автоматически, так и вручную (k8s horizontal pod auto-scaling).
  • В случае необходимости обновления приложения k8s может stagger the update deployment to minimize downtime. А в случае если апдейт является проблемным k8s может roll back to a previous version.
storage management
  • k8s persistent volumes могут быть использованы как хранилища данных для одного или множества контейнеров. Такая конфигурация позволяет контейнерам читать и писать данные приложений по многим pod instances.
  • Так же приложения, работающие в k8s могут использовать cloud-based storage, такие как Azure Storage, Azure Cosmos DB.
network management

k8s network plugins обеспечивают разные сетевые функции, например:

    • доступ pods в интернет
    • load balancing трафика по множествам репликам pod
    • network isolation
    • policy driven network security
    • management and name resolution между разными pods в k8s кластере

 

Leave a Reply