Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Красочная расслабляющая игра в жанре маджонг - Накорми Попугая! Собирайте плитки с фруктами, набирайте очки, побеждайте!

Накорми Попугая

Аркады, Маджонг, Казуальные

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • SergeyKorsun SergeyKorsun 12 постов
  • SupportHuaport SupportHuaport 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

IT + Kubernetes

С этим тегом используют

Программирование IT юмор Программист Юмор Работа Картинка с текстом Разработка DevOps Все
29 постов сначала свежее
Stravnik
Stravnik
1 год назад

Основы Kubernetes для DevOps – K8s. Часть 1⁠⁠

Что такое Kubernetes?

K8s – это opensource проект разработанный Google на языке Go, изначально разрабатывался для своих же приложений. Первая версия вышла в 2014 году. Kubernetes предназначен для контейнеризированных приложений.

Прежде чем изучать Kubernetes я рекомендую ознакомиться с темой про Docker!

Основные «фишки» Kubernetes:

  • Автоматизация развертывания приложений

  • Автоматизация масштабирования приложений

  • Автоматизация управления приложениями

Из чего состоит K8s?

Основной компонент Kubernetes это Cluster.

Вы создаете Kubernetes Cluster состоящий из Nodes.

Nodes существуют двух типов:

  • Worker Node – сервер на котором запускаются и работают контейнеры.

  • Master Node – сервер который управляет Worker Nodes.

Когда вы запускаете команды управления, они всегда посылаются на Master Node. Напрямую с Worker Node вы не взаимодействуете.

Чуть подробнее про Nodes

На Kubernetes Master Node работают три главных процесса k8s:

  • kube-apiserver

  • kube-controller-manager

  • kube-scheduler

На Kubernetes Worker Node работают два главных процесса k8s:

  • kubelet

  • kube-proxy

Kubernetes Cluster

Обычно в Kubernetes кластере запущена одна Master нода (две и более нод используют для высокодоступных вариантов кластера) и одна Worker нода. Это самый минимальный набор для кластера.

Что может k8s и почему он популярен

  • Service discovery and load balancing. Вы запустили один Docker контейнер в k8s кластере. K8s дает вам доступ к этому Docker контейнеру через ip адрес, через определенный порт на любой Worker через определенный порт на любой Worker ноде или через DNS имя, также если вы запустили несколько копий вашего Docker контейнера, то k8s сделает load balancing между этими контейнерами.

  • Storage orchestration. Вы можете присоединить любой локальный диск или диск из AWS, GCP или Azure к одному или нескольким Docker контейнерам.

  • Automated rollouts and rollbacks. Автоматическое обновление на новую версию Docker Image или возврат на предыдущую версию.

  • Automatic bin packing. Вы создаете k8s кластер, где Kubernetes может запускать Docker контейнеры. Вы указываете сколько процессоров и оперативной памяти нужно каждой копии этих контейнеров, а k8s уже сам решит на каких Worker Node их лучше запускать.

  • Self-healing. Вы указываете сколько копий Docker контейнеров вам нужно и если с контейнером что-то произошло (завис, просто не отвечает и т.д.), то k8s это исправляет.

  • Secret and configuration management. K8s позволяет вам хранить «секреты», например пароли или любую секретную информацию все ваших приложений в Docker контейнере.

На этом тезисное знакомство с кубером можно считать законченным. В следующих заметках мы будем поднимать локальный k8s кластер, создавать Docker Images и еще раз пройдемся по основным понятиям k8s.

Обсудить эту заметку можно в нашем Телеграм канале: https://t.me/devops_spb_ru (@devops_spb_ru)

Показать полностью
[моё] Linux DevOps Kubernetes IT Текст
8
25
0sennijLis
0sennijLis
1 год назад
Лига Сисадминов

Разница между обратным прокси и ingress контроллером⁠⁠

Эта статья навеяна комментарием к предыдущей.

Разница между обратным прокси и ingress контроллером IT, Технологии, Linux, Kubernetes, Сети, Длиннопост

Обратный прокси

В предыдущей статье мы уже разбирали как работает обратный прокси, но повторение будет не лишним.

