Рубрики
Uncategorized

Kubernetes вручитель

Kubernetes отмечает, что мне удалось подготовиться в течение нескольких лет работы с Куберанетами. Помечено с Кубернетами, докером, ссылкой, CICD.

Это некоторые из него в руках, которые я подготовил в течение нескольких лет, работающих с Куберанетами. Многие из них, как правило, не известны хорошо, если человек не вырыл глубоко в официальных документах Kubernetes.

Они без конкретного порядка, и предназначены для использования в качестве примечаний для быстрой и сравнительно подробной ссылки на Kubernetes.

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

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

Ресурсы покрыты:

  1. Подвигание
  2. Реплиссеты
  3. Контроллер
  4. Основные компоненты
  5. Компоненты узла
  6. Объекты
  7. UID’s.
  8. Пространства имен
  9. Услуги
  10. Ярлыки
  11. Маркирные селекторы
  12. Полевые селекторы
  13. Аннотации
  14. Управление объектом
  15. Init Containers.
  16. Секретный генератор
  17. Стойкие объемы (PV) и постоянные тома утверждают (ПВХ)
  18. Проходность
  19. Проход контроллера
  20. Открытие услуг
  21. Конечная точка
  22. Kube Proxy
  23. Kube DNS.
  24. Etcd.

Подвигание

  1. Каждый POD в кластере Kubernetes имеет уникальный IP-адрес, даже на одном узле.
  2. Каждый контейнер в POD разделяет пространство имен сети, включая IP-адрес и сетевые порты.
  3. По умолчанию Docker использует Host-Private Networking, поэтому контейнеры могут говорить с другими контейнерами, только если они находятся на одной машине.
  4. Контейнеры внутри стручка могут общаться друг с другом, используя localhost, и все стручки в кластере могут видеть друг друга без NAT.
  5. Все контейнеры в POD могут получить доступ к общим объемам, позволяя этим контейнерам обмениваться данными.
  6. Хотя каждый POD имеет уникальный IP-адрес, эти IPS не подвергаются воздействию за пределами кластера без службы. Услуги позволяют вашим приложениям получать трафик Отказ

Реплиссеты

  1. Масштабирование достигается путем изменения количества реплик в развертывании
  2. A Реплиз Может ли динамически управлять кластером обратно в желаемое состояние через создание новых стручков, чтобы принести приложение запустить
  3. Kubernetes также поддерживает автоскализацию стручков, но оно за пределами объема этой статьи. Масштабирование до нуля также возможно, и он прекращает все стручки указанного развертывания.
  4. Государства в реплиссете Кубебени
    • 1. Желаемый : Настроен номер реплик
    • 2. Текущий : Покажите, сколько реплик работает сейчас
    • 3. Современное : Количество реплик, которые были обновлены, чтобы соответствовать желаемому (настроенному) состоянию
    • 4. ДОСТУПНЫЙ : Показывает, сколько реплик на самом деле доступно пользователям
  5. Обновления в Kubernetes версии версии и любой Обновление развертывания может быть возвращен до предыдущей (стабильной) версии.

Контроллер

  1. А контроллер обрабатывает все аспекты управления POD, включая, но не ограничиваясьми, созданием, планированием, репликацией и заживлением стручков.

