GNU/Linux >> Znalost Linux >  >> Cent OS

Co je Kubernetes DaemonSet a jak jej používat?

Úvod

Kubernetes vám umožňuje automatizovat nasazení softwaru, spravovat kontejnerizované aplikace a snadno škálovat vaše clustery. Široká škála objektů Kubernetes, včetně DaemonSets, poskytuje další úroveň kontroly.

Použijte Kubernetes DaemonSets k nasazení konkrétních Podů do každého jednotlivého uzlu ve vašem clusteru.

Tento článek vysvětluje, co je DaemonSet, kdy ji použít a jak ji vytvořit.

Co je Kubernetes DaemonSet?

Kubernetes zajišťuje, že aplikace má dostatek prostředků, běží spolehlivě a udržuje vysokou dostupnost po celou dobu svého životního cyklu. Umístění aplikace v rámci clusteru není prioritou.

DaemonSet vám umožňuje překonat plánovací omezení Kubernetes a zajišťuje nasazení konkrétní aplikace na všechny uzly v rámci clusteru.m Nasazené moduly obvykle obsahují procesy na pozadí, které je třeba šířit v celém clusteru.

DaemonSet je obvykle popsán pomocí souboru YAML. Pole v souboru YAML vám poskytují další kontrolu nad procesem nasazení modulu Pod. Dobrým příkladem je použití štítků ke spuštění konkrétních modulů na omezené podmnožině uzlů.

Jak DaemonSets fungují?

DaemonSet je aktivní objekt Kubernetes spravovaný řadičem. Můžete deklarovat požadovaný stav, což znamená, že na každém uzlu musí být přítomen konkrétní modul. Kontrolní smyčka odsouhlasení porovná požadovaný stav se současným pozorovaným stavem. Pokud pozorovaný uzel nemá odpovídající modul, řadič DaemonSet ho automaticky vytvoří.

Tento automatizovaný proces zahrnuje existující uzly a všechny nově vytvořené uzly. Pody vytvořené ovladači DaemonSet jsou ignorovány plánovačem Kubernetes a existují tak dlouho jako samotný uzel.

DaemonSet ve výchozím nastavení vytváří pod na každém uzlu. V případě potřeby můžete omezit počet přijatelných uzlů pomocí selektoru uzlů. Ovladač DaemonSet vytvoří pody pouze na uzlech, které odpovídají předdefinovanému nodeSelector pole v souboru YAML.

Proč používat DaemonSet?

DaemonSets mohou zlepšit výkon clusteru nasazením modulů, které provádějí úkoly údržby a podpůrné služby, do každého uzlu. Specifické procesy na pozadí, monitorovací aplikace Kubernetes a další agenti musí být přítomni v celém clusteru, aby poskytovaly relevantní a včasné služby.

DaemonSets jsou výjimečně vhodné pro dlouhotrvající služby, které mohou zahrnovat:

  • Sbírka protokolů
  • Monitorování prostředků uzlů (rámce, jako je Prometheus)
  • Clusterové úložiště
  • Pods související s infrastrukturou (systémové operace)

Je běžné, že jedna DaemonSet nasadí jeden typ démona napříč všemi uzly. Více sad démonů však může také ovládat jeden typ démona pomocí různých štítků. Štítky Kubernetes určují pravidla nasazení na základě charakteristik jednotlivých uzlů.

Jak vytvořit DaemonSet?

DaemonSet můžete popsat v souboru YAML a použít soubor na cluster pomocí příkazů kubectl.

Například daemonset-node-exporter.yaml soubor níže nasazuje Prometheusnode-exporter, v rámci monitorování jmenný prostor pro sledování metrik využití hardwaru na každém uzlu v clusteru.

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: node-exporter
  namespace: monitoring
  labels:
    name: node-exporter
spec:
  template:
    metadata:
      labels:
        name: node-exporter
      annotations:
         prometheus.io/scrape: "true"
         prometheus.io/port: "9100"
    spec:
      hostPID: true
      hostIPC: true
      hostNetwork: true
      containers:
        - ports:
            - containerPort: 9100
              protocol: TCP
          resources:
            requests:
              cpu: 0.15
          securityContext:
            privileged: true
          image: prom/node-exporter:v0.15.2
          args:
            - --path.procfs
            - /host/proc
            - --path.sysfs
            - /host/sys
            - --collector.filesystem.ignored-mount-points
            - '"^/(sys|proc|dev|host|etc)($|/)"'
          name: node-exporter
          volumeMounts:
            - name: dev
              mountPath: /host/dev
            - name: proc
              mountPath: /host/proc
            - name: sys
              mountPath: /host/sys
            - name: rootfs
              mountPath: /rootfs
      volumes:
        - name: proc
          hostPath:
            path: /proc
        - name: dev
          hostPath:
            path: /dev
        - name: sys
          hostPath:
            path: /sys
        - name: rootfs
          hostPath:
            path: /