Обратный прокси можно в какой-то мере ассоциировать с старой телефонной станцией. Когда кто-то хочет воспользоваться телефоном, он сначала соединяется с коммутационным узлом, и общается с живым оператором, называя тому имя и адрес человека, которому нужно позвонить. После чего оператор соединяет звонящего с абонентом (при условии доступности второго).

Обратный прокси делает похожую работу, получая пользовательские запросы, и затем пересылая эти запросы на соответствующие сервера (как показано на картинке ниже).

Разница между обратным прокси и ingress контроллером IT, Технологии, Linux, Kubernetes, Сети, Длиннопост

У обратного прокси очень простая функция - он ставится перед приложением (или группой приложений), и служит посредником между пользователем и сервисом.

Как упомянуто выше, обратный прокси маршрутизирует пользовательские запросы на соответствующий сервер (при условии, конечно, что вы используете несколько серверов). На этом месте те, кто использует один сервер с одним экземпляром приложения, вполне справедливо зададутся вопросом, имеет ли вообще смысл внедрять обратный прокси-сервер. Ответ: да, смысл есть.
Обратный прокси будет полезен и в инсталляциях с одним сервером, за счёт предоставления таких своих преимуществ как: ограничение скорости, IP-фильтрация и контроль доступа, аутентификация, проверка запросов и кэширование.

Разница между обратным прокси и ingress контроллером IT, Технологии, Linux, Kubernetes, Сети, Длиннопост

Ingress контроллер

Если в двух словах, то в мире Kubernetes ingress контроллер является обратным прокси (кстати именно поэтому тот же Istio в прошлой статье был упомянут в контексте перечисления вариантов обратных прокси).

Он действует по принципу обратного прокси, маршрутизируя трафик из внешней сети к целевому сервису в пределах кластера Kubernetes, и позволяя вам настроить балансировщик нагрузки HTTP и HTTPS для кластера.

Чтобы лучше понять принцип работы, давайте сделаем шаг назад и попробуем разобраться, что такое Ingress.

Kubernetes Ingress - это объект API, задача которого определять как приходящий трафик из интернета будет направляться на внутренние сервисы кластера, которые затем в свою очередь будут отправлять запросы Pod'ам. Сам по себе Ingress не имеет влияния на систему, представляя собой просто набор правил для Ingress контроллера. Для проведения аналогии можно сравнить Ingress с автомобилем, у которого снят двигатель, а Ingress контроллер с самим двигателем, то есть при наличие Ingress ресурса, без установленного контроллера, работать ничего не будет.

Ingress контроллер принимает трафик снаружи Kubernetes платформы, и распределяет его по Pod'ам внутри платформы, таким образом накладывая еще один уровень абстракции на маршрутизацию трафика. Контроллеры Ingress преобразуют конфигурации из ресурсов Ingress в правила маршрутизации, распознаваемые и реализуемые обратными прокси-серверами.

Обычно Ingress контроллеры используются для предоставления доступа к множеству сервисов через единую точку входа (DNS-имя или IP-адрес).

В частности, входные контроллеры используются для:

  • предоставления нескольких служб под одним DNS-именем

  • реализации маршрутизации на основе пути, при которой разные URL-адреса сопоставляются с разными службами

  • реализации маршрутизации на основе хоста, при которой разные имена хостов сопоставляются с разными службами

  • реализации базовой аутентификации, или других методы контроля доступа для ваших приложений.

  • включения ограничения скорости для ваших приложения

Заключение

Если ingress контроллер делает практически ту же самую работу, что и обратный прокси (обрабатывает входящий трафик и перенаправляет на соответствующий сервер/сервис), то чем они отличаются?
Ingress контроллер - это частный случай прокси-сервера, предназначенный для работы в кластерах Kubernetes. Он находится не на границе инфраструктуры, а на границе кластера.

Показать полностью 1
IT Технологии Linux Kubernetes Сети Длиннопост
1
2
ritd
1 год назад

Перестал запускаться minikube⁠⁠

Доброго дня! Может кто уже сталкивался и как то решил. Зависает запуск minikube

