Как kubectl настраивает CRD? - PullRequest
0 голосов
/ 31 марта 2020

В моем кластере kubernetes уже определены некоторые CRD. kubectl может хорошо создавать / обновлять / удалять ресурсы.

Когда я пытался выполнить эти операции с программой, я нашел способ поиска с помощью инструмента ниже:

https://github.com/kubernetes/code-generator

Мне интересно, почему kubectl может сделать это из коробки без генерации кода для CRD.

Нужно ли генерировать код для того, чтобы добавить или удалить ресурс CRD?

Спасибо!

1 Ответ

0 голосов
/ 31 марта 2020

Сначала давайте разберемся, что такое CRD.

Ресурс API CustomResourceDefinition позволяет определять пользовательские ресурсы. Определение объекта CRD создает новый пользовательский ресурс с указанным именем и схемой. Kubernetes API обслуживает и обрабатывает хранилище вашего пользовательского ресурса. Имя объекта CRD должно быть действительным именем субдомена DNS .

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

Зачем создавать пользовательских ресурсов :

A resource является конечной точкой в ​​ Kubernetes API , в которой хранится коллекция объектов API определенного вида. Например, встроенный ресурс pods содержит коллекцию объектов Pod.

A пользовательский ресурс является расширением API Kubernetes, которое не обязательно доступно в установка Kubernetes по умолчанию. Он представляет собой настройку конкретной установки Kubernetes. Однако многие основные функции Kubernetes теперь создаются с использованием пользовательских ресурсов, что делает Kubernetes более модульным.

Пользовательские ресурсы могут появляться и исчезать в работающем кластере при динамической регистрации c, и администраторы кластера могут обновлять пользовательские ресурсы независимо от сам кластер. После того, как пользовательский ресурс установлен, пользователи могут создавать и получать к нему доступ с помощью kubectl , так же, как они делают для встроенных ресурсов, таких как Pods .

Поэтому, чтобы ответить на ваш вопрос, если вам нужна функциональность, которой нет в Kubernetes, вам нужно создать ее самостоятельно, используя CRD. Без этого кластер не будет знать, что вы хотите и как его получить.

Если вы ищете примеры использования Kubernetes Client- go, вы можете найти их на официальном GitHub Client- идти / примеры

...