Kubernetes Master Components

  1. Kube-Apisiserver : Раскрывает API Kubernetes. Он предназначен для масштаба горизонтально
  2. etcd : Последовательный и высокодоступный магазин значений ключей, используемый в качестве сохраненного хранилища Kubernetes для всех данных кластера. Всегда имейте план резервного копирования для данных ETCD для вашего кластера Kubernetes.
  3. Kube-планировщик : Расписаны вновь созданные стручки для запуска узлов на основе индивидуальных и коллективных требований к ресурсам, аппаратному/программному обеспечению/политическим ограничениям, аффинными и антифазным спецификациям, местности данных, межрабатывающих помехах и сроках.
  4. Kube-Controller-Manager : Управляет контроллерами. Каждый контроллер включает в себя:

    • 1. Узел контроллер : Отвечает за замечение и реагирование, когда узлы снижаются.
    • 2. Контроллер репликации : Отвечает за поддержание правильного количества стручков для каждого объекта контроллера репликации в системе.
    • 3. Контроллер конечных точек : Заполняет объект конечных точек (то есть объединяет Services & Pods).
    • 4. Услуги службы и контроллеры токена : Создайте учетные записи по умолчанию и токены доступа API для новых пространств имен.
  5. Менеджер контроллера облака : управляет контроллерами, которые взаимодействуют с базовыми облачными поставщиками. Двоичный менеджер облака-контроллера представляет собой альфа-функцию, представленную в выпуске Kubernetes 1.6. Следующие контроллеры имеют зависимости облачных провайдеров:

    • 1. Узел контроллер : Для проверки поставщика облака, чтобы определить, был ли узел удален в облаке после того, как он останавливает ответ
    • 2. Маршрут контроллер : Для настройки маршрутов в базовой облачной инфраструктуре
    • 3. Контроллер обслуживания : Для создания, обновления и удаления балансировщиков нагрузки облака
    • 4. Контроллер громкости : Для создания, прикрепления и монтажных объемов и взаимодействия с облачным провайдером к объемам оргастрата

Компоненты узла Kubernetes

  1. Кублет : Агент, который запускается на каждом узле в кластере. Это гарантирует, что контейнеры работают в POD. Это не управляется контейнерами, которые не были созданы Kubernetes.
  2. Контейнерное время выполнения
  3. Аддоны : Обеспечивает функции кластера
  4. DNS : DNS-сервер. Служит DNS Records для услуг Kubernetes. Контейнеры, созданные Kubernetes, автоматически включают этот DNS-сервер в их поисках DNS.
  5. Web UI
  6. Мониторинг ресурсов контейнера
  7. Регистрация кластера

Кубернаные предметы

  1. Они стойкие сущности в системе Куберанес. Kubernetes использует эти объекты для представления состояния вашего кластера.
  2. Создавая объект, вы эффективно рассказываете систему Kubernetes, что вы хотите, чтобы рабочая нагрузка вашего кластера выглядит; Это желаемое состояние вашего кластера.
  3. Каждый объект Kubernetes включает в себя два вложенных поля объекта, которые управляют конфигурацией объекта: SPECT объекта и состояние объекта.
    • 1. Спец : Это описывает ваше желаемое состояние для объекта
    • 2. Статус : Он описывает фактическое состояние объекта и поставляется и обновляется системой Kubernetes.
  4. Обязательные поля в Спец объекта файл:

    • 1. авивение
    • 2. своего рода
    • 3. метаданные

      • 1. название : обязательный
      • 2. UID : Обязательно: предоставлена система
      • 3. пространство имен : по желанию
    • 4. спецификация
  5. Все объекты в API Kubernetes Read однозначно идентифицируются на Имя и а UID Отказ
  6. Имя это клиентская строка, которая относится к объекту в URL ресурса, например /API/V1/PODS/Некоторые имя Отказ Это становится dns_name?.
  7. Только один объект данного вида может иметь данное имя за раз. Однако, если вы удалите объект, вы можете сделать новый объект с тем же именем.

Kubernetes UID

  1. Они kubernetes Сгенерированные системы строки для однозначного идентификации объектов Отказ
  2. Каждый объект, созданный в течение всего срока службы кластера Kubernetes, имеет Отличный UID Отказ Предназначен для различения исторических вхождений подобных объектов.

