Архив метки: Kubernetes

Kubernetes: PersistentVolume и PersistentVolumeClaim — обзор и примеры

31 июля 2020
 

 Для работы с дисками для данных, которые должны храниться постоянно, Kubenetes предоставляет два типа ресурсов — PersistentVolume и PersistentVolumeClaim. PersistentVolume — непосредственно система хранения, раздел на жёстком диске, например AWS EBS, подключенном к одному из AWS EC2, и с точки зрения этого кластера является таким же ресурсом как, например, Kubernetes Worker Node. PersistentVolumeClaim — запрос… Читать далее »

Kubernetes: перезапустить Cron Job вручную

27 июля 2020
 

 Имеется Cron Job, которая при последнем выполнении сфейлилась. Найдём причину ошибки, а зачем перезапустим задачу вручную. Проверяем имеющиеся задачи: Проверяем поды крон-задач: Под 1595844000-jzhrl не запускается с ошибкой, проверяем состояние: Собственно, ошибка: Failed to pull image … Error response from daemon: pull access denied Не может загрузить образ из приватного репозитория, т.к. ему не задан… Читать далее »

Kubernetes: мониторинг кластера с Prometheus Operator

18 июня 2020
 

 В продолжение поста Kubernetes: мониторинг с Prometheus, в котором мы настроили мониторинг вручную, и более-менее разобрались с тем, как оно всё внутри работает — теперь попробуем прикрутить Prometheus Operator из Helm-репозитория. Напомню, задача — поднять Prometheus и все необходимые експортёры в AWS Elastic Kubernetes Cluster, и с него через /federation передавать метрики на наш «центровой»… Читать далее »

Kubernetes: 503 no endpoints available for service — причина и решение

15 июня 2020
 

 Имеется Redis, для которого создан Service типа ClusterIP. К этому Редису должны ходить поды этого неймспейса (Gorush). Проблема в том, что поды с Gorush подключиться к Redis по адресу gorush-server-redis-svc:6379 не могут — отваливаются с ошибкой «Can’t connect redis server: connection refused«: Проверяем наличие сервиса: Ошибка «no endpoints available for service» Попробуем подключиться к сервису… Читать далее »

Kubernetes: ClusterIP vs NodePort vs LoadBalancer, Services и Ingress — обзор, примеры

4 июня 2020
 

 Для сетевого взаимодействия Kubernetes предоставляет четыре типа Service-ресурсов — ClusterIP (дефолтный), NodePort, LoadBalancer и ExternalName, плюс ресурс Ingress. В этом посте разберём каждый из них, и попробуем их в работе. Документация по типам — Publishing Services (ServiceTypes). Рассматривается в основном AWS, потому учитываем, что сеть у нас — AWS VPC, балансировщики нагрузки — AWS ALB/CLB,… Читать далее »

Helm: helm-secrets — шифрование sensitive данных с AWS KMS и деплой из Jenkins

15 мая 2020
 

 В продолжение поста Helm: пошаговое создание чарта и деплоймента из Jenkins — теперь нам надо добавить шифрование данных, что бы не хранить пароли и различные приватные ключи в открытом виде в Github-репозиториях — даже пусть и приватных. Судя по гуглу, чуть ли не единственный вариант — это использование helm-secrets (а подскажите в комментариях — кто… Читать далее »

Helm: пошаговое создание чарта и деплоймента из Jenkins

14 мая 2020
 

 Продолжаем трогать Kubernetes и Helm. Сам Хельм в общих чертах рассмотрели в посте Helm: Kubernetes package manager — обзор, начало работы — теперь надо прикрутить его в Jenkins. И не просто прикрутить его вызов — а создать чарт, потому что сейчас приложение деплоится через «голые» манифест-файлы Kubernetes, в котором sed проставляет теги Докер-образа и значения переменных… Читать далее »

Helm: Kubernetes package manager — обзор, начало работы

3 мая 2020
 

 На официальной странице Helm называет сам себя «The package manager for Kubernetes«, но на деле Helm нечто большее, чем просто менеджер пакетов для Kubernetes — скорее это система управления приложениями в Kubernetes, позволяющая выполнять их установку, отслеживать состояние, выполнять обновление, удаление. В этом посте рассмотрим основные понятия и компоненты Helm, работу с чартами, шаблонами, переменными… Читать далее »

Kubernetes: kubectl и kubeconfig — обзор файла, добавление кластера, пользователя и контекста

14 апреля 2020
 

 Аутентификация в Kubernetes может отличаться методами аутентификации, пользователями, правилами кластеров: сам kubectl может использовать различные способы аутентифицаии — сертификаты, логин-пароль сами пользователи могут использовать различные способы — токены, логин-пароль и т.д. и, в конце-концов, мы можем захотеть хранить в настройках доступ к различным кластерам, но иметь возможность манипулировать ими из одного места Для всего этого… Читать далее »

AWS Elastic Kubernetes Service: RBAC-авторизация через AWS IAM и RBAC группы

12 апреля 2020
 

 Имеется два новых проекта в Elastic Kubernetes Service (см. AWS: Elastic Kubernetes Service — автоматизация создания кластера, часть 1 — CloudFormation), каждый проект живёт в отдельном своём namespace. Кроме того, имеется два пользователя, разработчика, которым надо дать доступ к этим двум пространствам имён, но только на поды в них и только на определённые read-only операции.… Читать далее »