75 votes

Comment configurer un déploiement multi-pod Kubernetes

Je voudrais déployer un cluster d'application par la gestion de mon déploiement via k8s l'objet de Déploiement. La documentation m'a extrêmement confus. Ma mise de base comprend les éléments suivants qui sont à l'échelle de manière indépendante:

  1. API serveur
  2. L'INTERFACE utilisateur du serveur
  3. Cache Redis
  4. Minuterie/tâche Planifiée serveur

Techniquement, tous les 4 ci-dessus appartiennent à séparer les gousses qui sont mises à l'échelle de façon indépendante.

Mes questions sont les suivantes:

  1. Dois-je créer pod.yml fichiers, puis en quelque sorte de référence en deployment.yml le fichier ou pouvez un fichier de déploiement également incorporer la gousse de définitions?
  2. K8s documentation semble impliquer que l' spec part des Deployment est équivalente à la définition d' un pod. Est-ce exact? Que faire si je veux décrire de manière déclarative multi-pod déploiements? Fais-je besoin de plusieurs déploiement.yml fichiers?

68voto

Oswin Noetzelmann Points 4178

Pagids répondre a la plupart des notions de base. Vous devez créer 4 Deployments pour votre scénario. Chaque déploiement de créer un ReplicaSet qui planifie et supervise la collecte de l' PODs de la Deployment.

Chaque Deployment aurez très probablement aussi besoin d'un Service , en face de lui pour l'accès. J'ai l'habitude de créer un seul fichier yaml qui a un Deployment et de la Service en elle. 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 plus de précision:

  • Un POD n'est pas une solution évolutive à l'unité. Un Deployment que les horaires des Gousses est.
  • Un Deployment est destiné à représenter un seul groupe de Gousses à l'accomplissement d'un but unique ensemble.
  • Vous pouvez avoir beaucoup d' Deployments travailler ensemble dans le réseau virtuel de la grappe.
  • Pour accéder à l' Deployment , qui peut consister en de nombreux PODs en cours d'exécution sur les différents nœuds, vous devez créer un Service.
  • Les déploiements sont destinés à contenir des apatrides services. Si vous avez besoin de stocker un état, vous devez créer StatefulSet à la place (par exemple pour un service de base de données).

21voto

pagid Points 2159

Vous pouvez utiliser le Kubernetes de référence de l'API pour le Déploiement et vous verrez que l' spec->template champ est de type PodTemplateSpec avec le commentaire (Modèle décrit les gousses qui sera créé.) il répond à des questions. Une description plus détaillée de cours peut être trouvée dans le Déploiement du guide de l'utilisateur.

Pour répondre à vos questions...

1) L' Pods sont gérés par l' Deployment et de définir séparément 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 pod.

2) Pour chacune des applications dans votre liste, vous devez définir un Deployment - qui fait aussi le sens quand il s'agit de la différence réplique de compte et l'application des déploiements.

3) vous n'avez pas demandé, mais c'est en rapport avec distinct Deployments chacune de vos applications sera également besoin d'un dédié Service afin que les autres puissent y accéder.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X