TGViewer
Андрей с кубами | K8s Андрей с кубами | K8s @k8s_and_experts · 36 subscribers
Post #25 47
#глоссарий

Ооочень распространенная боль новичков:

Я скопировал YAML из документации, поменял пару строк — и получил ошибку mapping values are not allowed here. Что не так?


Спойлер: в 90% случаев - лишний пробел. Но за такой мелочью стоит целая философия работы с Kubernetes. Сегодня разберемся с этим😎

YAML (YAML Ain't Markup Language) - формат сериализации данных, человекочитаемая альтернатива JSON. Kubernetes использует его как основной способ описания желаемого состояния кластера

Когда мы пишем kubectl apply -f deployment.yaml, то мы передаем кластеру: «Вот какое состояние я хочу видеть», а Kubernetes, в свою очередь, сам разбирается, как к этому состоянию прийти

Любой YAML-файл в Kubernetes имеет строго определённую структуру. Примерно вот такую:


apiVersion: apps/v1 # Версия API, в которой описан объект
kind: Deployment # Тип объекта (Pod, Service, Deployment...)
metadata: # Метаданные: имя, namespace, лейблы
name: my-app
namespace: production
labels:
app: backend
spec: # Спецификация — "что мы хотим"
replicas: 3
selector: ...
template: ...
status: # Статус — "что есть на самом деле" (только для чтения)
availableReplicas: 3


Ооочень важно! После status мы ничего никогда не пишем сами. Его заполняет контроллер на основе реального состояния. А вот нам нужно заполнить только spec, то есть желаемое состояние

Более того, у YAML есть две ключевые концепции: декларативность и идемпотентность

Декларативность: ты описываешь что ты хочешь, а не как это сделать. Не «создай 3 пода», а «пусть всегда будет 3 пода»

Идемпотентность: `kubectl apply -f file.yaml ` можно запустить 1 раз, 10 раз или 1000 раз - результат будет одинаковым. Если состояние уже соответствует желаемому, Kubernetes ничего не изменит


А теперь к подводным камням:
• Отступы - синтаксис. В YAML нельзя использовать табы, только пробелы (обычно 2). Один лишний пробел и весь документ поломался

• Регистр имеет значение. `apiVersion `и `apiversion `- это разные вещи

• Многострочные строки. Используй `|` для сохранения переносов или `>` для схлопывания в одну строку
More from @k8s_and_experts
  1. Oct 9, 2026Шарарам, дорогие подписчики🥰 Как прошла ваша неделя? Надеемся, вы всё успели и уже отдыха…
  2. Oct 9, 2026#глоссарий В Kubernetes нет встроенной сети. Это может удивить, но оркестратор сознательно…
  3. Oct 7, 2026Post #43
  4. Oct 6, 2026#глоссарий Тот кто начинал работать с Kubernetes с большой долей вероятности хоть раз заду…
  5. Oct 5, 2026#морнинг_рутин Добрейшего вечерочка, дорогие подписчики👍 Мы знаем, что уже совсем не морн…
  6. Oct 5, 2026Post #39
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →