k8s-svc-endpoint-pic

K8s - Service, Endpoints

Ранее для доступа к нашему поду, мы через утилиту kubectl реализовывали проброс портов во внутрь пода. Эта история хоть и работает, но вообще не годиться для ежедневной эксплуатации. Так как состояние пода эфемерно, то есть под может сломаться или перезапуститься, изчезнуть или появиться на другой ноде. Соответствено, kubernetes назначает поду новый ip, и клиенты нашего приложения даже не догадываются об изменениях. В дополнение у нашего приложения может быть несколько его реплик. ...

December 15, 2022 · 5 min · 892 words · Tony
k8s-configmaps-schemes

K8s - ConfigMap, Secrets

ConfigMap В kubernetes есть объект ConfigMap, который хранит конфигурации для других объектов куба. ConfigMap может быть использован в случаях, когда мы хотим: Во внутрь контейнера прокинуть файл с конфигурацией для нашего приложения, через read-only volume; Добавить переменные окружения во внутрь контейнера; Передать в контейнер агрументы командной строки. Мы можем хранить любую информацию в манифесте конфигмапы (кроме паролей и etc..), в кластере создаем новый configmap-объект и описываем его конфигурацию, в поле data. Далее включаем объект в деплоймент, поле template: -> containers:. При запуске пода, кубернетес примонтирует конфигмап как volume. ...

December 8, 2022 · 9 min · 1794 words · Tony
rsyslog wall

Rsyslog basics

Rsyslog - это механизм/система обработки потоковых сообщений. Тогда, сообщения журнала (логи) можно представить как поток событий. Программы, которые известны syslog, заносят свои логи в специальный файл /dev/log (сокет домена). Далее журнальные сообщения (лог-события) обрабатываются фильтрами и пересылаются по адресу назначения. В Rsyslog каждый из этих этапов может быть сконфигурирован и дополнен модулям. Настройки службы rsyslog хранятся в файле - /etc/rsyslog.conf. Конфигурация rsyslog Строки конфигурации системы rsyslog обрабатываются по умолчанию сверху вниз, порядок расположения директив имеет значение. В верхней части описываются глобальные настройки, которые применяются на сам rsyslog демон. В глобальных настроках указываются - загружаемые модули (Modules), формат сообщений, права собствености и разрешения на файлы, рабочий каталог. Фильтры (селекторы) составляют основную часть конфигурации, ими rsyslogd определяет как сортировать и обрабатывать сообщения. Фильтры формируются из выражений, в которых описаны критерии и действия. Давайте разберем каждый из разделов, что бы понимать как готовить rsyslog. ...

December 5, 2022 · 7 min · 1478 words · Tony
k8s-probes-resources

K8s - Probes, Resources

В этом посте хотелось бы поделиться заметками относительно использования Probe в кубернетес. И предоставить понимание того, на чем строиться ресурс менеджмент - реквесты и лимиты, QoS-классы. Probes В kubernetes реализован механизм проверки доступности нашего приложения. Существую 3 типа проверок: Liveness Probe - выполняет контроль за состоянием приложения в процессе его жизни. Liveness проверки выполняются постоянно. В случаи, если выполнение liveness пробы завершилось с результатом - failed, то kubernetes перезапустил приложение (под). Readiness Probe - выполняют проверки за состоянием контейнеров, для того что бы понять готов ли под принимать клиентский трафик. В случаи неудачного выполнения readiness проды, приложение убирается из балансировки. Так же как и с liveness, readiness пробы выполняются постоянно, с некой переодичностью. Startup Probe - с помошью startup пробы мы можем проверить, что наше приложение действительно проинициализировалось и готово принимать принимать запросы. Startup проба выполняется только до последнего успешного выполнения, после чего разблокирует выполнение других проб (liveness и readiness). Такой механизм может быть полезен, когда наш контейнер долго запускается, и чтобы избежать преждевременного убийства контейнера другими пробами они блокируются. Теперь напишем деплоймент, и будем разбираться с настройками проб. apiVersion: apps/v1 kind: Deployment metadata: name: deployment-with-probes spec: replicas: 2 selector: matchLabels: app: my-app strategy: rollingUpdate: maxSurge: 1 maxUnavailable: 1 type: RollingUpdate template: metadata: labels: app: my-app spec: containers: - image: nginx:1.12 name: nginx-web ports: - containerPort: 80 readinessProbe: failureThreshold: 3 httpGet: path: / port: 80 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 livenessProbe: failureThreshold: 3 httpGet: path: / port: 80 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 initialDelaySeconds: 10 startupProbe: httpGet: path: / port: 80 failureThreshold: 30 periodSeconds: 10 Пробы указываются в контексте - containers. И могу быть сконфигурированы полями: ...

December 3, 2022 · 5 min · 981 words · Tony
components-wall

K8s - Pod, ReplicaSet, Deployment

Pod Это группа состоящая из одного или несколько контейнеров размещенная в одной сетевом неймспейсе, и имеющая общий том. Pod - базовый строительный блок в k8s. Исходя из здравого смысла, принято запускать 1 процесс на 1 контейнер. Но существуют такие кейсы, что для поддержания корректной работы нашего основного приложения нужен дополнительный процесс. Допустим наше приложение не может обрабатывать изменения в файле, и нам нужно добавить какой-либо механизм автоматического перезапуска нашего контейнера. Что бы не нарушать не гласное правило: 1 Процесс - 1 Контейнер, мы рядом запускаем дополнительный контейнер. И избегаем проблем связанных с работой контейнера, например когда один процесс умер а другой живет и вроде бы все в порядке, но приложение не работает. Так же оба процесса будут делать вывод в стандартный stdout, что тоже привидет к не понимаю того, что происходит. ...

December 1, 2022 · 11 min · 2144 words · Tony

Обо мне..

Привет всем, кто это когда либо увидет. Меня зовут Тони, и я работаю системным администратором. Занимаюсь разными инфраструктурными штуками, и мне это нравится. Так получилось, что меня покорил linux. Поэтому сайт будет посвящен около этой тематике, ну и наработкам из моей сисадминской жизни. В дополнение, на данном этапе развиваюсь и решаю задачи на проектах, связанных с devops-практиками. Активно осваиваю эксплуатацию и построение kubernetes кластеров. Моя цель, привести в порядок знания накопленные в процессе работы, структурировать их. Ну и научиться писать правильно и креативно =) ...

November 30, 2022 · 1 min · 84 words · Tony

Minikube - установка и настройка

В этом гайде установим и настроим minikube (однонодовый кластер), для использования в своих домашних экспериментов над кубом. У меня на данный момент установлен ArchLinux, поэтому все командные инструкции будут применимы только к этой системе. В качестве исполняемой среды, я использую libvirt, предварительно нужно установить его, или использовать VirtualBox. Установка Minikube В Arch, minikube ставится достаточно просто из под стандартного пакетного менеджера - pacman: $ pacman -S minikube После установки нужно проинициализировать и запустить наш mini-кластер: ...

November 27, 2022 · 4 min · 705 words · Tony