J'ai un déploiement avec un nombre défini de répliques
. J'utilise la sonde de disponibilité pour communiquer si mon pod est prêt / pas prêt à gérer de nouvelles connexions - mes pods basculent entre l'état prêt
/ pas prêt
pendant leur durée de vie.
Je souhaite que Kubernetes augmente / diminue le déploiement pour garantir qu'il y a toujours le nombre souhaité de pods dans un état prêt
.
Exemple:
répliques
est égal à 4 et qu'il y a 4 pods à l'état prêt
, alors Kubernetes doit conserver le nombre de répliques actuel. répliques
vaut 4 et qu'il y a 2 pods prêts
et 2 pods pas prêts
, alors Kubernetes doit ajouter 2 pods supplémentaires. li>
Comment puis-je faire en sorte que Kubernetes adapte mon déploiement en fonction du statut "prêt" / "pas prêt" de mes pods?
3 Réponses :
Vous ne pouvez pas planifier de déploiements sur des nœuds défectueux dans le cluster. L'API principale ne créera des pods que sur les nœuds qui sont sains et répondent aux critères de quota pour créer des pods supplémentaires sur les nœuds qui sont planifiables.
De plus, ce que vous définissez est appelé un concept d'auto-guérison de k8s qui, en termes de base, sera pris en charge.
Pour garantir que 4 pods sont toujours en cours d'exécution, il est possible de spécifier la propriété de réplicas dans votre définition de déploiement:
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 4 #here we define a requirement for 4 replicas selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9 ports: - containerPort: 80
Kubernetes s'assurera qu'en cas de panne de pods, des pods de remplacement seront créés afin un total de 4 sont toujours disponibles.
Ce n'est pas comme ça que ça marche. Kubernetes veille uniquement à ce qu'il y ait 4 pods au total dans ce cas, mais il ne garantit pas que toujours pour sont prêts.
mais mes pods ne plantent pas, ils sont simplement pas prêts
pendant un moment, puis récupérés. Je ne veux pas non plus que kubernetes les plante, juste pour en créer de nouveaux.
Je ne pense pas que ce soit possible. Si le pod n'est pas prêt, k8 ne le préparera pas car c'est quelque chose qui est lié à votre application.Même s'il crée un nouveau pod, la disponibilité sera garantie. Vous devez donc résoudre les raisons du statut non prêt, puis k8. La seule chose que k8 les empêche de prendre la charge du monde pour éviter l'échec de la requête
Pas prêt pour quelle raison?
Ensuite, vous en auriez 4 pas prêts - parce que les nouveaux pods tourneront d'abord dans cet état, à quel point le premier pod non prêt sera prêt.
@EngineerDollery ce n'est pas seulement pour le spin-up, c'est principalement pour le cycle de vie général
Vous pouvez augmenter / réduire le déploiement en fonction de l'utilisation du processeur, de la mémoire, etc. de ces ressources .. non basé sur l'état du pod