You are viewing documentation for Kubernetes version: v1.20
Kubernetes v1.20 документация больше не поддерживается. Версия, которую вы сейчас просматриваете, является статической. Актуальную документацию вы можете найти последняя версия.
Изучение объектов Kubernetes
На этой странице объясняется, как объекты Kubernetes представлены в API Kubernetes, и как их можно определить в формате .yaml
.
Изучение объектов Kubernetes
Объекты Kubernetes — сущности, которые хранятся в Kubernetes. Kubernetes использует их для представления состояния кластера. В частности, они описывают следующую информацию:
- Какие контейнеризированные приложения запущены (и на каких узлах).
- Доступные ресурсы для этих приложений.
- Стратегии управления приложения, которые относятся, например, к перезапуску, обновлению или отказоустойчивости.
После создания объекта Kubernetes будет следить за существованием объекта. Создавая объект, вы таким образом указываете системе Kubernetes, какой должна быть рабочая нагрузка кластера; это требуемое состояние кластера.
Для работы с объектами Kubernetes – будь то создание, изменение или удаление — нужно использовать API Kubernetes. Например, при использовании CLI-инструмента kubectl
, он обращается к API Kubernetes. С помощью одной из клиентской библиотеки вы также можете использовать API Kubernetes в собственных программах.
Спецификация и статус объекта
Почти в каждом объекте Kubernetes есть два вложенных поля-объекта, которые управляют конфигурацией объекта: spec
и status
.
При создании объекта в поле spec
указывается требуемое состояние (описание характеристик, которые должны быть у объекта).
Поле status
описывает текущее состояние объекта, которое создаётся и обновляется самим Kubernetes и его компонентами. Плоскость управления Kubernetes непрерывно управляет фактическим состоянием каждого объекта, чтобы оно соответствовало требуемому состоянию, которое было задано пользователем.
Например: Deployment — это объект Kubernetes, представляющий работающее приложение в кластере. При создании объекта Deployment вы можете указать в его поле spec
, что хотите иметь три реплики приложения. Система Kubernetes получит спецификацию объекта Deployment и запустит три экземпляра приложения, таким образом обновит статус (состояние) объекта, чтобы он соответствовал заданной спецификации. В случае сбоя одного из экземпляров (это влечет за собой изменение состояние), Kubernetes обнаружит несоответствие между спецификацией и статусом и исправит его, т.е. активирует новый экземпляр вместо того, который вышел из строя.
Для получения дополнительной информации о спецификации объекта, статусе и метаданных смотрите документ с соглашениями API Kubernetes.
Описание объекта Kubernetes
При создании объекта в Kubernetes нужно передать спецификацию объекта, которая содержит требуемое состояние, а также основную информацию об объекте (например, его имя). Когда вы используете API Kubernetes для создания объекта (напрямую либо через kubectl
), соответствующий API-запрос должен включать в теле запроса всю указанную информацию в JSON-формате. В большинстве случаев вы будете передавать kubectl
эти данные, записанные в файле .yaml. Тогда инструмент kubectl
преобразует их в формат JSON при выполнении запроса к API.
Ниже представлен пример .yaml
-файла, в котором заданы обязательные поля и спецификация объекта, необходимая для объекта Deployment в Kubernetes:
apiVersion: apps/v1 # до версии 1.9.0 нужно использовать apps/v1beta2
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 2 # запускает 2 пода, созданных по шаблону
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
Один из способов создания объекта Deployment с помощью файла .yaml
, показанного выше — использовать команду kubectl apply
, которая принимает в качестве аргумента файл в формате .yaml
. Например:
kubectl apply -f https://k8s.io/examples/application/deployment.yaml --record
Вывод будет примерно таким:
deployment.apps/nginx-deployment created
Обязательные поля
В файле .yaml
создаваемого объекта Kubernetes необходимо указать значения для следующих полей:
apiVersion
— используемая для создания объекта версия API Kuberneteskind
— тип создаваемого объектаmetadata
— данные, позволяющие идентифицировать объект (name
,UID
и необязательное полеnamespace
)spec
— требуемое состояние объекта
Конкретный формат поля-объекта spec
зависит от типа объекта Kubernetes и содержит вложенные поля, предназначенные только для используемого объекта. В справочнике API Kubernetes можно найти формат спецификации любого объекта Kubernetes.
Например, формат spec
для объекта Pod находится в ядре PodSpec v1, а формат spec
для Deployment — в DeploymentSpec v1 apps.
Что дальше
- Обзор API Kubernetes более подробно объясняет некоторые из API-концепций
- Познакомиться с наиболее важными и основными объектами в Kubernetes, например, с подами.
- Узнать подробнее про контролеры в Kubernetes