Перестал запускаться minikube Kubernetes, Docker, IT, Программирование, Нужен совет
[моё] Kubernetes Docker IT Программирование Нужен совет
1
9
nekko
nekko
1 год назад
ДЕВОПСИНА

Мальчик VS Мужчина⁠⁠

Мальчик VS Мужчина Юмор, IT юмор, IT, Kubernetes, Картинка с текстом

Авторские IT мемы здесь: @devopsina

Показать полностью 1
[моё] Юмор IT юмор IT Kubernetes Картинка с текстом
5
6
gogobugogo
gogobugogo
1 год назад
Site Reliability Engineering
Серия SRE

Как создавать софт, как SRE⁠⁠

Перевод очень интересной статьи "How to Build Software like an SRE", в которой разбираются подходы к созданию приложений с точки зрения SRE.

Принципы надежности и компромиссы, усвоенные на собственном горьком опыте

Я занимаюсь этой “надежностью” уже некоторое время (около 5 лет), в компаниях, насчитывающих от 20 до более чем 2000 человек. Меня всегда в первую очередь всегда интересовали те элементы ПО, которые я описываю как живущие “вне” приложения — например, как приложение получает свою конфигурацию? На каких типах серверов оно запускается и являются ли эти типы наиболее подходящими? Что с ним происходит на пути от “кода в репозитории” до “запуска на проде”? И я всегда следил за тем, что мне нравится — какие механизмы позволяют быструю итерацию, а какие вызывают разочарование, какие приводят к сбоям, а какие предотвращают их.

Я думаю, что будет полезно, если я все это запишу, даже если это будет просто для меня в качестве справочника.

Обратите внимание, что этот список немного странный с точки зрения SRE. Моя цель не заключается в том, чтобы “построить все так, чтобы надежность была 100%”; это больше похоже на “как достичь 80% надежности, затратив 20% усилий, при этом позволяя разработчикам работать быстро”, что в конечном итоге дает нам систему, которая выглядит совсем по-другому. Но это стоит попробовать — если делать это хорошо, работа с продом становится интересной, а не уныло безопасной или ужасающе опасной.

Также, пожалуйста, сделайте мне одолжение и мысленно дополните каждый из следующих пунктов словом “обычно”. Каждая ситуация уникальна, и то, что я не сталкивался с тем, что (например) использование Git является плохой идеей, не означает, что такого случая не существует. “Только Ситхи всё возводят в абсолют”, и т.д.

Итак! Пройдя через всё это — вот как я бы начал все сначала, если бы мог.

Coding (параметры? да я их еле знаю!)

Никаких конфигов, зашитых в код. Если ваш сервис по какой-либо причине не может загрузить конфигурацию при запуске, он должен просто аварийно завершиться — этот случай гораздо проще диагностировать, чем результат того, что инстанс выполнил старый код, потому что никто не вспомнил о том, что нужно удалить строку config.get(enable_cool_new_thing, false).

Чрезвычайно строгие настройки RPC. Я говорю о нуле (или МОЖЕТ БЫТЬ одной) повторных попыток и таймауте, в 3 раза превышающем p⁹⁹. Здесь мы стремимся к предсказуемости, и многократные повторные попытки или длительные таймауты в качестве быстрого решения проблемы в работе сервиса превратятся в недельное расследование и головную боль через год. Исправьте неисправный сервис!

Никогда не отказывайтесь от локального тестирования. Это значительно сокращает время цикла разработки, чем необходимость полагаться (и возиться с этим) на CI или удаленные рабочие среды. Контейнеризация локальной тестовой среды может упростить управление зависимостями и обеспечить их переносимость между машинами.

Избегайте использования состояния как чумы. Управление сервисом с сохранением состояния (stateful) значительно сложнее, чем без сохранения состояния. Существует много хороших управляемых баз данных и кэшей, просто используйте один из них!

Merging (там, куда мы идем — тесты не нужны)

Используйте Git. Используйте его для всего — инфраструктуры, конфигов, кода, дашбордов, графиков дежурств. Ваш репозиторий Git — это источник истины, который можно восстановить на определенный момент времени.

