В работе ожидайте информацию о готовности сервисного обслуживания: Сервисное обслуживание и ремонт выпрямителей тока Пульсар
ОСОБЕННОСТИ ЛИЦЕНЗИРОВАНИЯ СЕРВИСНОГО ОБСЛУЖИВАНИЯ ВООРУЖЕНИЯ И ВОЕННОЙ ТЕХНИКИ \ КонсультантПлюс
Приложение N 9
к постановлению Правительства
Российской Федерации
от 12 марта 2022 г. N 353
Список изменяющих документов
(в ред. Постановления Правительства РФ от 23.01.2023 N 63)
КонсультантПлюс: примечание.
П. 1 (в ред. Постановления Правительства РФ от 23.01.2023 N 63) распространяется на правоотношения, возникшие с 01.01.2023.
1. Установить, что в 2022 и 2023 годах предоставление лицензии на сервисное обслуживание вооружения и военной техники осуществляется без проведения оценки соответствия соискателя лицензии лицензионным требованиям при условии наличия у него разрешения (лицензии) на разработку, производство, испытание, установку, монтаж, техническое обслуживание, ремонт, утилизацию и реализацию вооружения и военной техники, разработку, производство, испытание, хранение, реализацию и утилизацию боеприпасов (за исключением указанной деятельности, осуществляемой воинскими частями и организациями Вооруженных Сил Российской Федерации и войск национальной гвардии Российской Федерации, в случае если осуществление указанной деятельности предусмотрено их учредительными документами) в части осуществления деятельности по производству и реализации вооружения и военной техники и (или) деятельности по ремонту, техническому обслуживанию, установке и монтажу вооружения и военной техники.
(в ред. Постановления Правительства РФ от 23.01.2023 N 63)
(см. текст в предыдущей редакции)
2. Установить, что лицензия на сервисное обслуживание вооружения и военной техники представляется в отношении вооружения и военной техники, которые предусмотрены приложением к Положению о лицензировании сервисного обслуживания вооружения и военной техники, утвержденному постановлением Правительства Российской Федерации от 30 ноября 2021 г. N 2118 “О лицензировании сервисного обслуживания вооружения и военной техники”, и в отношении которых соискатель лицензии имеет разрешение (лицензию) на разработку, производство, испытание, установку, монтаж, техническое обслуживание, ремонт, утилизацию и реализацию вооружения и военной техники, разработку, производство, испытание, хранение, реализацию и утилизацию боеприпасов (за исключением указанной деятельности, осуществляемой воинскими частями и организациями Вооруженных Сил Российской Федерации и войск национальной гвардии Российской Федерации, в случае если осуществление указанной деятельности предусмотрено их учредительными документами) в части осуществления деятельности по производству и реализации вооружения и военной техники и (или) деятельности по ремонту, техническому обслуживанию, установке и монтажу вооружения и военной техники.
3. Установить, что для получения лицензии на сервисное обслуживание вооружения и военной техники с учетом особенностей, предусмотренных настоящим документом, соискатель лицензии (лицензиат) направляет в лицензирующий орган, наряду с заявлением о предоставлении лицензии на сервисное обслуживание вооружения и военной техники, следующие документы:
а) номенклатура вооружения и военной техники, в отношении которых будет осуществляться деятельность по сервисному обслуживанию вооружения и военной техники, в соответствии с приложением к Положению о лицензировании сервисного обслуживания вооружения и военной техники, утвержденному постановлением Правительства Российской Федерации от 30 ноября 2021 г. N 2118 “О лицензировании сервисного обслуживания вооружения и военной техники”;
б) заявление руководителя организации о готовности выполнять лицензионные требования, предусмотренные подпунктами “б” – “л” пункта 9 Положения о лицензировании сервисного обслуживания вооружения и военной техники, утвержденного постановлением Правительства Российской Федерации от 30 ноября 2021 г. N 2118 “О лицензировании сервисного обслуживания вооружения и военной техники”.
4. Установить, что в заявлении о предоставлении лицензии на сервисное обслуживание вооружения и военной техники соискатель лицензии вправе указать адрес места осуществления деятельности по разработке, производству, испытанию, установке, монтажу, техническому обслуживанию, ремонту, утилизации и реализации вооружения и военной техники, разработке, производству, испытанию, хранению, реализации и утилизации боеприпасов (за исключением указанной деятельности, осуществляемой воинскими частями и организациями Вооруженных Сил Российской Федерации и войск национальной гвардии Российской Федерации, в случае если осуществление указанной деятельности предусмотрено их учредительными документами) или адрес, по которому будут выполняться работы (услуги) по сервисному обслуживанию в отношении номенклатуры вооружения и военной техники, указанному в заявлении о предоставлении лицензии.
5. Установить, что до 31 декабря 2023 г. внесение изменений в реестр лицензий на сервисное обслуживание вооружения и военной техники (при намерении лицензиата осуществлять лицензируемую деятельность в отношении номенклатуры вооружения и военной техники, не предусмотренной реестром лицензий, и (или) при намерении лицензиата осуществлять лицензируемую деятельность по адресу места осуществления лицензируемого вида деятельности, не предусмотренному реестром лицензий) осуществляется без проведения оценки соответствия лицензиатов лицензионным требованиям при соблюдении условий и в порядке, которые установлены пунктами 1 – 4 настоящего документа.
(п. 5 введен Постановлением Правительства РФ от 23.01.2023 N 63)
Сервис-центр: сервисные, ремонтные, пусконаладочные работы
Вы здесь
Главная ▪ Сервис-центрЕдиный телефон
Cервисной службы
Бесплатный звонок по России
Сервисная служба ООО «Мегатехника СПб» уже более 15 лет предлагает клиентам полный комплекс сервисного обслуживания вакуумного и компрессорного оборудования, в том числе:
- диагностика и ремонт;
- гарантийный и постгарантийный ремонт;
- плановое техническое обслуживание и профилактические работы;
- шеф-монтаж;
- обучение специалистов.
Мы придерживаемся принципов: качественно, надежно и в срок. Для этого мы регулярно улучшаем сервисную службу, оснащая ее современным оборудованием и повышая квалификацию специалистов. Специалисты сервисной службы имеют все необходимые допуски для работы на производственных объектах.
Многолетний опыт работы позволяет проводить любые виды работ на оборудовании, поставляемым ООО «Мегатехника СПб» и другими производителями, на всей территории России и стран СНГ. Наработанные годами взаимодействия с техническими службами заводов-изготовителей комплектующих изделий, позволяют разрешать возникающие у наших клиентов трудности комплексно и в кратчайшие сроки. Регулярно анализируя имеющийся опыт, мы создали собственный склад наиболее востребованных запчастей. Выбирая сервисную службу ООО «Мегатехника СПб», Вы получаете надежного партнера, готового выполнить плановое техническое обслуживание, диагностику и ремонт с возможностью выезда наших специалистов в кротчайшие сроки.
Диагностика и ремонт
- Проведение диагностики и ремонта оборудования на производственной площадке ООО «Мегатехника СПб» или на объекте заказчика.
- Восстановление работоспособности оборудования.
- Испытания оборудования при диагностике или после ремонта с выдачей соответствующего документа.
- Модернизация оборудования под требования заказчика.
- Поставка запчастей:
- подбор запасных частей по заводским номерам,
- подбор расходных материалов,
Техническое обслуживание и предупреждение
Своевременное техническое обслуживание и контроль за состоянием повышает срок эксплуатации и надежность работы оборудования, давая возможность:
- Избежать ремонта «по факту отказ» и выполнить предупредительный ремонту;
- Соответствующим образом подготовиться к плановому ремонту оборудования, с минимальными затратами и в кротчайшие сроки.
- Вовремя устранить неисправности и избежать «простоя» оборудования, снизив потенциальные убытки.
- Повысить безопасность работы обслуживающего персонала.
Шеф-монтажные работы
Залог безупречной работы оборудования – проведение шеф-монтажных работ. Шеф-монтаж позволяет на этапе монтажа, своевременно выявить нарушения и несоответствия в параметрах работы и установки оборудования.
По готовности оборудования к запуску в эксплуатацию инженеры выезжают на объект для проведения проверки готовности систем к работе, правильности монтажа и запуска в работу оборудования.
Во время шеф-монтажа, параллельно, проводится обучение специалистов заказчика, правилам эксплуатации, обслуживания, диагностики и ремонта оборудования, с учетом его особенностей.
Подождите — использование зондов готовности для сервисных зависимостей в Kubernetes
В идеальном мире микросервисов каждая часть понимает, что что-то может сломаться. Если какая-то конечная точка не может быть достигнута, ее следует просто повторить через некоторое время и повторять снова и снова. Эта проблема с подключением будет отслеживаться, и какой-то верхний уровень может принять решение о дальнейших действиях. Микросервис выполняет свою единственную работу и действует гибко в отношении предстоящих препятствий.
Но в действительности мы часто имеем дело с приложениями, которые моментально ломаются, когда что-то идет не так, как они ожидают. При подключении к API или базе данных, которые еще не готовы, приложение расстраивается и отказывается продолжать работу, поэтому в оставшейся части этой статьи я называю это «упрямым приложением».
Мы не можем переписать все эти старые добрые приложения, но по-прежнему хотим получать преимущества от инфраструктур микросервисов и оркестрации прямо сейчас. Поэтому нам нужно придумать какой-нибудь обходной путь и определить какую-то зависимость между развертываниями, о которой позаботятся, когда они будут запущены. Решение: мы просто подождем, пока не будет готов зависимый API или база данных, и только после этого запустим наше упрямое приложение.
Знать, когда под готов
На нашей старой платформе у нас была функция в API платформы, которая позволяла службе сигнализировать о том, что она действительно готова принимать запросы.
После переноса нашей платформы на Kubernetes нам нужно было убедиться, что мы остаемся на одном уровне с функциональностью. К счастью, Kubernetes включает в себя множество хорошо продуманных примитивов. В этом случае мы можем использовать датчик готовности.
Под с определенной проверкой готовности не будет получать трафик до тех пор, пока определенный запрос не будет успешно выполнен. Этот зонд определяется через Kubernetes API, поэтому никаких изменений в нашем микросервисе не требуется. Нам просто нужно настроить датчик готовности для микросервисов, от которых зависит наше упрямое приложение. Здесь вы можете увидеть соответствующую часть спецификации контейнера, которую нужно добавить (в этом примере мы хотим знать, когда Grafana будет готова):
готовность Зонд: httpПолучить: путь: /логин порт: 3000
✅ Теперь мы знаем, когда наш зависимый API или база данных будут готовы!
Отсрочка развертывания нашей упрямой службы
Нам все еще нужно позаботиться о том, чтобы наше упрямое приложение не запускалось до того, как будет готова его зависимость. Kubernetes может запускать Init Container перед нашим фактическим Pod. Там мы можем сделать некоторую подготовку, если это необходимо, или, в нашем случае, просто подождать, пока статус нашей зависимой службы не изменится на
готово
. После этого можно безопасно запускать Pod.
Обычно мы будем использовать ресурс службы для доступа к другим микрослужбам. Мы можем узнать у Kubernetes, сколько подов готово для использования определенной службой, с помощью простой команды curl
:
namespace="monitoring" сервис = "графана" cacert="/var/run/secrets/kubernetes.io/serviceaccount/ca.crt" token="$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)" curl --cacert $cacert --header "Авторизация: носитель $token" \ https://kubernetes.default.svc/api/v1/namespaces/$namespace/endpoints/$service\ | jq -r '.subsets[].addresses | длина'
Мы запускаем запрос GET
на https://kubernetes.default.svc/api/v1/namespaces/$namespace/endpoints/$service
. Это API Kubernetes, к которому мы можем получить доступ из пода, предоставив правильные учетные данные. Для удобства (в большинстве ванильных настроек) Kubernetes по умолчанию монтирует их по адресу
/var/run/secrets/kubernetes.io/serviceaccount
.
На этот запрос Kubernetes отвечает информацией обо всех доступных конечных точках для указанной нами службы в формате JSON. Нам достаточно проверить длину массива с конечными точками, так как в списке будут только конечные точки, равные готово
. Таким образом, мы можем просто перебрать это и подождать, пока длина равна нулю.
✅ Теперь наше упрямое приложение будет ждать, пока не будет готово желаемое окружение. Потрясающий!
Заключение
Благодаря использованию зонда готовности в сочетании с ожидающим контейнером инициализации у нас есть простое решение, гарантирующее, что поды с зависимостями не запустятся до того, как их зависимости будут готовы. Это также работает с более чем одной зависимостью.
В зависимости от варианта использования возможны другие решения. Мы обсудим некоторые из них, их плюсы и минусы в следующем посте в блоге.
Что вы думаете? Любые мысли, чтобы поделиться? С удовольствием обсудим в комментариях \o/
Настройка проверки работоспособности, готовности и запуска
На этой странице показано, как настроить проверки работоспособности, готовности и запуска для контейнеров.
kubelet использует датчики живучести, чтобы знать, когда перезапустить контейнер. Например, зонды живучести могут поймать взаимоблокировку, когда приложение работает, но не может работать. Перезапуск контейнер в таком состоянии может помочь сделать приложение более доступным несмотря на баги.
kubelet использует датчики готовности, чтобы узнать, когда контейнер готов к запуску.
прием трафика. Pod считается готовым, когда готовы все его контейнеры.
Одно из применений этого сигнала — контролировать, какие поды используются в качестве серверных частей для сервисов. Когда под не готов, он удаляется из балансировщиков нагрузки службы.
Kubelet использует тесты запуска, чтобы узнать, когда запущено приложение-контейнер. Если такой зонд настроен, он отключает проверки работоспособности и готовности до тех пор, пока это удается, убедившись, что эти зонды не мешают запуску приложения. Это можно использовать для проверки работоспособности контейнеров с медленным запуском, избегая их. быть убитым kubelet до того, как они заработают.
Прежде чем начать
У вас должен быть кластер Kubernetes, а инструмент командной строки kubectl должен быть настроен для связи с вашим кластером. Рекомендуется запускать это руководство в кластере по крайней мере с двумя узлами, которые не действуют как узлы плоскости управления. Если у вас еще нет кластер, вы можете создать его, используя миникуб или вы можете использовать одну из этих игровых площадок Kubernetes:
- Killercoda
- Play with Kubernetes
Определите команду liveness
Многие приложения, работающие в течение длительного периода времени, в конечном итоге переходят на
сломанных состояниях и не может восстановиться, кроме как путем перезапуска.
В этом упражнении вы создадите модуль, который запускает контейнер на основе образ реестра.k8s.io/busybox
. Вот файл конфигурации для Pod:
pods/probe/exec-liveness.yaml
apiVersion: v1 вид: стручок метаданные: этикетки: тест: живучесть имя: liveness-exec спецификация: контейнеры: - название: живучесть образ: реестр.k8s.io/busybox аргументы: - /бин/ш - -с - коснитесь /tmp/healthy; спать 30; rm -f /tmp/здоровый; спать 600 живостьзонд: исполнитель: команда: - кот - /tmp/здоровый начальные секунды задержки: 5 периодСекунды: 5
В файле конфигурации вы можете видеть, что Pod имеет один Container
.
Поле periodSeconds
указывает, что kubelet должен выполнять
датчик каждые 5 секунд. Поле initialDelaySeconds
сообщает kubelet, что он
следует подождать 5 секунд перед выполнением первого зондирования. Чтобы выполнить зондирование,
kubelet выполняет команду
cat /tmp/healthy
в целевом контейнере. Если
команда выполнена успешно, она возвращает 0, и kubelet считает контейнер живым и
здоровый. Если команда возвращает ненулевое значение, kubelet убивает контейнер
и перезапускает его.
Когда контейнер запускается, он выполняет следующую команду:
/bin/sh -c "touch /tmp/healthy; sleep 30; rm -f /tmp/healthy; sleep 600"
В течение первых 30 секунд жизни контейнера существует файл /tmp/healthy
.
Итак, в течение первых 30 секунд команда cat /tmp/healthy
возвращает успех.
код. Через 30 секунд cat /tmp/healthy
возвращает код ошибки.
Создайте модуль:
kubectl apply -f https://k8s.io/examples/pods/probe/exec-liveness.yaml
В течение 30 секунд просмотрите события Pod:
kubectl описать pod liveness-exec
Выходные данные показывают, что ни одно из тестов живучести еще не дало сбоев:
Тип Причина Возраст Из сообщения ---- ------ ---- ---- ------- Обычный Запланировано 11s default-scheduler Успешно назначено default/liveness-exec для node01 Обычный Вытягивание 9s kubelet, node01 Вытягивание образа "registry.k8s.io/busybox" Нормально Вытащил 7s kubelet, node01 Успешно вытащил образ "registry.k8s.io/busybox" Обычный Создан 7s kubelet, node01 Создан контейнер liveness Обычный Запущено 7s kubelet, node01 Запущена жизнеспособность контейнера
Через 35 секунд снова просмотрите события Pod:
kubectl описать pod liveness-exec
В нижней части вывода есть сообщения о том, что живость зонды потерпели неудачу, а неисправные контейнеры были уничтожены и воссозданы.
Тип Причина Возраст от сообщения ---- ------ ---- ---- ------- Обычный Запланировано 57s default-scheduler Успешно назначено default/liveness-exec для node01 Обычный Вытягивание 55s kubelet, node01 Вытягивание образа "registry.k8s.io/busybox" Обычный Получено 53s kubelet, node01 Успешно получено изображение "registry.k8s.io/busybox" Обычный Создан 53s kubelet, node01 Создан контейнер liveness Обычный Запущено 53s kubelet, node01 Запущена жизнеспособность контейнера Предупреждение Неработоспособные 10 с (x3 более 20 с) kubelet, node01 Ошибка проверки живучести: кошка: не удается открыть «/tmp/healthy»: нет такого файла или каталога Обычный Kill 10s kubelet, node01 Проверка живучести контейнера не удалась, будет перезапущена
Подождите еще 30 секунд и убедитесь, что контейнер был перезапущен:
kubectl get pod liveness-exec
Вывод показывает, что RESTARTS
было увеличено. Обратите внимание, что значение счетчика
RESTARTS
увеличивается, как только неисправный контейнер возвращается в рабочее состояние:
НАЗВАНИЕ READY STATUS RESTARTS AGE liveness-exec 1/1 Бег 1 1м
Определение HTTP-запроса живучести
Другой тип проверки живучести использует HTTP-запрос GET. Вот конфигурация
файл для пода, который запускает контейнер на основе реестр.k8s.io/liveness
изображение.
pods/probe/http-liveness.yaml
APIVersion: v1 вид: стручок метаданные: этикетки: тест: живучесть имя: liveness-http спецификация: контейнеры: - название: живучесть образ: реестр.k8s.io/liveness аргументы: - / сервер живостьзонд: httpПолучить: путь: /healthz порт: 8080 httpЗаголовки: - имя: Пользовательский заголовок значение: Потрясающе начальные секунды задержки: 3 периодСекунды: 3
В файле конфигурации вы можете видеть, что Pod имеет один контейнер. Поле
periodSeconds
указывает, что kubelet должен выполнять
датчик каждые 3 секунды. Поле initialDelaySeconds
сообщает kubelet, что он
следует подождать 3 секунды перед выполнением первого зондирования. Чтобы выполнить зондирование,
kubelet отправляет запрос HTTP GET на сервер, работающий в контейнере
и прослушивание порта 8080. Если обработчик сервера /healthz
путь
возвращает код успеха, kubelet считает контейнер живым и
здоровый. Если обработчик возвращает код ошибки, kubelet убивает контейнер
и перезапускает его.
Любой код больше или равен 200 и меньше 400 указывает на успех. Любой другой код указывает на отказ.
Вы можете увидеть исходный код сервера в сервер.го.
В течение первых 10 секунд, пока контейнер жив, обработчик /healthz
возвращает статус 200. После этого обработчик возвращает статус 500.
http.HandleFunc("/healthz", func(w http.ResponseWriter, r *http.Request) { продолжительность := время.Сейчас().Подпрограмма(начато) если продолжительность.Секунды() > 10 { w.WriteHeader(500) w.Write([]byte(fmt.Sprintf("ошибка: %v", продолжительность.Секунды()))) } еще { w.WriteHeader(200) w.Write([]байт("хорошо")) } })
kubelet начинает выполнять проверки работоспособности через 3 секунды после запуска контейнера. Таким образом, первая пара проверок работоспособности пройдет успешно. Но через 10 секунд здоровье проверки не пройдут, а kubelet убьет и перезапустит контейнер.
Чтобы попробовать проверку жизнеспособности HTTP, создайте под:
kubectl apply -f https://k8s.io/examples/pods/probe/http-liveness.yaml
Через 10 секунд просмотрите события Pod, чтобы убедиться в том, что зонды живучести не прошли и контейнер был перезапущен:
kubectl описать pod liveness-http
В выпусках до версии 1.13 (включая версию 1.13), если переменная среды http_proxy
(или HTTP_PROXY
) устанавливается на узле, где работает Pod,
HTTP-проверка жизнеспособности использует этот прокси. В выпусках после v1.13 настройки переменных среды локального прокси-сервера HTTP не
влияют на проверку работоспособности HTTP.
Определение проверки работоспособности TCP
Третий тип проверки работоспособности использует сокет TCP. При такой конфигурации kubelet попытается открыть сокет для вашего контейнера на указанном порту. Если он может установить соединение, контейнер считается исправным, если он не может считаться неудачей.
pods/probe/tcp-liveness-readiness.yaml
apiVersion: v1 вид: стручок метаданные: имя: гопрокси этикетки: приложение: гопрокси спецификация: контейнеры: - имя: гопрокси образ: реестр.k8s.io/goproxy:0.1 порты: - контейнерПорт: 8080 готовностьзонд: TCP-сокет: порт: 8080 начальные секунды задержки: 5 периодСекунды: 10 живостьзонд: TCP-сокет: порт: 8080 начальные секунды задержки: 15 периодСекунды: 20
Как видите, настройка проверки TCP очень похожа на настройку проверки HTTP. В этом примере используются датчики готовности и живучести. Кублет отправит
первый датчик готовности через 5 секунд после запуска контейнера. Это будет попытка
подключиться к контейнеру
goproxy
на порту 8080. Если проверка прошла успешно, Pod
будет помечен как готовый. kubelet будет продолжать выполнять эту проверку каждые 10
секунды.
В дополнение к датчику готовности эта конфигурация включает датчик работоспособности.
Kubelet запустит первую проверку живучести через 15 секунд после запуска контейнера.
начинается. Подобно зонду готовности, он попытается подключиться к контейнер goproxy
на порту 8080.
будет перезапущен.
Чтобы попробовать проверить живучесть TCP, создайте Pod:
kubectl apply -f https://k8s.io/examples/pods/probe/tcp-liveness-readiness.yaml
Через 15 секунд просмотрите события Pod, чтобы убедиться, что живость зондов:
kubectl описывает pod goproxy
Определение проверки работоспособности gRPC
СОСТОЯНИЕ ФУНКЦИИ: Kubernetes v1.
24 [бета]
Если ваше приложение реализует протокол проверки работоспособности gRPC,
kubelet можно настроить для проверки жизнеспособности приложений.
Вы должны включить GRPCContainerProbe
ворота
для настройки проверок, которые полагаются на gRPC.
Вот пример манифеста:
pods/probe/grpc-liveness.yaml
apiVersion: v1 вид: стручок метаданные: имя: etcd-с-grpc спецификация: контейнеры: - имя: etcd образ: реестр.k8s.io/etcd:3.5.1-0 команда: [ "/usr/local/bin/etcd", "--data-dir", "/var/lib/etcd", "--listen-client-urls", "http://0.0.0.0: 2379", "--advertise-client-urls", "http://127.0.0.1:2379", "--log-level", "debug"] порты: - контейнерПорт: 2379 живостьзонд: группа: порт: 2379 начальные секунды задержки: 10
Для использования зонда gRPC необходимо настроить порт
. Если конечная точка работоспособности настроена
для службы, отличной от службы по умолчанию, необходимо также указать службу
.
Примечание: В отличие от проб HTTP и TCP, нельзя использовать именованные порты и нельзя настроить собственный хост.
Проблемы с конфигурацией (например: неправильный порт и служба, нереализованный протокол проверки работоспособности) считаются сбоем зонда, как и зонды HTTP и TCP.
Чтобы попробовать проверить работоспособность gRPC, создайте модуль с помощью приведенной ниже команды. В приведенном ниже примере модуль etcd настроен на использование проверки живучести gRPC.
kubectl применить -f https://k8s.io/examples/pods/probe/grpc-liveness.yaml
Через 15 секунд просмотрите события Pod, чтобы убедиться, что проверка жизнеспособности не завершилась ошибкой:
kubectl описать pod etcd-with-grpc
До Kubernetes 1.23 проверки работоспособности gRPC часто выполнялись с помощью grpc-health-probe,
как описано в записи блога Проверка работоспособности серверов gRPC в Kubernetes. Поведение встроенных зондов gRPC аналогично поведению, реализованному grpc-health-probe.
При переходе с grpc-health-probe на встроенные зонды помните о следующих различиях:
- Встроенные зонды работают с IP-адресом пода, в отличие от grpc-health-probe, который часто работает с
127.0.0.1
. Обязательно настройте конечную точку gRPC для прослушивания IP-адреса модуля. - Встроенные датчики не поддерживают никаких параметров аутентификации (например,
-tls
). - Коды ошибок для встроенных датчиков отсутствуют. Все ошибки рассматриваются как сбои зонда.
- Если для шлюза функции
ExecProbeTimeout
установлено значениеfalse
, grpc-health-probe не учитывает настройкуtimeoutSeconds
(по умолчанию 1 с), в то время как встроенный зонд выйдет из строя по тайм-ауту.
Использовать именованный порт
Вы можете использовать именованный порт
для зондов HTTP и TCP. (зонды gRPC не поддерживают именованные порты).
Например:
порты: - название: liveness-порт контейнерПорт: 8080 порт хоста: 8080 живостьзонд: httpПолучить: путь: /healthz порт: liveness-порт
Защита контейнеров с медленным запуском с помощью тестов запуска
Иногда вам приходится иметь дело с устаревшими приложениями, которые могут потребовать
дополнительное время запуска при их первой инициализации.
В таких случаях может быть сложно настроить параметры живости без
компрометируя быструю реакцию на тупиковые ситуации, которые мотивировали такое расследование.
Хитрость заключается в том, чтобы настроить пробу запуска с помощью той же команды, HTTP или TCP.
проверить, с failureThreshold * periodSeconds
достаточно долго, чтобы покрыть
время запуска в худшем случае.
Таким образом, предыдущий пример станет следующим:
портов: - название: liveness-порт контейнерПорт: 8080 порт хоста: 8080 живостьзонд: httpПолучить: путь: /healthz порт: liveness-порт порог отказа: 1 периодСекунды: 10 StartupProbe: httpПолучить: путь: /healthz порт: liveness-порт порог отказа: 30 периодСекунды: 10
Благодаря тесту запуска у приложения будет максимум 5 минут
(30 * 10 = 300 с), чтобы завершить запуск. После того, как проба запуска прошла успешно один раз, проба живости берет на себя управление.
обеспечить быструю реакцию на блокировку контейнера.
Если проба запуска никогда не завершается успешно, контейнер уничтожается через 300 с и
в зависимости от стручка
политика перезапуска
.
Определение тестов готовности
Иногда приложения временно не могут обслуживать трафик. Например, приложению может потребоваться загрузить большие данные или конфигурацию. файлы во время запуска или зависят от внешних служб после запуска. В таких случаях вы не хотите убивать приложение, но вы также не хотите отправлять ему запросы. Kubernetes предоставляет зонды готовности для обнаружения и смягчения таких ситуаций. Подвал с контейнерами сообщают, что не готовы не получают трафик через Kubernetes Услуги.
Примечание. Проверка готовности выполняется для контейнера в течение всего его жизненного цикла.
Предупреждение: Проверка работоспособности не ожидает успешного завершения проверки готовности. Если вы хотите подождать перед выполнением проверки живучести, вы должны использовать initialDelaySeconds или startupProbe.
Зонды готовности настраиваются аналогично зондам живучести. Единственная разница
заключается в том, что вы используете поле readynessProbe
вместо livenessProbe 9поле 0026.
готовность Зонд: исполнитель: команда: - кот - /tmp/здоровый начальные секунды задержки: 5 периодСекунды: 5
Конфигурация тестов готовности HTTP и TCP также остается идентичной зонды живучести.
Датчики готовности и жизнеспособности можно использовать параллельно для одного и того же контейнера. Использование обоих может гарантировать, что трафик не достигнет неготового контейнера. для этого, и что контейнеры перезапускаются при сбое.
Настройка датчиков
Датчики имеют ряд полей, которые вы можете использовать для более точного управления поведением запуска, живучести и готовности checks:
-
initialDelaySeconds
: Количество секунд после запуска контейнера перед запуском инициируются проверки работоспособности или готовности.По умолчанию 0 секунд. Минимальное значение равно 0.
-
periodSeconds
: Как часто (в секундах) выполнять проверку. По умолчанию 10 секунды. Минимальное значение 1. -
timeoutSeconds
: Количество секунд, по истечении которых время зонда истекает. По умолчанию до 1 секунды. Минимальное значение равно 1. -
successThreshold
: Минимум последовательных успешных попыток проверки считается успешным после неудачи. По умолчанию 1. Должно быть 1 для живости и запуск зондов. Минимальное значение — 1. -
failureThreshold
: после сбоя зондаfailureThreshold
раз подряд, Kubernetes считает, что общая проверка не удалась: контейнер равен не готов/исправен/ жить. В случае пробы запуска или живучести, если не менеепроб провала с порогом
произошел сбой, Kubernetes рассматривает контейнер как неработоспособный и инициирует перезагрузку для этого конкретный контейнер. Kubelet принимает настройкуTerminationGracePeriodSeconds
.для этого контейнера во внимание. В случае сбоя проверки готовности kubelet продолжает работу контейнера, в котором произошел сбой. проверяет, а также продолжает выполнять дополнительные проверки; поскольку проверка не удалась, кубелет устанавливает
Готов
состояние на Pod доfalse
. -
terminationGracePeriodSeconds
: настроить льготный период ожидания kubelet между инициированием закрытия отказавшего контейнера, а затем форсированием среда выполнения контейнера, чтобы остановить этот контейнер. По умолчанию наследуется значение уровня Pod дляTertionGracePeriodSeconds
. (30 секунд, если не указано иное), а минимальное значение равно 1. См. уровень зондаTerminationGracePeriodSeconds
. для более подробной информации.
Предупреждение: Неправильная реализация тестов готовности может привести к постоянно растущему количеству
процессов в контейнере и нехватка ресурсов, если это не отмечено.
HTTP-зонды
HTTP-зонды
есть дополнительные поля, которые можно установить в httpGet
:
-
хост
: имя хоста для подключения, по умолчанию IP-адрес модуля. Вы, наверное, хотите вместо этого установите «Host» в httpHeaders. -
схема
: Схема для подключения к хосту (HTTP или HTTPS). По умолчанию HTTP. -
путь
: Путь для доступа к HTTP-серверу. По умолчанию /. -
httpHeaders
: Пользовательские заголовки для установки в запросе. HTTP допускает повторяющиеся заголовки. -
порт
: Имя или номер порта для доступа к контейнеру. Номер должен быть в диапазоне от 1 до 65535.
Для HTTP-зонда kubelet отправляет HTTP-запрос по указанному пути и
порт для проверки. kubelet отправляет зонд на IP-адрес пода,
если адрес не переопределен необязательным хост
поле в httpGet
. Если в поле схемы
установлено значение HTTPS
, kubelet отправляет HTTPS-запрос, пропуская
проверка сертификата. В большинстве сценариев вы не хотите задавать поле
host
.
Вот один сценарий, где вы могли бы установить его. Предположим, контейнер прослушивает 127.0.0.1.
и поле hostNetwork
пода истинно. Затем следует установить хост
под httpGet
.
на 127.0.0.1. Если ваш модуль использует виртуальные хосты, что, вероятно, более распространено
случае, вы не должны использовать host
, а вместо этого установите заголовок Host
в httpHeaders
.
Для HTTP-пробы kubelet отправляет два заголовка запроса в дополнение к обязательному заголовку Host
: User-Agent
и Accept
. Значения по умолчанию для этих заголовков: kube-probe/1.26
.
(где 1.26
— версия kubelet), а */*
соответственно.
Вы можете переопределить заголовки по умолчанию, определив .httpHeaders
для зонда; например
livenessProbe: httpПолучить: httpЗаголовки: - имя: Принять значение: приложение/json StartupProbe: httpПолучить: httpЗаголовки: - имя: Пользователь-Агент значение: MyUserAgent
Вы также можете удалить эти два заголовка, указав для них пустое значение.
livenessProbe: httpПолучить: httpЗаголовки: - имя: Принять ценить: "" StartupProbe: httpПолучить: httpЗаголовки: - имя: Пользователь-Агент ценить: ""
TCP-зонды
Для TCP-зонда kubelet устанавливает соединение на узле, а не в поде, что
означает, что вы не можете использовать имя службы в параметре host
, так как kubelet не может
чтобы решить это.
Уровень зонда
TerminationGracePeriodSeconds
FEATURE STATE: Kubernetes v1.25 [beta]
за завершение работы контейнера, в котором произошел сбой проверки работоспособности или запуска. Этот соединение было непреднамеренным и могло привести к повреждению контейнеров необычайно долго перезагружается при 9 уровне пода0025 прекращениеGracePeriodSeconds был установлен.
В версии 1.25 и более поздних версиях пользователи могут указать уровень проверки TerminationGracePeriodSeconds
как часть спецификации зонда. Когда и уровень модуля, и датчик
TerminationGracePeriodSeconds
, kubelet будет использовать значение probe-level.
Например, спецификация
: terminationGracePeriodSeconds: 3600 # уровень пода контейнеры: - название: тест изображение: ... порты: - название: liveness-порт контейнерПорт: 8080 порт хоста: 8080 живостьзонд: httpПолучить: путь: /healthz порт: liveness-порт порог отказа: 1 периодСекунды: 60 # Переопределить терминацию GracePeriodSeconds на уровне пода # прекращениеGracePeriodSeconds: 60
Уровень зонда TerminationGracePeriodSeconds
не может быть установлен для зондов готовности.
Он будет отклонен сервером API.
Что дальше
- Узнать больше о Контейнерные зонды.
Вы также можете прочитать ссылки на API для:
- Pod, а именно:
- контейнер(ы)
- зонд(ы)
Последнее изменение 16 января 20079 8:583 PST.
Добавить комментарий