Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
k8s:use [2024/09/03 15:20] admin |
k8s:use [2024/11/14 11:14] (текущий) admin |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ==== Deployments ==== | + | ===== Deployments |
Контроллер развертывания (Deployment controller) предоставляет возможность декларативного обновления для объектов типа поды (Pods) и наборы реплик (ReplicaSet)\\ | Контроллер развертывания (Deployment controller) предоставляет возможность декларативного обновления для объектов типа поды (Pods) и наборы реплик (ReplicaSet)\\ | ||
Строка 112: | Строка 112: | ||
- | === Docker Registry === | + | ==== Docker Registry |
Поле " | Поле " | ||
- | == Private Registry == | + | === Private Registry |
K8s поддерживает несколько способов передачи кредлов для авторизации, | K8s поддерживает несколько способов передачи кредлов для авторизации, | ||
Строка 199: | Строка 199: | ||
limits: | limits: | ||
cpu: " | cpu: " | ||
+ | memory: " | ||
--- | --- | ||
resources: | resources: | ||
limits: | limits: | ||
cpu: " | cpu: " | ||
+ | memory: " | ||
--- | --- | ||
resources: | resources: | ||
limits: | limits: | ||
cpu: " | cpu: " | ||
+ | memory: " | ||
</ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ==== Пробы приложения k8s ==== | ||
+ | Описываются в деплойменте, | ||
+ | У обоих есть параметры: | ||
+ | |||
+ | |||
+ | === liveness === | ||
+ | Проверка " | ||
+ | По умолчанию, | ||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | <code yaml> | ||
+ | spec: | ||
+ | containers: | ||
+ | - image: quay.io/< | ||
+ | name: my-application-nginx | ||
+ | imagePullPolicy: | ||
+ | ports: | ||
+ | - containerPort: | ||
+ | protocol: TCP | ||
+ | livenessProbe: | ||
+ | exec: | ||
+ | command: | ||
+ | - /bin/sh | ||
+ | - -c | ||
+ | - "[ -f / | ||
+ | initialDelaySeconds: | ||
+ | periodSeconds: | ||
+ | - image: quay.io/< | ||
+ | name: my-application-app-server | ||
+ | imagePullPolicy: | ||
+ | ports: | ||
+ | - containerPort: | ||
+ | protocol: TCP | ||
+ | livenessProbe: | ||
+ | exec: | ||
+ | command: | ||
+ | - /bin/sh | ||
+ | - -c | ||
+ | - "/ | ||
+ | initialDelaySeconds: | ||
+ | periodSeconds: | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | === readiness === | ||
+ | Проверка готовности приложения к принятию сетевого трафика, | ||
+ | При фейле, среда выводит под из балансера, | ||
+ | |||
+ | < | ||
+ | < | ||
+ | <code yaml> | ||
+ | spec: | ||
+ | containers: | ||
+ | - image: quay.io/< | ||
+ | name: my-application-nginx | ||
+ | imagePullPolicy: | ||
+ | ports: | ||
+ | - containerPort: | ||
+ | protocol: TCP | ||
+ | readinessProbe: | ||
+ | httpGet: | ||
+ | scheme: HTTPS | ||
+ | path: /index.html | ||
+ | port: 8443 | ||
+ | initialDelaySeconds: | ||
+ | periodSeconds: | ||
+ | |||
+ | - image: quay.io/< | ||
+ | name: my-application-app-server | ||
+ | imagePullPolicy: | ||
+ | ports: | ||
+ | - containerPort: | ||
+ | protocol: TCP | ||
+ | readinessProbe: | ||
+ | httpGet: | ||
+ | scheme: HTTP | ||
+ | path: /healthz | ||
+ | port: 8080 | ||
+ | initialDelaySeconds: | ||
+ | periodSeconds: | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Завершение приложения ==== | ||
+ | **terminationGracePeriodSecond** - макс период который k8s ожидает после отправки SIGTERM, перед отправкой " | ||
+ | Контейнеру дается это время для корректного, | ||
+ | Задается в блоке " | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | === preStop === | ||
+ | Спец команда или HTTP-запрос, | ||
+ | А, похоже это альтернатива сигнала " | ||
+ | Хотя даже не альтернатива а доп код, для выполнения каких либо действий\\ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== Приоритет подов ==== | ||
+ | В отличии от приоритета Linux, который задает как часто процесс будет исполняться, | ||
+ | |||
+ | Приоритет задается на под, целое число, чем больше тем выше приоритет\\ | ||
+ | |||
+ | |||
+ | === PriorityClass === | ||
+ | Это объект кластера, | ||
+ | Есть системные классы, | ||
+ | |||
+ | Есть доп поля:\\ | ||
+ | * globalDefault - задает этот класс классом по умолчанию для всех подов | ||
+ | * description - описание | ||
+ | * preemptionPolicy - доп политика поведения (см гугл) | ||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | Манифест класса | ||
+ | <code yaml> | ||
+ | apiVersion: scheduling.k8s.io/ | ||
+ | kind: PriorityClass | ||
+ | metadata: | ||
+ | name: high-priority | ||
+ | value: 1000000 | ||
+ | globalDefault: | ||
+ | preemptionPolicy: | ||
+ | description: | ||
+ | </ | ||
+ | |||
+ | <code bash> | ||
+ | kubectl get pc | ||
+ | </ | ||
+ | |||
+ | Применение | ||
+ | <code yaml> | ||
+ | apiVersion: v1 | ||
+ | kind: Pod | ||
+ | metadata: | ||
+ | name: openresty | ||
+ | labels: | ||
+ | app: openresty | ||
+ | spec: | ||
+ | containers: | ||
+ | - name: openresty | ||
+ | image: openresty: | ||
+ | imagePullPolicy: | ||
+ | priorityClassName: | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== PodDisruptionBudget ==== | ||
+ | |||
+ | Позволяет контролировать какое кол-во подов приложения могут быть недоступны в момент времени. Т.е позволяет держать запущенными минимально необходимое кол-во подов приложения\\ | ||
+ | :!: PDB помогает только в случае добровольного прерывания, | ||
+ | |||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | <code yaml> | ||
+ | apiVersion: policy/ | ||
+ | kind: PodDisruptionBudget | ||
+ | metadata: | ||
+ | name: app-pdb | ||
+ | spec: | ||
+ | maxUnavailable: | ||
+ | selector: | ||
+ | matchLabels: | ||
+ | app: app | ||
+ | </ | ||
+ | |||
+ | |||
+ | <code yaml> | ||
+ | apiVersion: policy/ | ||
+ | kind: PodDisruptionBudget | ||
+ | metadata: | ||
+ | name: app-pdb | ||
+ | spec: | ||
+ | minAvailable: | ||
+ | selector: | ||
+ | matchLabels: | ||
+ | app: app | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== Примеры ==== | ||
+ | |||
+ | < | ||
+ | < | ||
+ | <code yaml> | ||
+ | apiVersion: v1 | ||
+ | kind: Pod | ||
+ | metadata: | ||
+ | name: named-port-pod | ||
+ | labels: | ||
+ | app: named-port-pod | ||
+ | spec: | ||
+ | containers: | ||
+ | - name: echoserver | ||
+ | image: gcr.io/ | ||
+ | ports: | ||
+ | - name: pod-custom-port | ||
+ | containerPort: | ||
+ | --- | ||
+ | apiVersion: v1 | ||
+ | kind: Service | ||
+ | metadata: | ||
+ | name: named-port-svc | ||
+ | spec: | ||
+ | ports: | ||
+ | - port: 80 | ||
+ | targetPort: pod-custom-port | ||
+ | selector: | ||
+ | app: named-port-pod | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | |||
+ | <code yaml> | ||
+ | </ | ||
+ | </ | ||
+ |