Не тратьте время на полное покрытие кода тестами. И вообще, не занимайтесь “расстановкой галочек” — это только для красивых графиков и диаграмм, которые имеют очень мало общего с тем, какую фактическую ценность дает ваше изменение (см. ниже).

Уделяйте приоритетное внимание тестам в реальных условиях. Самый ценный тест, который занимает меньше всего времени, — это просто применение вашего изменения на стейджинге (или, еще лучше, на проде!) и демонстрация того, что оно делает то, что вы хотели, и не ломает всё. На втором месте по эффективности находятся интеграционные тесты, а юнит-тесты идут последними — то есть, “только если у вас есть на них время”.

При изменениях в инфраструктуре делайте планы максимально ясными и очевидными. Это может означать “положить Terraform Plan как коммент к пуллреквесту”, так же сделайте с diff helm. Существуют отличные инструменты, позволяющие убедиться, что изменения, которые, по вашему мнению, вы вносите, являются теми изменениями, которые вы вносите на самом деле, поэтому убедитесь, что они находятся в центре внимания.

При внесении изменений в код делайте регрессии максимально очевидными. Журналы ошибок, использование ЦП и частота ошибочных запросов являются отличными сигналами, позволяющими выявить около 90% плохих версий и работают для практически любого сервиса (полностью универсальны). Так что не отбрасывайте их!

Deploying (no sleep til prod)

Используйте Docker. Это отраслевой стандарт не просто так — разбор зависимостей в средах с такими инструментами, как Chef или Ansible, всегда проигрывает этой приятной автономности.

Развертывайте всё и всегда. Каждый день, который проходит без вашего деплоя, увеличивает вероятность того, что он на самом деле был незаметно сломан (в результате чьего-то изменения, обновления зависимостей, удаления стороннего API), и через две недели будет очень трудно выяснить, что и где пошло не так.

Проверяйте развертывания по мере их выполнения. Можете ли вы создать полностью поврежденный образ и успешно разлить его на все машины? Почему? Это можно исправить несколькими способами, включая canary/shadow развертывания или даже просто хорошими readiness проверками.

Включите ограничение на “мгновенное” развертывание конфигов. Это может показаться нелогичным (“мгновенное” часто означает “сломать все сразу и быстро”), но возможность отключить проблемную функцию или заблокировать IP менее чем за 5 минут с лихвой компенсирует повышенный риск. Это позволяет всё делать быстро, но управлять этим нужно осторожно!

Operating (my god, it’s full of pods)

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

Используйте Helm. Или какой-то другой инструмент для управления манифестами Kubernetes, я не привередлив — главное, чтобы вы никогда не использовали прямые команды kubectl apply, edit или delete. Жизненный цикл ресурсов должен быть доступен в системе контроля версий.

Избегайте операторов и CRD (Custom Resource Definition). Как уже упоминалось выше, я люблю Kubernetes, но для очень многих разработчиков он очень сложен, и пользовательские операторы резко уходят в область “Что это за херня?”, что создает ему сложную репутацию. Пусть все будет просто.

Запускайте по 3 экземпляра всего. Как и с резервными копиями, два экземпляра — это один, а один — не существует :) Кроме того, убедитесь (действительно проверьте на проде), что 2 из 3 “штук” могут справиться с полной нагрузкой самостоятельно — в противном случае у вас на самом деле нет такой устойчивости к сбоям, как вы думаете.

Структурированные логи — это неотъемлемая часть. Вместе с идентификаторами трассировки они позволяют вам пройти 90% пути к APM (application performance monitoring), но при гораздо меньших затратах и усилиях со стороны разработчиков.

Итак, это текущий список! Думаю, что буду периодически возвращаться сюда и добавлять что-то еще. Пожалуйста, не стесняйтесь обращаться ко мне, если что-то из этого особенно вас раздражает или если у вас есть ещё что-то, о чем бы вы хотели бы поговорить 😜

Показать полностью
[моё] Sre IT Kubernetes Docker Разработка Программирование Длиннопост Текст
0
9
pfsenses
pfsenses
1 год назад
Лига Сисадминов

Велосипеды - наше все...⁠⁠

Ну ок, раз снесли пост, процитирую выдержки из него здесь:

В прошлом посте я дал ссылку на статью на хабре. Решил поделиться здесь - потому что сама идея показалась мне забавной, плюс, местами были реализованы своеобразые решения:

Все началось с того, что нам понадобилась облачная платформа. Давайте посмотрим, какие задачи обычно решают облачные платформы. Если говорить совсем просто, то облако позволяет взять физические ресурсы ваших узлов (например, CPU, RAM или дисковое пространство) и нарезать из них виртуальные машины — по сути, виртуальные серверы, в которых будут запускаться те или иные рабочие нагрузки.

Казалось бы, нормальное решение, если бы они выбрали под свои нужды ту или иную облачную платформу, и реализовывали собтвенные хотелки на ней. Но, по видимому, это не путь джедая.

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

Вынесем за скобки то, что промышленные системы виртуализации, вроде той же vmware, имеют нативную поддержку кубера (vmware tanzu), и их использовать было бы более целесообразно. И даже опустим то, что запихнуть ВМ в контейнер целиком - крайне специфичное, нишевое решение.

Но некоторый реализованный функционал вызывает оторопь странными принятыми решениями, яркий пример которых ниже:

Велосипеды - наше все... IT, Kubernetes, Виртуализация, Habr, Дичь

Да, они определенными костылями добились того, что трафик идет только на один из них, но выглядит это настолько "надежно", что совать это в прод - я бы не рискнул.

А что думаете вы?

Показать полностью 1
IT Kubernetes Виртуализация Habr Дичь
6
DELETED
2 года назад

Памагите⁠⁠

Всем привет, пост без оценок.

Вопрос к знатокам и гуру кубернетеса. Пытаюсь разобраться в кубере и сталкиваюсь с некоторыми проблемами, например вопрос, я создал манифест файл с следующим содержанием:

apiVersion: apps/v1

kind: Deployment

metadata:

name: nginx-hello

labels:

app: nginx-hello

spec:

replicas: 1

selector:

matchLabels:

app: nginx-hello

template:

metadata:

labels:

app: nginx-hello

spec:

containers:

- name: nginx-hello

image: nginxdemos/hello

ports:

- containerPort: 80

---

apiVersion: v1

kind: Service

metadata:

name: nginx-app-service

spec:

type: NodePort

ports:

- port: 80

targetPort: 80

protocol: TCP

selector:

app: nginx-hello

в выводе команды kubectl get service получаю:

nginx-app-service NodePort 10.108.20.23 <none> 80:30438/TCP

Если кто знает, подскажите пожалуйста, почему кубер назначил мне порт 30438 по которому я могу достучатся до nginx из вне и могу ли я как то повлиять и назначить тот порт, который я сам хочу? Например хочу запустить в ноде какой нибудь контейнер и стучаться в него из внешней сети при наличии белого ip.

Прошу не кидаться какашками и не отправлять читать мануалы, но если хочется, то кидайтесь и отправляйте конечно)

ps: Если кто-то посоветует литературу или ресурсы по куберу для тупых, напишите пожалуйста.

Показать полностью
[моё] IT Kubernetes Linux Без рейтинга Текст
7

Продвиньте ваш пост

Перейти
Партнёрский материал Реклама
specials
specials

Нужно больше внимания к постам? Есть способ!⁠⁠

Иногда даже самый интересный материал теряется в потоке новых записей. Если ваш пост остался незамеченным, измените ситуацию. Для этого на Пикабу есть продвижение.

Все просто: оставьте заявку в форме, добавьте ссылку на пост и выберите подходящий бюджет. Все. Ваш пост покажут во всех лентах на специальных позициях. Ну а вы получите дополнительную аудиторию и отклик пользователей.

Продвинуть пост

Продвижение Посты на Пикабу Текст
Аноним
Аноним
2 года назад

Ищу ментора по Kubernetes⁠⁠

Посмотрел курсы от слерма на ютубе, в целом все понятно. Ищу ментора, который поможет запустить на локальном кубе который идет с докером приложение
https://meet.google.com/rup-ejri-ypa
В гугл мите буду около часа

[моё] IT Kubernetes Менторство Ментор Текст
2
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии