GNU/Linux >> Znalost Linux >  >> Linux

kubectl použít vs vytvořit:Který z nich použít k vytváření zdrojů v prostředí Kubernetes Cluster Environment?

kubectl apply a kubectl create oba jsou dva různé přístupy k vytváření prostředků v prostředí clusteru Kubernetes.

Oba vytvářejí prostředky ze souboru nebo ze STDIN.

kubectl použít a vytvořit:Dva přístupy k vytváření zdrojů

Nyní pojďme do detailů a pochopíme, jak se aplikace kubectl při implementaci liší od sebe navzájem.

kubectl create:Nezbytná správa

kubectl create je to, čemu říkáme imperativní řízení. Při tomto přístupu sdělíte rozhraní Kubernetes API, co chcete vytvořit, nahradit nebo odstranit.

Jednodušeji řečeno, create vytvoří zcela nový objekt (dříve neexistující nebo odstraněný).

použít kubectl:deklarativní správa

kubectl apply je součástí deklarativního přístupu k řízení, kde změny, které jste možná použili na živý objekt (tj. prostřednictvím scale ) bude „udržován ", i když apply další změny objektu.

Jednodušeji řečeno, apply - provádí postupné změny existujícího objektu definováním toho, co potřebujeme.

POZNÁMKA: Oba přístupy vytváření a používání kubectl akceptují formáty souborů JSON a YAML.

Pochopení rozdílu mezi kubectl vytvořit a použít s příkladem

K vytvoření modulu Kubernetes použiji níže uvedený soubor YAML.

[email protected]:~/pod-create# cat mypod.yml
apiVersion: v1
kind: Pod
metadata:
   name: create-vs-apply-demo
   labels:
      app: front-end
      rel: dev
spec:
  containers:
  - name: httpd
    image: docker.io/httpd
    imagePullPolicy: IfNotPresent
    ports:
      - containerPort: 80

Pojďme vytvořit Pod pomocí imperativního způsobu, tj. pomocí kubectl create příkaz:

[email protected]:~/pod-create# kubectl create -f mypod.yml
pod/create-vs-apply-demo created

Vypište stav pod spolu se štítky:

[email protected]:~/pod-create# kubectl get pods --show-labels
NAME                   READY   STATUS    RESTARTS   AGE   LABELS
create-vs-apply-demo   1/1     Running   0          8s    app=front-end,rel=dev

Nyní upravím soubor YAML a přidám k němu další štítek (demo:applyVscreate).

[email protected]:~/pod-create# cat mypod.yml
apiVersion: v1
kind: Pod
metadata:
   name: create-vs-apply-demo
   labels:
      app: front-end
      rel: dev
      demo: applyVscreate
spec:
  containers:
  - name: httpd
    image: docker.io/httpd
    imagePullPolicy: IfNotPresent
    ports:
      - containerPort: 80

Nyní znovu použijeme imperativní přístup k aplikaci změn.

[email protected]:~/pod-create# kubectl create -f mypod.yml
Error from server (AlreadyExists): error when creating "mypod.yml": pods "create-vs-apply-demo" already exists

Vyvolá chybu a řekne, že zdroj již existuje.

Nyní proveďte stejnou operaci pomocí deklarativního přístupu, tj. kubectl apply příkaz.

[email protected]:~/pod-create# kubectl apply -f mypod.yml
pod/create-vs-apply-demo configured

Takže zdroj byl tentokrát nakonfigurován. Ověřte provedené změny.

[email protected]:~/pod-create# kubectl get pods --show-labels
NAME                   READY   STATUS    RESTARTS   AGE     LABELS
create-vs-apply-demo   1/1     Running   0          3m19s   app=front-end,demo=applyVscreate,rel=dev

Můžete vidět, že nový štítek byl aplikován na pod.

Věřím, že nyní byste měli těmto dvěma přístupům jasně rozumět.

Kubectl vytvořit nebo použít? Který použít?

Záleží na případu použití, jak chcete tyto koncepty nebo metodologii použít. Nejde o to, co je dobré nebo co špatné.

Pokud chcete ovládat verzi objekt k8s pak je lepší použít deklarativní způsobem (použít kubectl), který pomáhá určit přesnost dat v objektech k8s.

A pokud chcete jen vytvořit nějaký zdroj pro řešení problémů, učení nebo interaktivní experimentování použijte imperativ přístup (kubectl vytvořit).

Stále zmatený? Zanechte komentář a já se pokusím odpovědět na vaše pochybnosti.

Rakesh Jain
DevOps Professional | RHCA | Jenkins | Git | Docker | Kubernetes | Ansible | Prometheus | Grafana | AWS Cloud

Linux
  1. Jak nasadit svůj první modul na clusteru Kubernetes

  2. Debian vs. Ubuntu pro serverové použití, který si vybrat

  3. Vysvětlení typů souborových systémů Linux, který byste měli použít

  1. Jak vytvořit prostředí Clean Shell pro dočasné použití?

  2. Linux – jakou aplikaci použít pro kalendář?

  3. Jaký je účel koncového '-' v aplikaci Kubernetes -f -

  1. [Průvodce] příkazy apt vs apt-get a který z nich použít?

  2. Vytvořte virtuální prostředí pro různé verze Pythonu pomocí Conda

  3. Jakou cestu používá `sudo ` k hledání “?