Пространства имен

  1. Kubernetes поддерживает несколько виртуальных кластеров, поддерживаемых тем же физическим кластером. Эти виртуальные кластеры называются пространства имен Отказ
  2. Пространства имен предназначены для использования в средах со многими пользователями, распространяющимися по нескольким командам или проектам.
  3. Пространства имен обеспечивают объем для имен. Имена ресурсов должны быть уникальными в пространстве имен, но не через пространства имен Отказ
  4. Пространства имен не могут быть вложены внутри друг друга.
  5. Пространства имен по умолчанию:
    • 1. дефолт
    • 2. Kube-System : Для объектов, созданных системой Kubernetes
    • 3. Куба — Публикация : Читаемый всеми пользователями (включая те, которые не аутентифицированы).
  6. Если вы хотите добраться до услуг по пространствам имен, вам необходимо использовать полностью квалифицированное доменное имя (FQDN).
  7. Поведение по умолчанию Kubernetes — поиск сервиса в локальном пространстве имен. Сервис DNS-запись имеет форму: ..svc.Cluster.local Отказ
  8. Ресурсы пространства имен не сами в пространстве имен.
  9. Низкоуровневые ресурсы такие как узлы и Персистентные вол , есть не в любом пространстве имен.

Услуги

  1. А Сервис В Кубернане является абстракция, которая определяет логический набор стручков и политика, к которой их к ним. Услуги позволяют Свободная связь между зависимыми стручками Отказ
  2. Хотя каждый POD имеет уникальный IP-адрес, эти IPS не подвергаются воздействию за пределами кластера без службы. Услуги позволяют вашим приложениям получать трафик Отказ
  3. Сервис назначается уникальный IP-адрес (также называемый Clusterip).
  4. Этот адрес связан с продолжительностью службы и не изменится, пока служба жива
  5. Сервис поддерживается группой стручек, и эти стручки выставляются через конечные точки.
  6. Селектор службы будет оценен непрерывно, и результаты будут размещены на объект конечных точек
  7. Когда POD умирает, он автоматически удаляется с конечных точек, а новые стручки, соответствующие селектору услуг, будут автоматически добавлены к конечным точкам.
  8. Сервисный IP — полностью виртуальный , это никогда не попадает в проволоку.
  9. Услуги Kubernetes предоставляют стабильные, Виртуальный IP (VIP) адрес.
  10. Адрес виртуального IP (VIP) означает его не прикреплено к любому сетевому интерфейсу
  11. Цель VIP — пересылать трафик к стручкам
  12. Сохранение сопоставления между VIP и в современном стиле — это работа Kube-Proxy , процесс, который запускается на каждом узле, который запрашивает сервер API, чтобы узнать о новых услугах в кластере.
  13. Цель для обслуживания может не обязательно быть подводом Отказ Это может быть внешний кластерный компонент, компонент в каком-то другом пространстве имен, компонента некубетников. Просто определите ваш сервис без атрибута селектора.
  14. Без атрибута селектора не создается объект конечных точек.
  15. Для многопортных услуг (Услуги, которые выставляют более одного порта), вы должны дать все ваши порты имен, чтобы конечные точки можно было отрицать
  16. Услуги могут быть выставлены по-разному, указав тип в ServicesPec :

    • 1. Clusterip (по умолчанию) — Раскрывает сервис на внутреннем IP в кластере. Этот тип делает услугу только доступной только из кластера.
    • 2. NodePort — Раскрывает службу в том же порту каждого выбранного узла в кластере, используя Nat. Делает услугу доступным из-за пределов кластера, используя : Отказ Это выступает в качестве сумерета Clusterip.
    • 3. LoadBalancer — Создает внешний балансировщик нагрузки в текущем облаке (если поддерживается) и назначает фиксированный внешний IP на службу. Это действует как суперсета для узлов.
    • 4. Внешнее имя — Раскрывает службу с использованием произвольного имени (указанное Externname в SPEC), возвращая запись CNAME с именем. Прокси не используется. Этот тип требует V1.7 или выше Kube-DNS.
    • 5. Подводя итоги, Внешнее имя => является суперсетом LoadBalancer => является суперсетом NodePort => является суперсетом Кластера
  17. Отличие B/W порта, целевойпортор и NodePort:
    • 1. Порт : Номер порта, который делает услугу, видимую для других услуг, запущенных в том же кластере
    • 2. Целевойпорт : Порт, на котором работает сервис
    • 3. NodePort : Порт, на котором можно получить услугу с Внешние пользователи Использование Kube-proxy.
  18. Сервисный маршрут трафика через набор стручков.
  19. Несколько заметок о NodePort Тип сервиса:

    • 1. Это не Предназначен для производственных сред. Использовать Погрузчик или Проход контроллера/ресурс за то же самое
    • 2. Нужно указать дополнительный атрибут NodePort на определение обслуживания
    • 3. Откроется указан (или автоматически выбран, если не указан) порт на каждом узле
    • 4. Вы можете только один раз услуг за порт
    • 5. Вы можете использовать только порты 30000-32767
    • 6. Если ваш узел/VM IP-адрес меняется, вам нужно иметь дело с этим
  20. Несколько заметок о LoadBalancer Тип сервиса:

    • 1. Лучший метод, чтобы разоблачить обслуживание на внешний мир, если ваш облачный провайдер поддерживает его
    • 2. Там нет фильтрации, нет маршрутизации и т. Д. Это означает, что вы можете отправить практически любой вид трафика к нему, например HTTP, TCP, UDP, Websockets, GRPC или что-то еще.
    • 3. Каждая услуга выставлена с LoadBalancer Получите свой собственный IP-адрес, и вы должны заплатить за несущественную услугу, что может стать дорогим.
  21. Использовать Extertrips В Service Spec для установки IP-адреса в качестве цели сервиса. Это может быть вне кластера
  22. Услуги имеют интегрированный балансировщик нагрузки, который будет распространять сетевой трафик во всех стручках открытого развертывания. Услуги непрерывно контролируют бегущие стручки с помощью конечных точек, чтобы гарантировать, что трафик отправляется только на доступных стручков.
  23. Если вы хотите добраться до услуг по пространствам имен, вам необходимо использовать полностью квалифицированное доменное имя (FQDN).
  24. Поведение по умолчанию Kubernetes — поиск сервиса в локальном пространстве имен. Сервис DNS-запись имеет форму: . <имя пространства имен> .svc.cluster.local Отказ
  25. Kubernetes предлагает DNS Cluster Addon Service Это автоматически назначает имена DNS другим сервисам.
  26. Несколько заметок о Услуги без головы :

    • 1. Когда вам не нужно или хотите балансировку нагрузки и единую службу IP.
    • 2. Укажите Нет Как Clusterip ценность.
    • 3. Позволяет разработчикам уменьшить связь с системой Kubernetes, позволяя им свободу делать открытие их по-своему.
    • 4. Кластер IP не выделяется.
    • 5. Kube-Proxy не справляется с этими услугами.
    • 6. Там нет балансировки нагрузки или прокси, выполненное для них платформой.
    • 7. Если определяются селекторы, контроллер конечных точек создает записи конечных точек в API и изменяет конфигурацию DNS для возврата записей (адресов), которые указывают непосредственно на подвижную поддержку службы.
    • 8. Если селекторы не определены, нет конечные точки Объекты созданы. Но Cname Записи для Внешнее имя Тип сервисов создаются и записи для любого Конечные точки которые разделяют имя со службой для всех других типов.

Ярлыки

  1. Этикетки могут быть прикреплены к объектам при времени создания или позже. Кроме того, они могут быть изменены в любое время.
  2. Этикетки используются для указания идентификационных атрибутов объектов.
  3. Сегмент имени это Требуется и должно быть 63 символов или меньше Отказ
  4. префикс Должен быть субдомен DNS: серия меток DNS, разделенных точками (.), в общей сложности не длиннее 253 символов, а затем слешь (/).
  5. Этикетки используются для указания Определение атрибутов объектов . Не идентификация информации следует записать использование аннотации .
  6. Если префикс пропускается, клавиша метки предполагается частным для пользователя.
  7. Kubernetes.io/ и k8s.io/ Префиксы зарезервированы для основных компонентов Kubernetes.
  8. Допустимые значения метки должны составлять 63 символа или меньше. Они тоже могут быть пустыми.

Маркирные селекторы

  1. Клиент, или пользователь может идентифицировать набор объектов. селектор этикетки Является ли основной группировкой примитив в Кубейнетах.
  2. Следуя Типы селекторов этикеток поддерживаются: Равенство на основе и настроен на основе Отказ

    • 1. Селекторы на основе равенства:
    • 2. Установите на основе селекторов на основе этикетки:
  3. Селекторы на основе равенства:

    • 1. Операторы разрешены: ===,! =
      1. Они могут быть указаны как:
      • 1. Новая линия прекращена:
      • 2. Разделенные запятой:
  4. Установите на основе селекторов на основе этикетки:

    • 1. Операторы разрешены: В, Notin и существует (только ключевой идентификатор)
    • 2. Примеры:
  5. Настроен на основе Сборники этикеток могут быть смешаны с Равенство на основе селекторы. Пример: раздел (клиенты,

  6. Селекторы этикеток могут быть клубными вызовами API в качестве параметров запросов и командами KubectL для Фильтровать возвращенные результаты Отказ Примеры: раздел (клиенты,

  7. Сервис и РепликацияController не поддерживает Установите на основе селекторов на основе этикетки Отказ

  8. Новые ресурсы, такие как Работа , Развертывание , Реплика набор и Набор демона , поддержка набора на основе селекторов этикеток.

Полевые селекторы

  1. Они позволяют вам выбрать ресурсы Kubernetes на основе значения одного или нескольких полей ресурсов. Примеры:

  2. Поддерживаемые полевые селекторы варьируются в зависимости от типа ресурса Kubernetes.

  3. Все типы ресурсов поддерживают Metadata.name. и metadata.name Пространство поля.

  4. Использование неподдерживаемых полевых селекторов дает ошибку.

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

kubectl get statefulsets,services --field-selector=status.phase!=Running,spec.restartPolicy=Always

Аннотации

  1. Они хранят Неодификационные объектные данные Отказ Они не может использоваться для нацеления/выбора объектов на основе их значения (ы).
  2. метаданные В аннотации может быть небольшой или большой, структурированный или неструктурированный и может включать в себя символы, не разрешенные этикетками.
  3. Аннотации имеют тот же синтаксис как метки Отказ

Управление объектом Kubernetes

Ниже приведены 3 способа взаимодействия с объектами Kubernetes:

  1. Использование Императивные команды : Они работают на Живые предметы
  2. Использование Императивная конфигурация объекта : Они работают на Отдельные файлы
  3. Использование Декларативная конфигурация объекта : Они работают на Справочники файлов

Императивные команды

  1. Используется с Kubectl с именем ресурса в команде

Императивная конфигурация объекта

  1. Используется с kubectl с операцией (создать, заменить и т. Д.) и файл конфигурации одного объекта.
  2. Указанный файл Config Object должен содержать полное определение объекта в формате YAML или JSON.
  3. Несколько файлов также могут быть указаны. Пример:
kubectl delete -f nginx.yaml -f redis.yaml

Декларативная конфигурация объекта

  1. Работает на файлах конфигурации объекта, хранятся локально.
  2. Пользователь не определяет операции, которые необходимо предпринять на файлах.
  3. Операции создания, обновления и удаления автоматически обнаруживаются на объект kubectl.
  4. Использует патч Операция для сохранения изменений, сделанных другими писателями, при применении новых изменений ( Diffs только ).
  5. Чтобы увидеть, какие изменения будут сделаны, используйте:

  6. Чтобы применить изменения:

  7. Используйте флаг командной строки -R обрабатывать каталоги рекурсивно.

  8. Эти файлы известны как Configs Resource.

Init Containers.

  1. Они Специализированные контейнеры, которые запускаются перед приложенными контейнерами Отказ
  2. Они могут содержать утилиты или сценарии настройки, не присутствующие в изображении приложений.
  3. Они всегда бегают к завершению.
  4. Каждый должен успешно завершить до начала следующего.
  5. Пользовательские контейнеры Может быть указан как initcontainers Использование initcontainers поле podspec Отказ
  6. Почти точно так же, как обычные контейнеры во всех аспектах спецификации объект.
  7. Не поддерживает датчики готовности, поскольку они должны работать до завершения до того, как POD может быть готов.
  8. Они начинаются после Сеть и тома инициализированы.
  9. Изменения в Спецификация пониженного контейнера ограничены полевым полем контейнера.
  10. ActiveDeadlineseconds Применим на обоих типах контейнеров.
  11. Изменения изображения контейнера приложений перезагружают только контейнер приложений, а не контейнеры init. Для этого изображения пониженного контейнера необходимо изменить.

Секретный генератор: Kustomization.yaml

  1. Секрет — это объект, который хранит кусок чувствительных данных, таких как пароль или ключ.
  2. С 1,14 kubectl поддерживает управление объектами Kubernetes, используя файл Kustomization.
  3. Вы можете создать секрет генераторами в Kustomization.yaml Отказ

Стойкие объемы (PV) и постоянные тома утверждают (ПВХ)

  1. Использовать ReadWritemany И не Readwriteonce При использовании общего объема.
  2. Контроль доступа : GID (ID группы) Может быть назначен на созданный том для Ограничить доступ к определенным стручкам с той же GID.
  3. А PersistentVolume (PV) является частью хранения в кластере, который был вручен, который был вручен администратором или динамически предоставлен Kubernetes, используя StorageClass Отказ
  4. А PerstistentVolumeclaim (ПВХ) это запрос на хранение пользователем, который может быть выполнен Постоянный том Отказ
  5. Персистентности и персистентноумельки не зависят от жизненных циклов POD и сохраняют данные путем перезапуска, перенесения и даже удаления стручков.
  6. Многие кластерические среды имеют установленную StorageClass по умолчанию. Когда StorageClass не указан в PerstistentVolumeclaim, вместо этого используется StorageClass по умолчанию кластера.
  7. В локальных кластерах с классом хранения по умолчанию (HostPath) данные сохраняются в узле /TMP каталог. Следовательно, может быть потеряно на перезагрузке.

Тип объекта Cubernetes Secret

  1. Хранит кусок чувствительных данных, таких как пароль или ключ.

Днс

  1. Kubernetes предлагает DNS Cluster Addon Service Это автоматически назначает имена DNS другим сервисам.
  2. Чтобы проверить, работает ли то же самое на вашем кластере или нет, используйте следующее:
kubectl get services kube-dns --namespace=kube-system

Проходность

  1. Объект API, который управляет внешним доступом к услугам в кластере, как правило, HTTP.
  2. Ingress может обеспечить балансирование нагрузки, завершение SSL и виртуальный хостинг на основе нанесения.
  3. Вид как обратный прокси
  4. Принудитель может быть настроен для предоставления услуг извне, доступных извне URL-адресов, загрузка баланса трафика, завершайте SSL и предложите именем на основе виртуального хостинга.
  5. Вход не подвергается произвольным портам или протоколам. Выставление услуг, кроме HTTP и HTTPS в Интернет, обычно использует службу типа Услуга. Тип = NodePort. или Услуга. Тип = LoadBalancer .
  6. Вы должны иметь Контроллер входа удовлетворить вход. Только создание входного ресурса не имеет эффекта Отказ
  7. Обратите внимание, что не все контроллеры входа поддерживают полный спектр. Будьте осторожны во время выбора.
  8. Он поддерживает TLS.
  9. Поддерживает балансировку нагрузки. Несколько общих алгоритмов поддерживаются. Для других можно использовать сервис LoadBalancer.
  10. Проверки здоровья не подвергаются воздействию по умолчанию. Но можно использовать готовность зондов.
  11. Развертывание зон пересечения доступности могут быть сделаны, но зависит от поддержки облачного провайдера. Обратитесь Документация Федерации Подробнее о развертывании Вход в федеративном кластере Отказ
  12. Типы проникновения:
    • 1. Одиночный сервис вход : Разоблачить единое обслуживание. Нет сопоставления хоста и пути
    • 2. Образец велосипеда : Раскрывает несколько услуг с использованием сопоставления только на пути
    • 3. Наименование на основе виртуального хостинга : Использует сопоставления домена и пути
  13. По крайней мере, на GKE, вращается вверх по L7 слой HTTP Balancer, следовательно, не протокол Agnostic.
  14. Много доступных контроллеров входа: балансировщик Google Cloud Load, Nginx, Contour, ISTIO и многое другое.

Проход контроллера

  1. Контроллер входа слушает API Kubernetes для Входные ресурсы а затем обрабатывать запросы, которые соответствуют их.
  2. Можно технически любую систему, способную обратный прокси, но наиболее распространенным является Nginx.
  3. NGINX Controller нуждается в бэкенда. Другие контроллеры может Не нужен один.
  4. Вход без правил не отправляет весь трафик на единый бэкэнд по умолчанию.
  5. Бэкэнд по умолчанию, как правило, является опцией конфигурации контроллера входа и не указан в ваших входных ресурсах

Открытие услуг

Ниже приведены 2 способа, в которых может быть предоставлена открытие услуг:

  1. Использование переменных среды
  2. DNS (рекомендуется)

Переменные среды — для открытия услуг

  1. Kubelet обнаруживает переменные среды формы {svcname} {Umy_name}. Пример для службы Redis с помощью группы IP _10.0.0.11 :
REDIS_MASTER_SERVICE_HOST=10.0.0.11
REDIS_MASTER_SERVICE_PORT=6379
REDIS_MASTER_PORT=tcp://10.0.0.11:6379
REDIS_MASTER_PORT_6379_TCP=tcp://10.0.0.11:6379
REDIS_MASTER_PORT_6379_TCP_PROTO=tcp
REDIS_MASTER_PORT_6379_TCP_PORT=6379
REDIS_MASTER_PORT_6379_TCP_ADDR=10.0.0.11

DNS — для открытия услуг

  1. Это кластерное дополнение.
  2. DNS-сервер Следит за API Kubernetes Для нового Услуги и создает набор записей DNS для каждого.
  3. Для обслуживания мой-сервис в пространстве имен My-NS , запись DNS для my-service.my-ns создано.
  4. Не нужно указывать пространство имен, если стручки принадлежат к тому же.
  5. DNS-сервер Kubernetes — единственный способ доступа к услугам внешнего значения типа.

Конечная точка

  1. Конечная точка это Ориентированное объектно-ориентированное представление API api api Это заполнено на сервере API Kubernetes. Таким образом, конечная точка С точки зрения Kubernetes — это способ доступа к его ресурсу (например, POD) — ресурс за «конечной точкой».
  2. Содержит EndPointSubset множество.
  3. EndPointSubset это группа адресов с общим набором портов. Расширенный набор конечных точек — Декартовое произведение адресов х портов Отказ
  4. EndPointAddress EndPointSubset Май Не Будьте обратно (127.0.0.0/8), Link-Local (169.254.0.0/16) или Link-Local Multicast ((224.0.0.0/24).
  5. IPv6 Также принимается, но не полностью поддерживается на всех платформах.
  6. Селектор службы непрерывно оценивается, и результаты являются Опубликовано к объекту конечных точек
  7. Когда POD умирает, он автоматически удаляется с конечных точек, а новые стручки, соответствующие селектору услуг, автоматически добавляются в конечные точки.
  8. Конечные точки Отслеживайте IP-адреса объектов, чтобы отправить услугу.
  9. И конечная точка быть свободно в сочетании с обслуживанием, сохраняя имение службы и конечной точки же. Посмотреть https://kubernetes.io/docs/conepts/services-networking/service/#services-withous-selectors для большего.
  10. Не упомянутым атрибутом селектора (является сервисом), не создается объект конечных точек.

Kube Proxy

  1. Это специальный демон (приложение), работающий на каждом уземе работника.
  2. Может работать в двух режимах, настраиваемых с --Прокси-режим Выключатель командной строки:

    • 1. userspace.
    • 2. iptables.
  3. Для более высокой пропускной способности и лучшую задержку, используйте iptables Режим прокси.
  4. Не IPv6 готов.
  5. Поддерживает сетевые правила и выполняет переадресацию соединения.
  6. Это полезно для:
    • 1. Отладка ваших услуг или подключение к ним непосредственно с вашего ноутбука по какой-то причине
    • 2. Позволяет внутренний трафик, отображение внутренних приборных панелей и т. Д.

Kube DNS.

  1. Это позволяет получать доступ к услугам K8S, используя их имена напрямую, а не VIP: порт комбинация.
  2. Когда вы используете Kube-DNS, K8S впрыскивает Определенные настройки поиска имен на New Pods, которые позволяют запросить записи DNS в кластере.
  3. Kube-DNS создает Внутренняя кластер DNS-зона который используется для DNS и открытия услуг. Это означает, что мы можем получить доступ к службам изнутри стручек через имена служб напрямую. Пример:

  4. Вы можете использовать следующее, чтобы увидеть NODE DNS Config в качестве настройки Kube-DNS:

  5. Если служба создана в пространстве имен по умолчанию, его можно получить доступ с помощью Кластерное внутреннее DNS-имя , слишком:

Etcd.

  1. Это последовательный и высокодоступный магазин клавишных значений, используемый в качестве сохраненного хранилища Kubernetes для всех данных кластера.
  2. Убедитесь, что всегда есть план резервного копирования данных EtCD для ваших кластеров Kubernetes.
  3. Все данные сохраняются в и т. Д., как реестры. Пример:

  4. Следующая команда может использоваться для запроса данных в ETCD:

Вот и все, люди ¯ \ (ツ) /¯.

Оставьте мне письмо на контакт@nitinbansal.dev. или дм мне на твиттер Если у вас есть какие-либо предложения или необходимость помощи с разработкой программного обеспечения.

Кроме того, посетите мой блог https://nitinbansal.dev Если вам это нравится. У меня гораздо более полезный контент, планированный для добавления.

использованная литература

  1. https://kubernetes.io/docs/tutorials/kubernetes-basics/expose/expose-intro/
  2. https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands
  3. https://kubernetes.io/docs/tasks/access-application-cluster/communicate-containers-same-pod-shared-volume/
  4. https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/
  5. Примеры:
  6. https://stackoverflow.com/questions/54923806/why-do-i-get-unbound-immediate-persistentvolumeclaims-on-minikube
  7. https://kubernetes.io/docs/tutorials/stateful-application/mysql-wordpress-persistent-volume/
  8. https://github.com/containous/traefik
  9. https://blog.openshift.com/kubernetes-services-by-example/
  10. http://containerops.org/2017/01/30/kubernetes-services-and-ingress-under-x-ray/
  11. https://matthewpalmer.net/kubernetes-app-developer/articles/kubernetes-ingress-guide-nginx-example.html
  12. https://medium.com/@cashisclay/kubernetes-ingress-82aa960f658e
  13. https://github.com/kubernetes/kops/tree/master/addons

Оригинал: «https://dev.to/freakynit/kubernetes-handnotes-2bm9»