Kubelet Pod Info gRPC API
Kubernetes v1.35 [alpha](стандартно вимкнено)API Kubelet Pod Info gRPC дає змогу локальним компонентам вузла отримувати інформацію про поди, що працюють на цьому вузлі, безпосередньо від kubelet. Це підвищує надійність, усуваючи залежність від сервера API Kubernetes для отримання локальної інформації про вузол, а також зменшує навантаження на панель управління.
Доступ до цього API обмежено локальними адміністраторами (зазвичай root) через права доступу до файлу на UNIX-сокеті.
Точка доступу
API слухає на UNIX-сокеті за адресою: /var/lib/kubelet/pods/kubelet.sock
Примітка:
Цей API не підтримується на вузлах Windows.Операції
API надає наступні методи gRPC:
ListPods
Повертає список усіх подів, які наразі керуються kubelet на вузлі.
WatchPods
Повертає потік оновлень подів. Коли стан пода змінюється локально, kubelet надсилає оновлену інформацію про под через потік.
GetPod
Повертає інформацію про конкретний под, ідентифікований за його UID.
Визначення API
API використовує наступне визначення protobuf:
import "google/protobuf/field_mask.proto";
import "k8s.io/api/core/v1/generated.proto";
service Pods {
// ListPods повертає список об’єктів v1.Pod, який за бажанням можна відфільтрувати за допомогою маски полів.
rpc ListPods(PodListRequest) returns (PodListResponse) {}
// WatchPods повертає потік оновлень Pod, який за бажанням можна відфільтрувати за допомогою маски полів.
rpc WatchPods(PodWatchRequest) returns (stream PodWatchResponse) {}
// GetPod повертає об’єкт v1.Pod для заданого UID пода, за бажанням можна відфільтрувати за допомогою маски полів.
rpc GetPod(PodGetRequest) returns (PodGetResponse) {}
}
message PodListRequest {
// Опційна маска полів у метаданих gRPC, щоб вказати, які поля пода повертати.
}
message PodListResponse {
repeated v1.Pod pods = 1;
}
message PodWatchRequest {
// Опційна маска полів у метаданих gRPC, щоб вказати, які поля пода повертати.
}
message PodWatchResponse {
v1.Pod pod = 1;
}
message PodGetRequest {
string podUID = 1;
// Опційна маска полів у метаданих gRPC, щоб вказати, які поля пода повертати.
}
message PodGetResponse {
v1.Pod pod = 1;
}
Вибір полів
API підтримує google.protobuf.FieldMask, щоб дозволити клієнтам запитувати лише конкретні поля, які їм потрібні (наприклад, status.phase, status.podIPs). Це забезпечує ефективну передачу даних. Якщо маска полів не надана, повертається повний об'єкт v1.Pod.
Надійність та доступність
API надає найактуальнішу інформацію, відому локально kubelet, отриману з його внутрішнього кешу та узгодження з середовищем виконання контейнерів. Він залишається доступним навіть у разі втрати вузлом звʼязку з панеллю управління Kubernetes.
Якщо kubelet нещодавно перезапустився і його внутрішній стан ще не повністю ініціалізований, API повертає помилку gRPC FAILED_PRECONDITION.