Je souhaite déployer un cluster d'applications en gérant mon déploiement via l'objet de déploiement k8s. La documentation m'a extrêmement confus. Ma mise en page de base comporte les composants suivants qui évoluent indépendamment:
Techniquement, les 4 ci-dessus appartiennent à des groupes distincts qui sont mis à l'échelle indépendamment.
Mes questions sont:
pod.yml
fichiers et les référencer d’une manière ou d’une autre dans deployment.yml
fichier ou un fichier de déploiement peut-il également intégrer des définitions de pod?spec
de Deployment
équivaut à définir n pod. Est-ce exact? Et si je veux décrire de manière déclarative les déploiements multi-pod? Ai-je besoin de plusieurs fichiers deployment.yml?Pagids répond à l'essentiel. Vous devriez créer 4 Deployments
pour votre scénario. Chaque déploiement créera un ReplicaSet
qui planifie et supervise la collecte de PODs
pour le Deployment
.
Chaque Deployment
nécessitera probablement aussi un Service
devant lui pour pouvoir y accéder. Je crée habituellement un seul fichier yaml qui contient Deployment
et le Service
correspondant. Voici un exemple pour un nginx.yaml
que j'utilise:
apiVersion: v1
kind: Service
metadata:
annotations:
service.alpha.kubernetes.io/tolerate-unready-endpoints: "true"
name: nginx
labels:
app: nginx
spec:
type: NodePort
ports:
- port: 80
name: nginx
targetPort: 80
nodePort: 32756
selector:
app: nginx
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginxdeployment
spec:
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginxcontainer
image: nginx:latest
imagePullPolicy: Always
ports:
- containerPort: 80
Voici quelques informations supplémentaires pour clarification:
POD
n'est pas une unité évolutive. Un Deployment
qui planifie les POD est.Deployment
est censé représenter un seul groupe de POD remplissant un même objectif.Deployments
peuvent travailler ensemble dans le réseau virtuel du cluster.Deployment
pouvant être constitué de nombreux PODs
s'exécutant sur différents nœuds, vous devez créer un service.StatefulSet
(par exemple, pour un service de base de données).Vous pouvez utiliser le Kubernetes référence de l'API pour le déploiement et vous constaterez que le champ spec
-> template
est de type - PodTemplateSpec
avec le commentaire associé ( Le modèle décrit les modules qui seront créés. ), il répond à vos questions. . Vous trouverez bien sûr une description plus détaillée dans le Guide de l'utilisateur du déploiement .
Pour répondre à vos questions...
1) Les Pods
sont gérés par le Deployment
et leur définition séparée n'a pas de sens, car ils sont créés à la demande par le déploiement. Gardez à l'esprit qu'il pourrait y avoir plus de répliques du même type de pod.
2) Pour chacune des applications de votre liste, vous devez définir un Deployment
, ce qui est également utile pour les décomptes de réplicas différents et les déploiements d’applications.
3) vous n'avez pas demandé cela, mais c'est lié - avec un Deployments
séparé, chacune de vos applications nécessitera également un dédié - Service
pour que les autres puissent y accéder.