[Cloud Native] L'utilisation de DaemonSet et Job dans le contrôleur Kubernetes

 

 

Table des matières

Ensemble de démons

1 Qu'est-ce que DaemonSet

2 Utilisation de DaemonSet

Emploi

1 Qu'est-ce que le travail

2 en utilisant la tâche

3 travaux qui sont automatiquement nettoyés

Le contrôleur ne peut pas résoudre le problème


Ensemble de démons

1 Qu'est-ce que DaemonSet

Ensemble de démons | Kubernetes

DaemonSet garantit que tous (ou certains) nœuds exécutent une copie d'un pod. Lorsque les nœuds rejoignent le cluster, un pod leur sera ajouté. Ces pods sont également recyclés lorsqu'un nœud est supprimé du cluster. La suppression d'un DaemonSet supprimera tous les pods qu'il a créés.

Quelques utilisations typiques de DaemonSet :

  • Exécutez des démons de cluster sur chaque nœud

  • Exécutez un démon de collecte de journaux sur chaque nœud

  • Exécutez un démon de surveillance sur chaque nœud

Une utilisation simple consiste à démarrer un DaemonSet sur tous les nœuds pour chaque type de démon. Une utilisation légèrement plus complexe consiste à déployer plusieurs DaemonSets pour le même type de démon ; chacun avec des drapeaux différents et une mémoire différente, des exigences CPU pour différents types de matériel.

2 Utilisation de DaemonSet

apiVersion: apps/v1
kind: DaemonSet
metadata:
  labels:
    app: nginx
  name: nginx
spec:
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - image: nginx:1.19
        imagePullPolicy: IfNotPresent
        name: nginx
        resources: {}
      restartPolicy: Always

Emploi

1 Qu'est-ce que le travail

Emploi | Kubernetes

Une tâche crée un ou plusieurs pods et continuera à réessayer l'exécution des pods jusqu'à ce que le nombre spécifié de pods se termine avec succès. Au fur et à mesure que les pods se terminent avec succès, la tâche garde une trace du nombre de pods terminés avec succès. Lorsque le nombre atteint le seuil de réussite spécifié, la tâche (c'est-à-dire le travail) se termine. La suppression d'une tâche effacera tous les pods créés. L'opération de suspension du Job supprimera tous les Pods actifs du Job jusqu'à ce que le Job soit repris.

Dans un cas d'utilisation simple, vous créeriez un objet Job pour exécuter un pod jusqu'à son terme de manière fiable. L'objet Job démarre un nouveau pod lorsque le premier pod tombe en panne ou est supprimé (par exemple, en raison d'une panne matérielle ou d'un redémarrage du nœud).

Vous pouvez également utiliser des Jobs pour exécuter plusieurs Pods en parallèle.

2 en utilisant la tâche

apiVersion: batch/v1
kind: Job
metadata:
  name: pi
spec:
  template:
    spec:
      containers:
      - name: pi
        image: perl:5.34.0
        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
      restartPolicy: Never
  # 当前任务出现失败 最大的重试次数
  backoffLimit: 4

3 travaux qui sont automatiquement nettoyés

Les tâches terminées n'ont généralement pas besoin d'être conservées dans le système. Les garder dans le système en permanence exerce une pression supplémentaire sur le serveur API. Si le Job est géré par un contrôleur de niveau supérieur, tel que CronJob , le Job peut être nettoyé par le CronJob en fonction d'une politique de nettoyage spécifique basée sur la capacité.

  • Le mécanisme TTL du travail terminé

    • Une autre façon de nettoyer automatiquement les travaux terminés (état Completeou Failed) consiste à utiliser le mécanisme TTL fourni par le contrôleur TTL. En définissant le .spec.ttlSecondsAfterFinishedchamp Job, le contrôleur peut nettoyer les ressources terminées. Lorsque le contrôleur TTL nettoie le Job, il supprime l'objet Job en cascade. En d'autres termes, il supprime tous les objets dépendants, y compris les Pods et les Jobs eux-mêmes. Notez que lorsqu'un Job est supprimé, le système prend en compte ses garanties de cycle de vie, telles que ses Finalizers.

apiVersion: batch/v1
kind: Job
metadata:
  name: pi-with-ttl
spec:
  ttlSecondsAfterFinished: 100
  template:
    spec:
      containers:
      - name: pi
        image: perl:5.34.0
        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
      restartPolicy: Never

Une tâche pi-with-ttlpeut être automatiquement supprimée 100 secondes après sa fin. Si ce champ est défini sur 0, la tâche devient automatiquement supprimable immédiatement après sa fin. Si ce champ n'est pas défini, la tâche ne sera pas automatiquement effacée par le contrôleur TTL une fois terminée.

Le contrôleur ne peut pas résoudre le problème

  • Comment fournir des services réseau pour les pods

  • Comment parvenir à équilibrer la charge entre plusieurs pods

Je suppose que tu aimes

Origine blog.csdn.net/weixin_53678904/article/details/132233724
conseillé
Classement