Kubernetes обработчики жизненного цикла

Делятся на:  предстартовые постстартовые Могут выполнять: HTTP GET Команду внутри контейнера Постстартовый Выполняется сразу после запуска контейнера и используется для выполнения дополнительных команд при запуске приложения, если мы не можем или не хотим влиять на приложение. Пока обработчик не завершится, контейнер будет в состоянии Waiting с причиной ContainterCreating, а статус пода будет Pending. Если обработчик […]

Read More &#8594

Kubernetes init контейнеры в подах

Для того чтобы не пытаться запустить например web сервер, до того как запустится база, надо в поде web создать init контайнер, который будет проверять доступна ли база и как только база будет доступна, будет запущен web сервер apiVersion: v1 kind: Pod metadata: name: fortune-client spec: initContainers: — name: init image: busybox command: — sh — […]

Read More &#8594

Kubernetes сходство и антисходство модулей

Необходимо например когда frontend и backend должны быть рядом, для увеличения производительности Использование межмодульного сходства для развертывания подов на одном узле kubectl run backend -l app=backend —image busybox — sleep 999999 И создадим модули фронтенда, опираясь на метку app=backend apiVersion: extensions/v1beta1 kind: Deployment metadata: name: frontend spec: replicas: 5 template: metadata: labels: app: frontend spec: […]

Read More &#8594

Kubernetes приоритет узлов для подов

Цель, мы имеем 2 зоны в разных ДЦ и внутри каждой зоны 1 сервер для своих нужд и второй для партнёров Для начала надо сделать разметку узлов $ kubectl label node node1.k8s availability-zone=zone1 node «node1.k8s» labeled $ kubectl label node node1.k8s share-type=dedicated node «node1.k8s» labeled $ kubectl label node node2.k8s availability-zone=zone2 node «node2.k8s» labeled $ […]

Read More &#8594

Kubernetes разрешение узлов для подов

Каждый узел имеет метки, чтобы их просмотреть kubectl describe node gke-kubia-default-pool-db274c5a-mjnf Например последние 3 метки, это зона, регион и имя узла, их можно использовать в поде для выбора узла Указание жестких правил сходства узлов Можно использовать селекто меток, но можно использовать правило сходства узлов apiVersion: v1 kind: Pod metadata: name: kubia-gpu spec: affinity: nodeAffinity: requeredDuringSchedulingIngnoredDuringEcecution: […]

Read More &#8594

Kubernetes запрет узлов для подов

У каждой ноды есть ограничения, например по умолчанию главному узлу кластера не могут быть назначены не системные поды, он имеет ограничение NoSchedule У каждого пода есть допущения, например под kube-proxy имеет допущение NoSchedule, и может быть назначен master ноде в кластере С каждым ограничением связано его проявление: Noschedule — модули не будут назначаться узлу, если […]

Read More &#8594

Kubernetes масштабирование нод в кластере

kubectl cordon узел — пометит узел как не назначенный, но ничего не будет делать с подами на этом узле kubectl drain узел — помечает узел как не назначенный, а потом вытесняет поды kubectl uncordon — разблокирует узел и поды будут снова назначаться узлам В основном применяется для облачной инфраструктуры. Ноды будут добавляться по мере необходимости […]

Read More &#8594

Kubernetes автомасштабирование на основе custom metric

При выборе объекта HorizontalPodAutoscaling(HPA), можно выбрать три типа: Resource — запускает масштабирование на основе ресурсных запросов пода Pods — использует ссылки на любую другую метрику, относящуюся к поду. Например можно использовать QPS, сколько запросов получают все модули в поде. — spec: metrics: — type: Pods resource: metricName: qps targetAverageValue: 100 — Object — используется когда […]

Read More &#8594

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

Горизонтальное автомасштабирование модуля Автомасштабирование обеспечивается созданием ресурса HorizontalPodAutoscaler (HPA) — он применим для таких ресурсов как Deployment, ReplecaSet, ReplicationController, StatefulSet Он наблюдает за подами и метриками и меняет значение replicas Создадим Deployment: apiVersion: extensions/v1beta1 kind: Deployment metadata: name: kubia spec: replicas: 3 template: metadata: name: kubia labels: app: kubia spec: containers: — image: luksa/kubia:v1 name: […]

Read More &#8594