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 — целое число.
Стабильные версии функций появятся в выпущенном программном обеспечении для многих последующих версий.