Исходный код вики J02.08. Pods (Поды)
Редактировал(а) Ирина Сафонова 07.01.2024, 13:52
Скрыть последних авторов
author | version | line-number | content |
---|---|---|---|
![]() |
57.1 | 1 | {{box cssClass="floatinginfobox" title="**Содержание**"}} |
2 | {{toc/}} | ||
3 | {{/box}} | ||
![]() |
1.1 | 4 | |
![]() |
57.1 | 5 | (% data-xwiki-non-generated-content="java.util.List" %) |
6 | ((( | ||
![]() |
58.1 | 7 | = Назначение подов = |
![]() |
57.1 | 8 | ))) |
![]() |
1.1 | 9 | |
![]() |
58.1 | 10 | ---- |
![]() |
1.1 | 11 | |
![]() |
81.1 | 12 | **Поды** **(Pods)** — набор из одного и более[[ контейнеров>>https://wiki.dfcloud.ru/bin/view/Glossary/%D0%9A%D0%BE%D0%BD%D1%82%D0%B5%D0%B9%D0%BD%D0%B5%D1%80||style="background-color: rgb(255, 255, 255);"]] для совместного развертывания на [[ноде>>https://wiki.dfcloud.ru/bin/view/Glossary/%D0%9D%D0%BE%D0%B4%D0%B0||style="background-color: rgb(255, 255, 255);"]] в **Cloud Managed Kubernetes**. **Cloud Managed Kubernetes** предоставляет пользователям параметры для настройки конфигураций рабочей нагрузки. Примеры параметров: |
![]() |
3.1 | 13 | |
![]() |
81.1 | 14 | * проверки работоспособности, |
15 | * [[переменные среды>>https://wiki.dfcloud.ru/bin/view/Glossary/%D0%9F%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F%20%D1%81%D1%80%D0%B5%D0%B4%D1%8B||style="background-color: rgb(255, 255, 255);"]], | ||
16 | * команды запуска. | ||
17 | |||
18 | Под указывается при создании [[развертываний>>https://wiki.dfcloud.ru/bin/view/%D0%9A%D0%BE%D0%BD%D1%82%D0%B5%D0%B9%D0%BD%D0%B5%D1%80%D0%BD%D0%B0%D1%8F%20%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0/Cloud%20Managed%20Kubernetes/2.%20%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F/01.%20%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F%20%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F/L.%20%D0%A3%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%BE%D0%BC/L02.%20%D0%A0%D0%B0%D0%B1%D0%BE%D1%87%D0%B8%D0%B5%20%D0%BD%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B8%20%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9/L02.01.%20%D0%A0%D0%B0%D0%B7%D0%B2%D0%BE%D1%80%D0%B0%D1%87%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%20%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9/||style="background-color: rgb(255, 255, 255);"]], [[наборов состояния>>https://wiki.dfcloud.ru/bin/view/%D0%9A%D0%BE%D0%BD%D1%82%D0%B5%D0%B9%D0%BD%D0%B5%D1%80%D0%BD%D0%B0%D1%8F%20%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0/Cloud%20Managed%20Kubernetes/2.%20%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F/01.%20%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F%20%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F/L.%20%D0%A3%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%BE%D0%BC/L02.%20%D0%A0%D0%B0%D0%B1%D0%BE%D1%87%D0%B8%D0%B5%20%D0%BD%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B8%20%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9/L02.02.%20StatefulSets/||style="background-color: rgb(255, 255, 255);"]] или [[набора даемона>>https://wiki.dfcloud.ru/bin/view/%D0%9A%D0%BE%D0%BD%D1%82%D0%B5%D0%B9%D0%BD%D0%B5%D1%80%D0%BD%D0%B0%D1%8F%20%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0/Cloud%20Managed%20Kubernetes/2.%20%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F/01.%20%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F%20%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F/L.%20%D0%A3%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%BE%D0%BC/L02.%20%D0%A0%D0%B0%D0%B1%D0%BE%D1%87%D0%B8%D0%B5%20%D0%BD%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B8%20%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9/L02.03.%20Kubernetes%20DaemonSets%20%D0%B2%20KubeSphere/||style="background-color: rgb(255, 255, 255);"]]. | ||
19 | |||
![]() |
50.1 | 20 | = Настройки подов = |
![]() |
3.1 | 21 | |
![]() |
3.2 | 22 | ---- |
![]() |
3.1 | 23 | |
![]() |
50.1 | 24 | == Реплики подов == |
![]() |
3.2 | 25 | |
![]() |
59.1 | 26 | Установите количество реплицированных подов, щелкнув [[image:https://www.kubesphere.io/images/docs/v3.3/project-user-guide/application-workloads/container-image-settings/plus-icon.png||alt="icon" height="20" width="21"]] или [[image:https://www.kubesphere.io/images/docs/v3.3/project-user-guide/application-workloads/container-image-settings/minus-icon.png||alt="icon" height="20" width="20"]] в поле {{code language="none"}}.spec.replicas{{/code}} [[файла манифеста>>https://wiki.dfcloud.ru/bin/view/Glossary/%D0%9C%D0%B0%D0%BD%D0%B8%D1%84%D0%B5%D1%81%D1%82%20%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F]]. Эта опция недоступна для набора даемона. |
![]() |
3.2 | 27 | |
![]() |
59.1 | 28 | Если создаете развертывания в многокластерном проекте, выберите режим планирования реплик в разделе **Replica Scheduling Mode**: |
![]() |
3.2 | 29 | |
![]() |
80.1 | 30 | * **Specify Replicas**: выберите [[кластеры>>https://wiki.dfcloud.ru/bin/view/Glossary/%D0%9A%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80]] и установите количество реплик подов в каждом кластере |
31 | * **Specify Weights**: выберите кластеры, установите общее количество реплик подов в **Total Replicas** и укажите емкость для каждого кластера. Реплики пропорционально распределяются по кластерам в соответствии с указанной емкостью. Чтобы отредактировать емкость после создания развертывания, перейдите на страницу сведений, щелкните имя развертывания и измените емкость в разделе **Weights** вкладки **Resource Status** | ||
![]() |
3.2 | 32 | |
![]() |
59.1 | 33 | Если создаете наборы состояния в проекте с несколькими кластерами, выберите кластеры и установите количество реплик подов в каждом кластере раздела **Replicas Pod**. |
![]() |
3.2 | 34 | |
![]() |
50.1 | 35 | == Добавление контейнера == |
![]() |
3.2 | 36 | |
![]() |
81.1 | 37 | Нажмите кнопку **Add Container**, чтобы добавить контейнер. |
![]() |
4.1 | 38 | |
![]() |
50.1 | 39 | === Поле поиска изображений === |
![]() |
4.1 | 40 | |
![]() |
81.1 | 41 | При необходимости щелкните кнопку[[image:https://www.kubesphere.io/images/docs/v3.3/project-user-guide/application-workloads/container-image-settings/cube-icon.png||alt="icon"]], чтобы выбрать изображение из списка или ввести имя изображения для его поиска. **Cloud Managed Kubernetes** предоставляет образы [[Docker Hub>>https://hub.docker.com/]] и вличный репозиторий образов. Если хотите использовать свой репозиторий, создайте [[секретную переменную>>https://wiki.dfcloud.ru/bin/view/%D0%9A%D0%BE%D0%BD%D1%82%D0%B5%D0%B9%D0%BD%D0%B5%D1%80%D0%BD%D0%B0%D1%8F%20%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0/Cloud%20Managed%20Kubernetes/2.%20%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F/01.%20%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F%20%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F/L.%20%D0%A3%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%BE%D0%BC/L04.%20%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0%20%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0/L04.01.%20%D0%A1%D0%B5%D0%BA%D1%80%D0%B5%D1%82%D0%BD%D1%8B%D0%B5%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5/]] реестра образов раздела **Secrets** в **Configuration.** |
![]() |
4.1 | 42 | |
![]() |
4.2 | 43 | {{warning}} |
![]() |
59.1 | 44 | Нажмите **Enter** на клавиатуре после введения имени изображения в поле поиска. |
![]() |
4.2 | 45 | {{/warning}} |
![]() |
4.1 | 46 | |
![]() |
50.1 | 47 | === Тег изображения === |
![]() |
4.1 | 48 | |
![]() |
81.1 | 49 | При необходимости укажите тег, например, {{code language="none"}}imagename:tag{{/code}}. Если тег не указан, по умолчанию устанавливается последняя версия контейнера. |
![]() |
4.2 | 50 | |
![]() |
50.1 | 51 | === Имя контейнера === |
![]() |
4.2 | 52 | |
![]() |
59.1 | 53 | **Cloud Managed Kubernetes** автоматически создает имя контейнера, на которое указывает {{code language="none"}}.spec.containers.name{{/code}}. |
![]() |
4.2 | 54 | |
![]() |
50.1 | 55 | === Тип контейнера === |
![]() |
4.2 | 56 | |
![]() |
82.1 | 57 | Выбор **Init container **означает, что [[контейнер инициализации>>https://kubernetes.io/docs/concepts/workloads/pods/init-containers/?spm=a2c4g.11186623.2.19.16704b3e9qHXPb]] создается для рабочей нагрузки. |
![]() |
5.2 | 58 | |
![]() |
50.1 | 59 | === Задание ресурсов === |
![]() |
5.2 | 60 | |
![]() |
61.1 | 61 | Зарезервированная контейнером квота включает ресурсы [[CPU>>https://wiki.dfcloud.ru/bin/view/Glossary/CPU]] и памяти. Резервирование означает, что контейнер монополизирует ресурс, не позволяя другим [[сервисам>>https://wiki.dfcloud.ru/bin/view/%D0%9A%D0%BE%D0%BD%D1%82%D0%B5%D0%B9%D0%BD%D0%B5%D1%80%D0%BD%D0%B0%D1%8F%20%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0/Cloud%20Managed%20Kubernetes/2.%20%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F/01.%20%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F%20%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F/L.%20%D0%A3%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%BE%D0%BC/L02.%20%D0%A0%D0%B0%D0%B1%D0%BE%D1%87%D0%B8%D0%B5%20%D0%BD%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B8%20%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9/L02.04.%20%D0%A1%D0%B5%D1%80%D0%B2%D0%B8%D1%81%D1%8B/]] или процессам конкурировать за ресурсы из-за нехватки ресурсов. |
![]() |
5.2 | 62 | |
![]() |
50.1 | 63 | * Запрос CPU обозначается как {{code language="none"}}.spec.containers[].resources.requests.cpu{{/code}} в файле манифеста. Запрос CPU может быть превышен. |
![]() |
5.2 | 64 | * Запрос памяти обозначается как {{code language="none"}}.spec.containers[].resources.requests.memory{{/code}} в файле манифеста. Запрос может быть превышен, но контейнер может очиститься, когда памяти ноды недостаточно. |
![]() |
7.1 | 65 | |
![]() |
50.1 | 66 | === Лимит ресурсов === |
![]() |
7.1 | 67 | |
![]() |
82.1 | 68 | При необходимости укажите верхний лимит ресурсов, которые может использовать приложение, включая CPU, память и [[GPU>>https://wiki.dfcloud.ru/bin/view/Glossary/vGPU]]. Лимиты предотвращают чрезмерную занятость ресурсов. |
![]() |
7.1 | 69 | |
70 | * Ограничение CPU указывается с помощью {{code language="none"}}.spec.containers[].resources.limits.cpu{{/code}} в файле манифеста. Лимит CPU может быть превышен на непродолжительное время, и контейнер не будет остановлен. | ||
71 | * Ограничение памяти указывается с помощью {{code language="none"}}.spec.containers[].resources.limits.memory{{/code}} в файле манифеста. Лимит памяти не может быть превышен. В случае превышения контейнер может быть остановлен или назначен на другой компьютер с достаточными ресурсами. | ||
72 | |||
73 | {{info}} | ||
![]() |
75.1 | 74 | Ресурс CPU измеряется в единицах CPU или в ядрах в KubeSphere, а ресурс памяти — в байтах или MiB. |
![]() |
7.1 | 75 | {{/info}} |
76 | |||
![]() |
61.1 | 77 | Для установки **GPU Type **выберите его из раскрывающегося списка (по умолчанию {{code language="none"}}nvidia.com/gpu{{/code}}). **GPU Limit** по умолчанию **не установлено**. |
![]() |
7.1 | 78 | |
![]() |
50.1 | 79 | === Настройки портов === |
![]() |
7.1 | 80 | |
![]() |
82.1 | 81 | Установите протокол доступа для контейнера и информацию о порте. Нажмите кнопку **Use Default Ports**, чтобы использовать настройку по умолчанию. |
![]() |
8.1 | 82 | |
![]() |
50.1 | 83 | == Политика извлечения изображений == |
![]() |
8.1 | 84 | |
![]() |
62.1 | 85 | **Политика извлечения изображений** — политика, при которой [[kubelet>>https://wiki.dfcloud.ru/bin/view/Glossary/kubelet]] пытается извлечь указанное вами изображение. Значение параметра указывается полем {{code language="none"}}imagePullPolicy{{/code}} в файле манифеста. В дашборде при необходимости выберите один из следующих трех вариантов раскрывающегося списка: |
![]() |
8.1 | 86 | |
![]() |
82.1 | 87 | * **Use Local Image First**. Образ подтягивается только в том случае, если он не существует локально. |
88 | * **Pull Image Always**. Изображение извлекается всякий раз, когда запускается под. | ||
89 | * **Use Local Image Only**. Изображение не извлекается независимо от факта существования. | ||
![]() |
8.1 | 90 | |
![]() |
11.1 | 91 | {{info}} |
![]() |
53.1 | 92 | * Значение по умолчанию — **Use Local Image First**, но для изображений с тегом {{code language="none"}}:latest{{/code}} по умолчанию используется значение **Pull Image Always**. |
![]() |
82.1 | 93 | * **Docker** проверит значение по умолчанию при извлечении образа. Если MD5 не менялся, то **Cloud Managed Kubernetes** не подтянет это значение. |
![]() |
62.1 | 94 | * Не используйте тега {{code language="none"}}:latest{{/code}} в продуктивной среде. Последнее изображение может быть автоматически извлечено с помощью тега {{code language="none"}}:latest{{/code}} в среде разработки. |
![]() |
11.1 | 95 | {{/info}} |
96 | |||
![]() |
50.1 | 97 | === Проверка состояния приложения === |
![]() |
11.1 | 98 | |
![]() |
67.1 | 99 | **Cloud Managed Kubernetes **предлагает три типа проверок: |
![]() |
11.1 | 100 | |
![]() |
82.1 | 101 | * **Liveness Check **(Поддержка проверки работоспособности). Проверка используется, чтобы узнать, запущен ли контейнер. На это указывает тег {{code language="none"}}livenessProbe{{/code}} |
102 | * **Readiness Check **(Проверка готовности). Проверка используется, чтобы узнать, готов ли контейнер обслуживать запросы. На это указывает тег {{code language="none"}}readinessProbe{{/code}} | ||
103 | * **Startup Check **(Проверка запуска). Проверка используется, чтобы узнать, запущено ли приложение-контейнер. На это указывает тег {{code language="none"}}startupProbe{{/code}} | ||
![]() |
11.1 | 104 | |
105 | Поддержка проверки работоспособности, проверка готовности и проверка запуска включают в себя следующие конфигурации: | ||
![]() |
12.1 | 106 | |
![]() |
82.1 | 107 | * [[HTTP-запрос>>https://wiki.dfcloud.ru/bin/view/%D0%9A%D0%BE%D0%BD%D1%82%D0%B5%D0%B9%D0%BD%D0%B5%D1%80%D0%BD%D0%B0%D1%8F%20%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0/Cloud%20Managed%20Kubernetes/2.%20%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F/01.%20%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F%20%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F/L.%20%D0%A3%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%BE%D0%BC/L02.%20%D0%A0%D0%B0%D0%B1%D0%BE%D1%87%D0%B8%D0%B5%20%D0%BD%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B8%20%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9/L02.08.%20%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B8%20%D0%BF%D0%BE%D0%B4%D0%BE%D0%B2/#HHTTP43743043F44043E441]], |
108 | * [[Порт TCP>>https://wiki.dfcloud.ru/bin/view/%D0%9A%D0%BE%D0%BD%D1%82%D0%B5%D0%B9%D0%BD%D0%B5%D1%80%D0%BD%D0%B0%D1%8F%20%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0/Cloud%20Managed%20Kubernetes/2.%20%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F/01.%20%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F%20%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F/L.%20%D0%A3%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%BE%D0%BC/L02.%20%D0%A0%D0%B0%D0%B1%D0%BE%D1%87%D0%B8%D0%B5%20%D0%BD%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B8%20%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9/L02.08.%20%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B8%20%D0%BF%D0%BE%D0%B4%D0%BE%D0%B2/#H41F43E440442TCP]], | ||
109 | * [[Команды>>https://wiki.dfcloud.ru/bin/view/%D0%9A%D0%BE%D0%BD%D1%82%D0%B5%D0%B9%D0%BD%D0%B5%D1%80%D0%BD%D0%B0%D1%8F%20%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0/Cloud%20Managed%20Kubernetes/2.%20%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F/01.%20%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F%20%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F/L.%20%D0%A3%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%BE%D0%BC/L02.%20%D0%A0%D0%B0%D0%B1%D0%BE%D1%87%D0%B8%D0%B5%20%D0%BD%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B8%20%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9/L02.08.%20%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B8%20%D0%BF%D0%BE%D0%B4%D0%BE%D0%B2/#H41A43E43C43043D43444B]]. | ||
![]() |
11.1 | 110 | |
![]() |
66.1 | 111 | ==== HTTP-запрос ==== |
![]() |
11.1 | 112 | |
![]() |
12.1 | 113 | Выполните HTTP-запрос Get для указанного порта и пути по IP-адресу контейнера. Если код состояния ответа больше или равен 200 и меньше 400, диагностика считается успешной. Поддерживаемые параметры включают в себя: |
![]() |
11.1 | 114 | |
![]() |
93.1 | 115 | (% class="table-bordered" style="width:1034px" %) |
116 | (% class="active" %)|(% style="width:191px" %)**Параметр**|(% style="width:838px" %)**Комментарий** | ||
117 | |(% style="width:191px" %)**Path** (Путь)|(% style="width:838px" %)((( | ||
![]() |
82.1 | 118 | (% id="cke_bm_51246S" style="display:none" %) (%%)TTP или HTTPS, указанный {{code language="none"}}scheme{{/code}}. Путь доступа к HTTP-серверу, указанный {{code language="none"}}path{{/code}}. Порт доступа или имя порта раскрывается контейнером. Номер порта должен быть в диапазоне от 1 до 65535. Значение определяется портом. |
![]() |
76.1 | 119 | ))) |
![]() |
93.1 | 120 | |(% style="width:191px" %)**Initial Delay** (Начальная задержка в секундах)|(% style="width:838px" %)((( |
![]() |
76.1 | 121 | (% id="cke_bm_56260S" style="display:none" %) (%%)Количество секунд после запуска контейнера до инициирования проверки работоспособности, указанное в {{code language="none"}}initialDelaySeconds{{/code}}. По умолчанию равно 0. |
122 | ))) | ||
![]() |
93.1 | 123 | |(% style="width:191px" %)**Check Interval** (Частота проверки в секундах)|(% style="width:838px" %)((( |
![]() |
76.1 | 124 | (% id="cke_bm_60486S" style="display:none" %) (%%)Указывается в параметре {{code language="none"}}periodSeconds{{/code}}. По умолчанию 10. Минимальное значение 1. |
125 | ))) | ||
![]() |
93.1 | 126 | |(% style="width:191px" %)**Timeouts** (Тайм-аут в секундах)|(% style="width:838px" %)((( |
![]() |
82.1 | 127 | Количество секунд, по истечении которых зонд истечет. Количество указывается параметром {{code language="none"}}timeoutSeconds{{/code}}. По умолчанию равно 1. Минимальное значение 1. |
![]() |
76.1 | 128 | ))) |
![]() |
93.1 | 129 | |(% style="width:191px" %)**Success Threshold** (Порог успеха)|(% style="width:838px" %)((( |
![]() |
82.1 | 130 | Минимальное количество последовательных успешных попыток проверки, которое считается успешным после неудачи. Задается параметром {{code language="none"}}SuccessThreshold{{/code}}. По умолчанию равен 1. Параметр должен быть равен 1 для поддержки работоспобности и запуска. |
![]() |
76.1 | 131 | ))) |
![]() |
93.1 | 132 | |(% style="width:191px" %)**Failure Threshold **(Порог сбоя)|(% style="width:838px" %)((( |
![]() |
76.1 | 133 | Минимальное количество последовательных сбоев, при которых зонд считается сбойным после успешного завершения. Задается параметром {{code language="none"}}failureThreshold{{/code}}. По умолчанию 3. Минимальное значение 1. |
134 | ))) | ||
![]() |
11.1 | 135 | |
![]() |
50.1 | 136 | ==== Порт TCP ==== |
![]() |
11.1 | 137 | |
![]() |
82.1 | 138 | Выполните проверку TCP на указанном порту на IP-адресе контейнера. Если порт открыт, проверка успешна. Поддерживаемые параметры включают в себя: |
![]() |
11.1 | 139 | |
![]() |
93.1 | 140 | (% class="table-bordered" style="width:1038px" %) |
141 | (% class="active" %)|(% style="width:191px" %)**Параметр**|(% style="width:842px" %)**Комментарий** | ||
142 | |(% style="width:191px" %)**Порт**|(% style="width:842px" %)((( | ||
![]() |
82.1 | 143 | Порт доступа или имя порта предоставляется контейнером. Определяемый портом номер должен быть в диапазоне от 1 до 65535. |
![]() |
77.1 | 144 | ))) |
![]() |
93.1 | 145 | |(% style="width:191px" %)**Initial Delay** (Начальная задержка в секундах)|(% style="width:842px" %)((( |
![]() |
77.1 | 146 | Количество секунд после запуска контейнера до инициирования проверки работоспособности, указанное в {{code language="none"}}initialDelaySeconds{{/code}}. По умолчанию равен 0. |
147 | ))) | ||
![]() |
93.1 | 148 | |(% style="width:191px" %)**Check Interval** (Частота проверки в секундах)|(% style="width:842px" %)((( |
![]() |
77.1 | 149 | Частота указывается в параметре {{code language="none"}}periodSeconds{{/code}}. По умолчанию 10. Минимальное значение 1. |
150 | ))) | ||
![]() |
93.1 | 151 | |(% style="width:191px" %)**Timeouts** (Тайм-аут в секундах)|(% style="width:842px" %)((( |
![]() |
79.1 | 152 | Количество секунд, по истечении которых зонд истечет. Количество указывается параметром {{code language="none"}}timeoutSeconds{{/code}}. По умолчанию равен 1. Минимальное значение 1. |
![]() |
77.1 | 153 | ))) |
![]() |
93.1 | 154 | |(% style="width:191px" %)**Success Threshold** (Порог успеха)|(% style="width:842px" %)((( |
![]() |
77.1 | 155 | Минимальное количество последовательных успешных попыток проверки, которое считается успешным после неудачи. Задается параметром {{code language="none"}}SuccessThreshold{{/code}}. По умолчанию равен 1 и должен быть равен 1 для поддержки работоспобности и запуска. |
156 | ))) | ||
![]() |
93.1 | 157 | |(% style="width:191px" %)**Failure Threshold **(Порог сбоя)|(% style="width:842px" %)((( |
![]() |
77.1 | 158 | Минимальное количество последовательных сбоев, при которых зонд считается сбойным после успешного завершения. Задается параметром {{code language="none"}}failureThreshold{{/code}}. По умолчанию равен 3. Минимальное значение 1. |
159 | ))) | ||
![]() |
17.1 | 160 | |
![]() |
77.1 | 161 | (% style="color:inherit; font-family:inherit; font-size:20px" %)Команды |
![]() |
17.1 | 162 | |
![]() |
83.1 | 163 | Выполняется [[команда>>https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes]] в контейнере. Если при ее завершении код возврата равен 0, проверка успешна. Поддерживаемые параметры включают в себя: |
![]() |
18.1 | 164 | |
![]() |
93.1 | 165 | (% class="table-bordered" style="width:1040px" %) |
166 | (% class="active" %)|(% style="width:191px" %)**Параметр**|(% style="width:845px" %)**Комментарий** | ||
167 | |(% style="width:191px" %)**Порт**|(% style="width:845px" %)((( | ||
![]() |
78.1 | 168 | Команда обнаружения, используемая для определения работоспособности контейнера. Указывается в параметре {{code language="none"}}exec.command{{/code}}. |
169 | ))) | ||
![]() |
93.1 | 170 | |(% style="width:191px" %)**Initial Delay** (Начальная задержка в секундах)|(% style="width:845px" %)((( |
![]() |
78.1 | 171 | Количество секунд после запуска контейнера до инициирования проверки работоспособности, указанное в {{code language="none"}}initialDelaySeconds{{/code}}. По умолчанию равно 0. |
172 | ))) | ||
![]() |
93.1 | 173 | |(% style="width:191px" %)**Check Interval** (Частота проверки в секундах)|(% style="width:845px" %)((( |
![]() |
79.1 | 174 | Указывается в параметре {{code language="none"}}periodSeconds{{/code}}. По умолчанию равен 10. Минимальное значение 1. |
![]() |
78.1 | 175 | ))) |
![]() |
93.1 | 176 | |(% style="width:191px" %)**Timeouts** (Тайм-аут в секундах)|(% style="width:845px" %)((( |
![]() |
82.1 | 177 | Количество указывается параметром {{code language="none"}}timeoutSeconds{{/code}}. По умолчанию равен 1. Минимальное значение 1. |
![]() |
78.1 | 178 | ))) |
![]() |
93.1 | 179 | |(% style="width:191px" %)**Success Threshold** (Порог успеха)|(% style="width:845px" %)((( |
![]() |
82.1 | 180 | Минимальное количество последовательных успешных попыток проверки, которое считается успешным после неудачи. Задается параметром {{code language="none"}}SuccessThreshold{{/code}}. По умолчанию параметр равен 1 и должен быть равен 1 для поддержки работоспособности и запуска. Минимальное значение равно 1. |
![]() |
78.1 | 181 | ))) |
![]() |
93.1 | 182 | |(% style="width:191px" %)**Failure Threshold **(Порог сбоя)|(% style="width:845px" %)((( |
![]() |
78.1 | 183 | Минимальное количество последовательных сбоев, при которых зонд считается сбойным после успешного завершения. Задается параметром {{code language="none"}}failureThreshold{{/code}}. По умолчанию 3. Минимальное значение 1. |
184 | ))) | ||
![]() |
77.1 | 185 | |
![]() |
50.1 | 186 | === Команда запуска === |
![]() |
24.2 | 187 | |
![]() |
84.1 | 188 | По умолчанию контейнер [[запускает команду>>https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/]] изображения: |
![]() |
24.2 | 189 | |
![]() |
84.1 | 190 | * Команда относится к полю {{code language="none"}}command{{/code}} контейнеров в файле манифеста. |
191 | * Параметры относятся к полю {{code language="none"}}args{{/code}} контейнеров в файле манифеста. | ||
![]() |
24.2 | 192 | |
![]() |
50.1 | 193 | === Переменные среды === |
![]() |
24.2 | 194 | |
195 | Настройте переменные среды для подов в виде пар ключ-значение. | ||
196 | |||
![]() |
84.1 | 197 | * **name**: Имя переменной окружения. Задается {{code language="none"}}env.name{{/code}}. |
198 | * **value**: значение переменной, на которую ссылаются. Задается {{code language="none"}}env.value{{/code}}. | ||
![]() |
24.2 | 199 | |
![]() |
85.1 | 200 | Нажмите **From configmap** или **From secret**, чтобы использовать существующий [[**ConfigMap**>>https://wiki.dfcloud.ru/bin/view/%D0%9A%D0%BE%D0%BD%D1%82%D0%B5%D0%B9%D0%BD%D0%B5%D1%80%D0%BD%D0%B0%D1%8F%20%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0/Cloud%20Managed%20Kubernetes/2.%20%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F/01.%20%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F%20%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F/L.%20%D0%A3%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%BE%D0%BC/L04.%20%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0%20%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0/L04.03.%20%D0%9A%D0%B0%D1%80%D1%82%D1%8B%20%D0%BA%D0%BE%D0%BD%D1%84%D0%B8%D0%B3%D1%83%D1%80%D0%B0%D1%86%D0%B8%D0%B8/]] или [[секретную переменную>>https://wiki.dfcloud.ru/bin/view/%D0%9A%D0%BE%D0%BD%D1%82%D0%B5%D0%B9%D0%BD%D0%B5%D1%80%D0%BD%D0%B0%D1%8F%20%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0/Cloud%20Managed%20Kubernetes/2.%20%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F/01.%20%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F%20%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F/L.%20%D0%A3%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%BE%D0%BC/L04.%20%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0%20%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0/L04.01.%20%D0%A1%D0%B5%D0%BA%D1%80%D0%B5%D1%82%D0%BD%D1%8B%D0%B5%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5/]]. |
![]() |
24.2 | 201 | |
![]() |
50.1 | 202 | === Среда безопасности контейнера === |
![]() |
28.1 | 203 | |
![]() |
86.1 | 204 | Среда безопасности определяет [[привилегии и параметры управления доступом>>https://kubernetes.io/docs/concepts/security/pod-security-policy/]] для пода или контейнера. |
![]() |
28.1 | 205 | |
![]() |
50.1 | 206 | === Синхронизация часового пояса хоста === |
![]() |
28.1 | 207 | |
![]() |
86.1 | 208 | Часовой пояс контейнера должен соответствовать часовому поясу [[хоста>>https://wiki.dfcloud.ru/bin/view/Glossary/%D0%A5%D0%BE%D1%81%D1%82]] после синхронизации. |
![]() |
28.1 | 209 | |
![]() |
50.1 | 210 | = Обновление стратегии = |
![]() |
29.3 | 211 | |
![]() |
32.1 | 212 | ---- |
![]() |
29.3 | 213 | |
![]() |
50.1 | 214 | == Обновление пода == |
![]() |
29.3 | 215 | |
![]() |
32.1 | 216 | Стратегии обновления различаются для разных рабочих нагрузок. |
![]() |
30.2 | 217 | |
![]() |
50.1 | 218 | === Развертывание приложений === |
![]() |
30.2 | 219 | |
![]() |
70.1 | 220 | Поле {{code language="none"}}.spec.strategy{{/code}} указывает стратегию, используемую для замены старых подов новыми. {{code language="none"}}.spec.strategy.type{{/code}} может быть **Recreate** или **Rolling Update**. {{code language="none"}}Rolling Update{{/code}} — значение по умолчанию. |
![]() |
32.1 | 221 | |
![]() |
86.1 | 222 | * **Rolling Update **(рекомендованное значение для выбора). Последовательное обновление означает, что экземпляры старой версии постепенно заменяются новыми. В процессе обновления трафик балансируется по нагрузке и распределяется между старым и новым экземплярами одновременно, поэтому работа сервиса не прерывается. |
223 | * **Simultaneous Update**. Все существующие поды удаляются до создания новых. | ||
![]() |
33.1 | 224 | |
225 | {{warning}} | ||
![]() |
87.1 | 226 | Во время процесса [[обновления>>https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy]] работа сервиса прерывается. |
![]() |
33.1 | 227 | {{/warning}} |
228 | |||
![]() |
70.1 | 229 | === Набор состояния === |
![]() |
33.2 | 230 | |
![]() |
70.1 | 231 | Раскрывающееся меню в разделе **Update Strategy** обозначается полем {{code language="none"}}.spec.updateStrategy{{/code}} в файле манифеста. Поле позволяет обрабатывать обновления контейнеров подов, тегов, запросов ресурсов или ограничений, аннотаций. Предусмотрены две стратегии: |
![]() |
33.2 | 232 | |
![]() |
80.1 | 233 | * **Rolling Update **(рекомендованная). Если {{code language="none"}}.spec.template{{/code}} обновлен, поды в StatefulSet будут автоматически удалены, а новые поды будут созданы в качестве замены. Поды обновляются в обратном порядке, последовательно удаляются и создаются. Новое обновление пода не начнется, пока предыдущий не заработает после его обновления |
234 | * **Update on Deletion**. Если {{code language="none"}}.spec.template{{/code}} обновлен, поды в StatefulSet не будут обновляться автоматически. Необходимо вручную удалить старые поды, чтобы контроллер мог создавать новые | ||
![]() |
33.2 | 235 | |
![]() |
71.1 | 236 | Более подробно в [[статье>>https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies]]. |
![]() |
33.2 | 237 | |
![]() |
70.1 | 238 | === Набор даемона === |
![]() |
33.2 | 239 | |
![]() |
88.1 | 240 | Раскрывающееся меню в разделе **Update Strategy **обозначается полем {{code language="none"}}.spec.updateStrategy{{/code}} набора [[даемонов>>https://wiki.dfcloud.ru/bin/view/Glossary/%D0%94%D0%B5%D0%BC%D0%BE%D0%BD]] файла манифеста. Набор позволяет обрабатывать [[обновления контейнеров>>https://kubernetes.io/docs/tasks/manage-daemon/update-daemon-set/#daemonset-update-strategy]] подов, тегов, запросов ресурсов или ограничений, аннотаций. Предусмотрены две стратегии: |
![]() |
33.3 | 241 | |
![]() |
88.1 | 242 | * **Rolling Update **(рекомендованная). Если {{code language="none"}}.spec.template{{/code}} обновлен, старые поды набора даемонов удаляются, а новые создаются автоматически. В течение всего процесса обновления на каждой ноде работает не более одного пода набора даемонов. |
![]() |
87.1 | 243 | * **Update on Deletion**. Если {{code language="none"}}.spec.template{{/code}} обновлен, новые поды набора даемонов создаются только при ручном удалении старых. |
![]() |
34.2 | 244 | |
![]() |
50.1 | 245 | == Параметры непрерывного обновления == |
![]() |
34.2 | 246 | |
![]() |
50.1 | 247 | === Развертывание приложений === |
![]() |
34.2 | 248 | |
![]() |
43.2 | 249 | Параметры непрерывного обновления в развертывании отличаются от параметров набора состояния. |
![]() |
34.3 | 250 | |
![]() |
80.1 | 251 | * **Maximum Unavailable Pods**. Максимальное количество подов, которые могут быть недоступны во время обновления. Задается параметром {{code language="none"}}maxUnreachable{{/code}}. Значение по умолчанию — 25% |
252 | * **Maximum Extra Pods**. Максимальное количество подов, которое можно запланировать сверх желаемого количества. Задается параметром {{code language="none"}}maxSurge{{/code}}. Значение по умолчанию — 25% | ||
![]() |
34.3 | 253 | |
![]() |
50.1 | 254 | === Набор состояния === |
![]() |
36.2 | 255 | |
![]() |
53.1 | 256 | **Ordinal for Dividing Pod Replicas**: когда вы разделяете обновление, все поды с порядковым номером, большим или равным установленным в разделе значением, обновляются при обновлении спецификации пода StatefulSet. Это поле определяется параметром {{code language="none"}}.spec.updateStrategy.rollingUpdate.partition{{/code}}. Значение параметра по умолчанию равно 0. |
![]() |
36.2 | 257 | |
![]() |
71.1 | 258 | Более подробно в [[статье>>https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#partitions]]. |
![]() |
36.2 | 259 | |
![]() |
50.1 | 260 | === Набор даемона === |
![]() |
36.2 | 261 | |
![]() |
48.1 | 262 | Параметры последовательного обновления в наборе даемона отличаются от набора состояния. |
![]() |
36.2 | 263 | |
![]() |
88.1 | 264 | * **Maximum Unavailable Pods**: максимальное количество подов, которые могут быть недоступны во время обновления. Задается параметром {{code language="none"}}maxUnreachable{{/code}}. Значение по умолчанию — 20%. |
265 | * **Minimum Running Time for Pod Readiness**: минимальное количество секунд, прежде чем вновь созданный под DaemonSet будет считаться доступным. Задается параметром {{code language="none"}}minReadySeconds{{/code}}. Значение по умолчанию — 0. | ||
![]() |
36.2 | 266 | |
![]() |
50.1 | 267 | == Среда безопасности пода == |
![]() |
37.1 | 268 | |
![]() |
89.1 | 269 | Среда безопасности пода определяет [[привилегии и параметры управления доступом>>https://kubernetes.io/docs/concepts/security/pod-security-policy/]] для пода или контейнера. |
![]() |
37.1 | 270 | |
![]() |
50.1 | 271 | == Правила планирования пода == |
![]() |
37.1 | 272 | |
![]() |
91.1 | 273 | При необходимости выберите режимы развертывания, чтобы переключаться между [[соответствием и анти-соответствием>>https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity]] между подами. Привязка между подами указывается как поле {{code language="none"}}podAffinity{{/code}} поля {{code language="none"}}affinity{{/code}}, а антипривязка между блоками — как поле {{code language="none"}}podAntiAffinity{{/code}}. Для {{code language="none"}}podAffinity{{/code}} и {{code language="none"}}podAntiAffinity{{/code}} задано значение {{code language="none"}}selectedDuringSchedulingIgnoredDuringExecution{{/code}}. При необходимости нажмите кнопку **Edit YAML** в правом верхнем углу, чтобы увидеть детали поля. |
![]() |
38.1 | 274 | |
![]() |
89.1 | 275 | * **Децентрализованное планирование** — правила раздельного существования между подами (affinity-правила). |
276 | * **Централизованное планирование** — правила совместного существования между подами. | ||
![]() |
90.1 | 277 | * **Пользовательские правила** — пользовательские правила планирования. |
![]() |
38.1 | 278 | |
![]() |
71.1 | 279 | **[[В начало>>doc:Контейнерная разработка.Cloud Managed Kubernetes.WebHome]] **🡱 |
280 | **[[К следующему разделу>>doc:Контейнерная разработка.Cloud Managed Kubernetes.2\. Инструкция.01\. Инструкция пользователя.L\. Управление проектом.L02\. Рабочие нагрузки приложений.L02\.09\. Горизонтальное автомасштабирование подов.WebHome]] 🡲** | ||
281 | **[[К предыдущему разделу>>doc:Контейнерная разработка.Cloud Managed Kubernetes.2\. Инструкция.01\. Инструкция пользователя.L\. Управление проектом.L02\. Рабочие нагрузки приложений.L02\.07\. Routes.WebHome]] **🡰 |