Nazwy i identyfikatory objektów

Każdy obiekt w Twoim klastrze ma Nazwę, która jest unikalna dla tego typu zasobu. Każdy obiekt Kubernetesa posiada również UID, który jest unikalny w całym Twoim klastrze.

Na przykład, w jednym namespace można mieć tylko jeden Pod o nazwie myapp-1234, ale można mieć jeden Pod i jeden Deployment, które są nazwane myapp-1234.

Dla nieunikalnych atrybutów dostarczonych przez użytkownika, Kubernetes udostępnia etykiety oraz adnotacje.

Nazwy

Ciąg znaków dostarczony przez klienta, który odnosi się do obiektu w adresie URL zasobu, na przykład /api/v1/pods/some-name.

W danym momencie tylko jeden obiekt danego typu może mieć określoną nazwę. Jednak po usunięciu tego obiektu można utworzyć nowy o tej samej nazwie.

Nazwy muszą być unikalne we wszystkich wersjach API dla tego samego zasobu. Zasoby API są rozróżniane na podstawie grupy API, typu zasobu, przestrzeni nazw (dla zasobów przestrzeniozależnych) oraz nazwy. Innymi słowy, wersja API jest nieistotna w tym kontekście.

Informacja:

W przypadkach, gdy obiekty reprezentują fizyczną jednostkę, jak Node reprezentujący fizycznego hosta, jeśli host jest odtworzony pod tą samą nazwą bez usuwania i ponownego tworzenia Node, Kubernetes traktuje nowy host jako stary, co może prowadzić do niespójności.

Serwer może wygenerować nazwę, gdy zamiast name w żądaniu utworzenia zasobu podano generateName. Gdy używane jest generateName, podana wartość służy jako prefiks nazwy, do którego serwer dodaje wygenerowany sufiks. Nawet jeśli nazwa jest generowana, może wystąpić konflikt z istniejącymi nazwami, co skutkuje odpowiedzią HTTP 409. W Kubernetes v1.31 i nowszych wersjach jest to znacznie mniej prawdopodobne, ponieważ serwer podejmuje do 8 prób wygenerowania unikalnej nazwy przed zwróceniem odpowiedzi HTTP 409.

Poniżej znajdują się cztery typy często używanych ograniczeń nazw dla zasobów.

Nazwy subdomen DNS

Większość typów zasobów wymaga nazwy, która może być używana jako nazwa poddomeny DNS, zgodnie z definicją w RFC 1123. Oznacza to, że nazwa musi:

  • zawierać nie więcej niż 253 znaki
  • zawierać tylko małe litery alfanumeryczne, '-' lub '.'
  • zaczynać się od znaku alfanumerycznego
  • kończyć się znakiem alfanumerycznym

Nazwy etykiet zgodnie z RFC 1123

Niektóre typy zasobów wymagają, aby ich nazwy były zgodne ze standardem etykiet DNS, jak zdefiniowano w RFC 1123. Oznacza to, że nazwa musi:

  • zawierać maksymalnie 63 znaków
  • zawierać tylko małe litery alfanumeryczne lub '-'
  • zaczynać się od litery alfabetu
  • kończyć się znakiem alfanumerycznym

Informacja:

Gdy bramka funkcji RelaxedServiceNameValidation jest włączona, nazwy obiektów usługi (ang. Service) mogą rozpoczynać się od cyfry.

Nazwy etykiet zgodne z RFC 1035

Niektóre typy zasobów wymagają, aby ich nazwy spełniały standardy etykiet DNS zgodnie z definicją w RFC 1035. Oznacza to, że nazwa musi:

  • zawierać maksymalnie 63 znaków
  • zawierać tylko małe litery alfanumeryczne lub '-'
  • zaczynać się od litery alfabetu
  • kończyć się znakiem alfanumerycznym

Informacja:

Chociaż RFC 1123 technicznie pozwala, aby etykiety zaczynały się od cyfr, obecna implementacja Kubernetesa wymaga, aby zarówno etykiety (ang. label) zgodne z RFC 1035, jak i RFC 1123 zaczynały się od znaku alfabetycznego. Wyjątkiem jest sytuacja, gdy dla obiektów typu Service jest włączona brama funkcji RelaxedServiceNameValidation, co pozwala na to, aby nazwy usług zaczynały się od cyfr.

Nazwy segmentów ścieżki

Niektóre typy zasobów wymagają, aby ich nazwy mogły być bezpiecznie kodowane jako segment ścieżki. Innymi słowy, nazwa nie może być "." ani ".." oraz nie może zawierać "/" ani "%".

Oto przykładowy manifest dla Poda o nazwie nginx-demo.

apiVersion: v1
kind: Pod
metadata:
  name: nginx-demo
spec:
  containers:
  - name: nginx
    image: nginx:1.14.2
    ports:
    - containerPort: 80

Informacja:

Niektóre typy zasobów mają dodatkowe ograniczenia dotyczące ich nazw.

UIDy

Unikalny identyfikator obiektu generowany automatycznie przez system Kubernetes.

Każdy obiekt utworzony w trakcie całego cyklu życia klastra Kubernetesa posiada unikalny UID. Jego celem jest rozróżnianie historycznych wystąpień podobnych jednostek.

UID-y Kubernetesa to uniwersalne unikalne identyfikatory (znane również jako UUID). UUID są ustandaryzowane jako ISO/IEC 9834-8 oraz jako ITU-T X.667.

Co dalej?


Ostatnia modyfikacja February 24, 2026 at 9:12 AM PST: [pl] Fix RFC 1123 label names documentation - sync with PR 52606 (0eb4d93411)