Otevřete rozhraní příkazového řádku Kubernetes a použijte nově vytvořený soubor YAML:

kubectl apply -f daemonset-node-exporter.yaml

Systém potvrdí, že DaemonSet byla vytvořena.

Jakmile odešlete daemonset-node-exporter DaemonSet, potvrďte jeho aktuální stav pomocí describe příkaz:

kubectl describe daemonset node-exporter -n monitoring

Výstup nabízí základní informace o DaemonSet a indikuje, že modul byl nasazen na všech dostupných uzlech.

Můžete to navíc potvrdit výpisem všech běžících podů pomocí následujícího příkazu:

kubectl get pod -o wide -n monitoring

DaemonSet nyní bude neustále nasazovat node-exporter Pod do všech nově vytvořených uzlů.

Jak omezit DaemonSet na konkrétní uzly

DaemonSets ve výchozím nastavení vytvářejí moduly na každém uzlu v clusteru, pokud je selektory uzlů neomezují. Zpočátku je nutné přidat požadovanou sadu štítků do podmnožiny uzlů.

Dosáhnete toho pomocí kubectl label příkaz. Přidejte ssd=true štítku na node01 uzel pomocí následujícího příkazu:

kubectl label nodes node01 ssd=true

Selektory uzlů jsou součástí nodeSelector pole v souboru DaemonSet YAML. V následujícím příkladu se DaemonSet chystá nasadit Nginx pouze na uzlech označených jako ssd=true .

apiVersion: apps/v1 
kind: "DaemonSet" 
metadata: 
labels: 
app: nginx 
ssd: "true" 
name: nginx-ssd-storage 
spec: 
template: 
metadata: 
labels: 
app: nginx ssd: "true" 
spec: 
nodeSelector: 
ssd: "true" 
containers: - 
name: nginx 
image: nginx:1.10.0

Přidání ssd=true label na nový uzel nasadí nginx-ssd-storage Pod do toho uzlu. Pokud je štítek odstraněn z uzlu, řadič DaemonSet odstraní také Pod.

Jak aktualizovat DaemonSet?

OnDelete strategie aktualizace byla jediným způsobem, jak aktualizovat Pody spravované sadou DaemonSet v raných verzích Kubernetes (před verzí 1.6). OnDelete Tento přístup vyžaduje, abyste ručně odstranili každý modul. Teprve poté je DaemonSet schopen vytvořit nový modul pomocí nové konfigurace.

Nejnovější verze Kubernetes ve výchozím nastavení používají průběžné aktualizace. Strategie aktualizace je definována pomocí spec.updateStrategy.type pole. Výchozí hodnota je nastavena na RollingUpdate .

Strategie průběžné aktualizace odstraňuje staré moduly a místo nich vytváří nové. Proces je automatický a řízený. Odstranění a vytvoření všech modulů ve stejnou dobu může vést k nedostupnosti a prodlouženým prostojům.

Dva parametry vám umožňují řídit proces aktualizace:

  • minReadySeconds definuje období mezi upgrady modulu. Hodnota je definována v sekundách a nastavení přiměřeného časového rámce zajišťuje stav podu, než systém přistoupí k aktualizaci dalšího podu.
  • updateStrategy.rollingUpdate.maxUnavailable umožňuje definovat počet modulů, které lze současně upgradovat. Hodnota tohoto parametru je velmi závislá na typu nasazované aplikace. Je nutné vyvážit rychlost a bezpečnost, aby byla zajištěna vysoká dostupnost.

Použijte kubectl rollout příkaz ke kontrole stavu postupného upgradu DaemonSet:

kubectl rollout status ds/daemonset-node-exporter -n monitoring

Systém sleduje aktualizace DaemonSet a informuje vás o aktuálním stavu zavedení node-exporter DaemonSet.

Jak smazat DaemonSet?

Odstraňte DaemonSet pomocí kubectl delete příkaz. Ujistěte se, že jste správně uvedli název DaemonSet, který chcete odstranit:

kubectl delete -f daemonset-node-exporter.yaml -n monitoring

Tento příkaz by měl být používán opatrně. Smazání DaemonSet také vyčistí všechny moduly, které daný DaemonSet nasadil.


Cent OS
  1. Chroot „vězení“ – co to je a jak jej používat?

  2. Co je a jak používat složku public_ftp

  3. Co je Build-Essential-Ubuntu, jak jej nainstalovat a používat?

  1. Co je Umask a jak jej používat

  2. Co je příkaz Chown v Linuxu a jak jej používat

  3. Co je příkaz cURL a jak jej používat?

  1. Tajemství Kubernetes – Jak vytvářet, používat a přistupovat k tajemstvím

  2. Příkaz lspci:Co to je a jak jej používat

  3. Co je to chroot jail a jak jej používat?