Проверка базовых ресурсов кластера
На этом этапе вы будете проверять базовые ресурсы Kubernetes, такие как поды (Pods), развертывания (Deployments) и сервисы (Services), во всех пространствах имен (Namespaces). Используя флаг -A
(или --all-namespaces
), вы увидите, как ресурсы организованы в рамках всего кластера. Это отличная возможность познакомиться и понять концепцию пространств имен в Kubernetes.
Пространства имен: изоляция ресурсов
Пространства имен - это логические разделы в кластере Kubernetes, которые помогают организовать и управлять ресурсами. Они предоставляют способ группировать связанные объекты и применять политики, контроль доступа и квоты ресурсов на более детальном уровне. Разделяя ресурсы на разные пространства имен, вы можете:
- Улучшить организацию: Группировать связанные рабочие нагрузки (например, по проекту, команде или среде, такой как разработка, тестирование и производство).
- Усилить безопасность и контроль доступа: Ограничить, какие пользователи или учетные записи сервисов могут просматривать или изменять ресурсы в определенном пространстве имен.
- Упростить управление ресурсами: Более эффективно применять ограничения ресурсов, сетевые политики и другие конфигурации на уровне кластера.
Когда вы перечисляете ресурсы с флагом -A
(или --all-namespaces
), вы заметите, что компоненты, относящиеся к системе Kubernetes, находятся в пространстве имен kube-system
, которое предназначено для инфраструктуры на уровне кластера. Пользовательские приложения обычно находятся в пространстве имен default
или других настраиваемых пространствах имен, которые вы определяете.
Пространства имен и ресурсы
flowchart LR
%% User interacts with the cluster via kube-apiserver
User((Developer))
User -->|kubectl get pods -A| API[kube-apiserver]
%% Control Plane Subgraph
subgraph ControlPlane[Control Plane]
API
ETCD[etcd]
SCH[kube-scheduler]
CTLM[kube-controller-manager]
end
API --> ETCD
API --> SCH
API --> CTLM
%% kube-system namespace
subgraph kube-system[Namespace: kube-system]
SysDeployment[Deployment: coredns]
SysPod1[Pod: coredns-xxx]
SysService[Service: kube-dns]
SysDeployment --> SysPod1
SysService --> SysPod1
end
%% default namespace (renamed to avoid parse issues)
subgraph defaultNs[Namespace: default]
DefDeployment[Deployment: my-app]
DefPod1[Pod: my-app-pod1]
DefPod2[Pod: my-app-pod2]
DefService[Service: my-app-service]
DefDeployment --> DefPod1
DefDeployment --> DefPod2
DefService --> DefPod1
DefService --> DefPod2
end
%% dev namespace
subgraph dev[Namespace: dev]
DevDeployment[Deployment: dev-app]
DevPod[Pod: dev-app-pod]
DevService[Service: dev-app-service]
DevDeployment --> DevPod
DevService --> DevPod
end
%% Demonstration of communication
API --> kube-system
API --> defaultNs
API --> dev
На диаграмме:
- Управляющий план (Control Plane) управляет всем кластером, взаимодействуя с узлами и контролируя рабочие нагрузки.
- Пространства имен (такие как
kube-system
, default
и dev
) логически разделяют ресурсы в рамках кластера.
kube-system
содержит компоненты на уровне системы, такие как CoreDNS и kube-dns.
default
обычно используется для общих рабочих нагрузок, здесь представлено развертыванием my-app
.
dev
может представлять среду разработки, изолированную от рабочих нагрузок в производственной среде.
Просматривая ресурсы во всех пространствах имен, вы получите полное представление о том, как эти логические разделы помогают поддерживать организованный и безопасный кластер.
Примеры:
Перечислить все поды во всех пространствах имен:
kubectl get pods -A
Пример вывода:
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-787d4945fb-j8rhx 1/1 Running 0 20m
kube-system etcd-minikube 1/1 Running 0 20m
kube-system kube-apiserver-minikube 1/1 Running 0 20m
kube-system kube-controller-manager-minikube 1/1 Running 0 20m
kube-system kube-proxy-xb9rz 1/1 Running 0 20m
kube-system kube-scheduler-minikube 1/1 Running 0 20m
kube-system storage-provisioner 1/1 Running 1 (20m ago) 20m
Здесь вы видите все поды, связанные с системой, запущенные в пространстве имен kube-system
. Если бы у вас были другие развертывания или сервисы в разных пространствах имен, они также появились бы в этом списке, каждый четко обозначенный своим пространством имен.
Перечислить все развертывания во всех пространствах имен:
kubectl get deployments -A
Пример вывода:
NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE
kube-system coredns 1/1 1 1 20m
Развертывание coredns
находится в пространстве имен kube-system
.
Получить полное представление о всех ресурсах во всех пространствах имен:
kubectl get all -A
Эта команда отображает обзор подов, сервисов и развертываний в разных пространствах имен, помогая вам понять, как эти ресурсы распределены по всему кластеру.
Основные выводы:
- Пространства имен обеспечивают логическую изоляцию и организацию в рамках кластера Kubernetes.
- Различные компоненты и ресурсы Kubernetes организованы в определенные пространства имен (например,
kube-system
для основных служб, default
для общих рабочих нагрузок и дополнительные пространства имен, которые вы создаете).
- Используя
-A
для просмотра ресурсов во всех пространствах имен, вы получаете представление о структуре вашего кластера и о том, как пространства имен служат границами для организации ресурсов и контроля доступа.
Понимая, как пространства имен функционируют как логические среды, вы сможете лучше ориентироваться, изолировать и управлять своими рабочими нагрузками и связанными ресурсами кластера, особенно при масштабировании развертываний и введении большей сложности в свою среду Kubernetes.