Учебники

Кубернетес — API

Kubernetes API служит основой для декларативной схемы конфигурации системы. Инструмент командной строки Kubectl можно использовать для создания, обновления, удаления и получения объекта API. Kubernetes API выступает коммуникатором среди различных компонентов Kubernetes.

Добавление API в Kubernetes

Добавление нового API в Kubernetes добавит новые функции в Kubernetes, которые повысят функциональность Kubernetes. Однако наряду с этим также увеличатся стоимость и ремонтопригодность системы. Чтобы создать баланс между стоимостью и сложностью, для него есть несколько наборов.

Добавляемый API должен быть полезен для более чем 50% пользователей. Другого способа реализации функциональности в Кубернетесе нет. Исключительные обстоятельства обсуждаются на собрании сообщества Kubernetes, а затем добавляется API.

Изменения API

Чтобы расширить возможности Kubernetes, в систему постоянно вносятся изменения. Это сделано командой Kubernetes, чтобы добавить функциональность в Kubernetes, не удаляя и не влияя на существующую функциональность системы.

Чтобы продемонстрировать общий процесс, вот (гипотетический) пример —

  • Пользователь помещает объект Pod в / api / v7beta1 / …

  • JSON распаковывается в структуру v7beta1.Pod

  • Значения по умолчанию применяются к v7beta1.Pod

  • V7beta1.Pod преобразуется в структуру api.Pod

  • Api.Pod проверяется, и любые ошибки возвращаются пользователю

  • Api.Pod преобразуется в v6.Pod (потому что v6 является последней стабильной версией)

  • V6.Pod собирается в JSON и записывается в etcd

Пользователь помещает объект Pod в / api / v7beta1 / …

JSON распаковывается в структуру v7beta1.Pod

Значения по умолчанию применяются к v7beta1.Pod

V7beta1.Pod преобразуется в структуру api.Pod

Api.Pod проверяется, и любые ошибки возвращаются пользователю

Api.Pod преобразуется в v6.Pod (потому что v6 является последней стабильной версией)

V6.Pod собирается в JSON и записывается в etcd

Теперь, когда у нас есть объект Pod, пользователь может получить этот объект в любой поддерживаемой версии API. Например —

  • Пользователь ПОЛУЧАЕТ Pod из / api / v5 / …

  • JSON читается из etcd и распаковывается в структуру v6.Pod

  • Значения по умолчанию применяются к v6.Pod

  • V6.Pod преобразуется в структуру api.Pod

  • Api.Pod преобразуется в структуру v5.Pod

  • V5.Pod маршалируется в JSON и отправляется пользователю

Пользователь ПОЛУЧАЕТ Pod из / api / v5 / …

JSON читается из etcd и распаковывается в структуру v6.Pod

Значения по умолчанию применяются к v6.Pod

V6.Pod преобразуется в структуру api.Pod

Api.Pod преобразуется в структуру v5.Pod

V5.Pod маршалируется в JSON и отправляется пользователю

Смысл этого процесса заключается в том, что изменения API должны выполняться аккуратно и с обратной совместимостью.

Управление версиями API

Чтобы упростить поддержку нескольких структур, Kubernetes поддерживает несколько версий API, каждая с разными путями API, такими как / api / v1 или / apsi / extensions / v1beta1.

Стандарты управления версиями в Kubernetes определены в нескольких стандартах.

Эта версия содержит альфа (например, v1alpha1)

Эта версия может содержать ошибки; включенная версия может иметь ошибки

Поддержка ошибок может быть прекращена в любой момент времени.

Рекомендуется использовать только в краткосрочном тестировании, поскольку поддержка может присутствовать не всегда.

Название версии содержит бета-версию (например, v2beta3)

Код полностью протестирован, и разрешенная версия должна быть стабильной.

Поддержка этой функции не будет прекращена; Там могут быть небольшие изменения.

Рекомендуется только для не критичного для бизнеса использования из-за возможных несовместимых изменений в последующих выпусках.

Имя версии vX, где X — целое число.

Стабильные версии функций появятся в выпущенном программном обеспечении для многих последующих версий.