Inspecter les ressources de base du cluster
Dans cette étape, vous allez inspecter les ressources de base de Kubernetes telles que les Pods, les Déploiements (Deployments) et les Services dans tous les espaces de noms (Namespaces). En utilisant le flag -A (ou --all-namespaces), vous verrez comment les ressources sont organisées dans tout le cluster. C'est une excellente occasion d'introduire et de comprendre le concept des Espaces de noms dans Kubernetes.
Espaces de noms : Isolation des ressources
Les espaces de noms sont des partitions logiques au sein d'un cluster Kubernetes qui aident à organiser et à gérer les ressources. Ils offrent un moyen de regrouper les objets liés et d'appliquer des politiques, des contrôles d'accès et des quotas de ressources de manière granulaire. En séparant les ressources dans différents espaces de noms, vous pouvez :
- Améliorer l'organisation : Regrouper les charges de travail liées (par exemple, par projet, équipe ou environnement comme le développement, les tests et la production).
- Renforcer la sécurité et le contrôle d'accès : Restreindre les utilisateurs ou les comptes de service qui peuvent consulter ou modifier les ressources dans un espace de noms particulier.
- Simplifier la gestion des ressources : Appliquer plus efficacement des limites de ressources, des politiques réseau et d'autres configurations à l'échelle du cluster.
Lorsque vous liste les ressources avec le flag -A (ou --all-namespaces), vous remarquerez que les composants appartenant au système Kubernetes résident dans l'espace de noms kube-system, qui est dédié à l'infrastructure au niveau du cluster. Les applications créées par l'utilisateur résident généralement dans l'espace de noms default ou dans d'autres espaces de noms personnalisés que vous définissez.
Espaces de noms et ressources
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
Dans le diagramme :
- Le Plan de contrôle gère l'ensemble du cluster, communiquant avec les nœuds et contrôlant les charges de travail.
- Les Espaces de noms (tels que
kube-system, default et dev) séparent logiquement les ressources au sein du cluster.
kube-system contient les composants au niveau du système comme CoreDNS et kube-dns.
default est couramment utilisé pour les charges de travail générales, représenté ici par un déploiement my-app.
dev peut représenter un environnement de développement, isolé des charges de travail de production.
En visualisant les ressources dans tous les espaces de noms, vous obtenez une compréhension globale de la façon dont ces partitions logiques contribuent à maintenir un cluster organisé et sécurisé.
Exemples :
Lister tous les pods dans tous les espaces de noms :
kubectl get pods -A
Exemple de sortie :
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
Ici, vous voyez tous les pods liés au système en cours d'exécution dans l'espace de noms kube-system. Si vous aviez d'autres déploiements ou services dans différents espaces de noms, ils apparaîtraient également dans cette liste, chacun clairement limité par son espace de noms.
Lister tous les déploiements dans tous les espaces de noms :
kubectl get deployments -A
Exemple de sortie :
NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE
kube-system coredns 1/1 1 1 20m
Le déploiement coredns réside dans l'espace de noms kube-system.
Obtenir une vue complète de toutes les ressources dans tous les espaces de noms :
kubectl get all -A
Cette commande affiche un aperçu des pods, des services et des déploiements dans différents espaces de noms, vous aidant à comprendre comment ces ressources sont réparties dans le cluster.
Points clés :
- Les Espaces de noms offrent une isolation et une organisation logiques au sein d'un cluster Kubernetes.
- Différents composants et ressources de Kubernetes sont organisés dans des espaces de noms spécifiques (par exemple,
kube-system pour les services de base, default pour les charges de travail générales et d'autres espaces de noms que vous créez).
- En utilisant
-A pour visualiser les ressources dans tous les espaces de noms, vous obtenez une idée de la structure de votre cluster et de la façon dont les espaces de noms servent de limites pour l'organisation des ressources et le contrôle d'accès.
En comprenant le fonctionnement des espaces de noms comme des environnements logiques, vous pouvez mieux naviguer, isoler et gérer vos charges de travail et les ressources de cluster associées, surtout lorsque vous élargissez vos déploiements et introduisez plus de complexité dans votre environnement Kubernetes.