0Pricing
Kubernetes Basics · Lekcja

Definicje niestandardowych zasobów (CRD)

Dowiedz się, jak Custom Resource Definitions rozszerzają API Kubernetes o własne typy zasobów — fundament, na którym opierają się Operatory.

Definicje niestandardowych zasobów (CRD) to bezpłatna lekcja Kubernetes Basics na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Kubernetes Basics, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Kubernetes Basics zawiera 4 lekcji w sumie.

Rozszerzanie API Kubernetes

Wbudowane obiekty, takie jak Pody i Deploymenty, nie wyznaczają granicy możliwości. Za pomocą Custom Resource Definition (CRD) można nauczyć Kubernetes zupełnie nowych typów zasobów.

Czym jest zasób niestandardowy

Custom Resource (CR) to instancja zdefiniowanego przez Ciebie typu. Po zainstalowaniu CRD możesz tworzyć CR-y za pomocą kubectl, tak samo jak obiekty natywne.

Budowa CRD

CRD deklaruje nowy rodzaj, jego grupę API, wersję i zakres działania (w przestrzeni nazw lub w całym klastrze).

apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: backups.data.example.com
spec:
  group: data.example.com
  scope: Namespaced
  names:
    plural: backups
    singular: backup
    kind: Backup

Definiowanie schematu

Schemat OpenAPI weryfikuje pola zasobu niestandardowego i odrzuca nieprawidłowe specyfikacje już podczas tworzenia.

versions:
- name: v1
  served: true
  storage: true
  schema:
    openAPIV3Schema:
      type: object
      properties:
        spec:
          type: object
          properties:
            schedule:
              type: string
            retention:
              type: integer

Tworzenie zasobu niestandardowego

Po zastosowaniu CRD możesz tworzyć instancje nowego typu.

apiVersion: data.example.com/v1
kind: Backup
metadata:
  name: nightly-db
spec:
  schedule: '0 2 * * *'
  retention: 7

Praca z CR-ami za pomocą kubectl

Zasoby niestandardowe są pełnoprawnymi obiektami. Możesz je wyświetlać, opisywać i usuwać za pomocą znanych poleceń.

kubectl get backups
kubectl describe backup nightly-db
kubectl delete backup nightly-db

Krótkie nazwy i kolumny tabeli

Możesz definiować krótkie nazwy i niestandardowe kolumny tabeli, aby praca z CR-ami była wygodniejsza.

names:
  shortNames: ['bk']
additionalPrinterColumns:
- name: Schedule
  type: string
  jsonPath: .spec.schedule

CRD to tylko dane

Sam CRD przechowuje jedynie dane w etcd. Nic na nie nie reaguje. Aby Backup rzeczywiście się wykonał, potrzebujesz kontrolera obserwującego te zasoby.

Powiązanie z Operatorami

Operator to kontroler oraz co najmniej jeden CRD. CRD definiuje pożądany stan, a kontroler stale uzgadnia stan rzeczywisty z pożądanym. CRD stanowią fundament, na którym opierają się Operatory.

Wersjonowanie CRD

CRD obsługują wiele wersji wraz z konwersją, dzięki czemu można rozwijać API. Dokładnie jedna wersja jest oznaczona jako wersja przechowywana w etcd.

versions:
- name: v1beta1
  served: true
  storage: false
- name: v1
  served: true
  storage: true

Kiedy używać CRD

  • Chcesz deklaratywnie modelować pojęcie domenowe, takie jak Backup, Database lub Certificate
  • Tworzysz Operatora do automatyzowania operacji
  • Chcesz, aby użytkownicy zarządzali aplikacją za pomocą znanych przepływów pracy kubectl

Szybkie sprawdzenie

Sprawdź swoje rozumienie CRD.

Podsumowanie

Dowiedziałeś się, że CRD rozszerzają API Kubernetes o niestandardowe typy, weryfikowane przez schemat OpenAPI i zarządzane za pomocą zwykłych poleceń kubectl. Sam CRD przechowuje tylko dane; połączenie go z kontrolerem tworzy Operatora, który uzgadnia stan pożądany ze stanem rzeczywistym.

Często zadawane pytania

Czy lekcja „Definicje niestandardowych zasobów (CRD)” jest bezpłatna?

Tak — pełny tekst „Definicje niestandardowych zasobów (CRD)” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Kubernetes Basics, przejdź na CoddyKit PRO. Kurs Kubernetes Basics zawiera 4 lekcji w sumie.

Co nauczysz się w „Definicje niestandardowych zasobów (CRD)”?

Dowiedz się, jak Custom Resource Definitions rozszerzają API Kubernetes o własne typy zasobów — fundament, na którym opierają się Operatory. Ćwiczysz Kubernetes Basics z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Kubernetes Basics?

Nie wymagamy żadnego doświadczenia. Kubernetes Basics w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Definicje niestandardowych zasobów (CRD)”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Kubernetes Basics?

Tak. Każda lekcja Kubernetes Basics zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. StatefulSets dla aplikacji stanowych
  2. DaemonSets dla zadań zależnych od węzła
  3. Poznajemy Kubernetes Operators
  4. Definicje niestandardowych zasobów (CRD)
← Powrót do Kubernetes Basics