GNU/Linux >> Linux Esercitazione >  >> Linux

Come creare e gestire i pod Kubernetes in Linux

In questo tutorial impareremo come creare e gestire i pod Kubernetes. Innanzitutto, inizieremo con cos'è un Pod in Kubernetes e come funziona un Pod. Successivamente, daremo una breve occhiata ai tipi di Pod. E poi vedremo come creare un nuovo Pod e come visualizzare le informazioni del Pod dalla riga di comando. Infine, impareremo come eliminare il Pod quando non è più necessario.

Cos'è un Pod in Kubernetes?

In Kubernetes , i pod sono le più piccole unità di elaborazione distribuibili che puoi costruire e controllare. Un Pod è una raccolta di uno o più container con archiviazione condivisa e risorse di rete, nonché un insieme di regole per l'esecuzione dei container.

I contenuti di un Pod sono sempre collocati insieme, programmati ed eseguiti nello stesso ambiente. Un Pod rappresenta un "host logico" specifico dell'applicazione:include uno o più contenitori di applicazioni strettamente connessi.

Nella prospettiva Docker, un Pod è equivalente a un insieme di contenitori Docker con spazi dei nomi e volumi di filesystem comuni.

Tipi di pod Kubernetes

In un cluster Kubernetes esistono due tipi di Pod.

  • POD contenitore singolo: Il caso d'uso di Kubernetes più frequente è l'approccio "un contenitore per pod"; in questo scenario, considera un Pod come un wrapper su un singolo contenitore; Kubernetes gestisce direttamente i Pod anziché i container.
  • Pod di contenitori multipli: Un Pod può incapsulare un'applicazione composta da numerosi contenitori strettamente connessi che devono condividere risorse. Questi contenitori sono raggruppati insieme per formare un'unica unità di servizio e questi contenitori comunicheranno tra loro.

Come funziona il POD?

Ogni Pod è progettato per eseguire una singola istanza dell'applicazione. Puoi utilizzare diversi Pod, uno per ogni istanza, se hai bisogno di estendere la tua applicazione orizzontalmente. Questo è comunemente indicato come replica in Kubernetes . Una risorsa del carico di lavoro e il suo controller normalmente producono e gestiscono Pod replicati in un gruppo.

L'obiettivo finale di Kubernetes è distribuire l'applicazione sotto forma di contenitori in un insieme di macchine chiamato nodo di lavoro nell'ammasso di Kubernetes.

Kubernetes non avvia i contenitori direttamente nel nodo, ma i contenitori sono incapsulati come Pod, che è una singola istanza di un'applicazione.

In un cluster Kubernetes, un nodo è costituito da pod e un pod è costituito da contenitori. Ad esempio, hai una singola istanza di un'applicazione in esecuzione in un singolo contenitore incapsulato da un Pod.

Se il numero di utenti che accedono all'applicazione aumenta, è necessario aumentare la scalabilità dell'applicazione. In tal caso, potrebbe essere necessario avviare ulteriori istanze per condividere il carico.

Per aumentare la scalabilità dell'applicazione, è necessario avviare un nuovo Pod aggiuntivo nel nodo con la stessa applicazione. Se il carico aumenta ulteriormente e il nodo corrente non ha capacità, è necessario disporre di un nodo aggiuntivo per avviare i pod con lo stesso contenitore dell'applicazione.

Allo stesso modo, per ridimensionare, è necessario eliminare il Pod esistente.

Spero che tu abbia l'idea di base sui pod Kubernetes. Vediamo ora come creare e gestire i Pod in Kubernetes.

Prima di iniziare, assicurati di aver installato Kubernetes sul tuo sistema. I seguenti collegamenti contengono istruzioni su come configurare una distribuzione del cluster Kubernetes a nodo singolo e multinodo in Linux.

  • Come installare Kubernetes utilizzando Minikube in CentOS Linux
  • Installa il cluster Kubernetes utilizzando Kubeadm in RHEL, CentOS, AlmaLinux, Rocky Linux

Una volta installato Kubernetes, puoi iniziare a creare pod.

Di solito, non è necessario creare direttamente i pod, nemmeno i pod singleton. Invece, creali utilizzando risorse del carico di lavoro come Distribuzione o Lavoro . Una distribuzione fornisce aggiornamenti dichiarativi per Pod e ReplicaSet.

Crea una distribuzione

Crea una distribuzione di esempio utilizzando un'immagine esistente "echoserver" . È un semplice server HTTP e possiamo esporlo sulla porta 8080 usando --port opzione.

Un'immagine contenitore è un file che racchiude un programma e tutte le sue dipendenze software in dati binari. Le immagini del contenitore sono pacchetti software eseguibili indipendenti che fanno presupposti estremamente specifici sul loro ambiente di esecuzione.

In questo articolo, esamineremo tutte le dimostrazioni in un cluster a nodo singolo .

Puoi conoscere i dettagli del nodo eseguendo il comando seguente come root utente

# kubectl get nodes

Risultato di esempio:

NAME        STATUS   ROLES    AGE   VERSION
ostechnix   Ready    Master   25h   v1.22.3

Ora, distribuisci un'applicazione di esempio chiamata "hello-otechnix" usando il comando seguente. Puoi nominarlo a tuo piacimento.

# kubectl create deployment hello-ostechnix --image=k8s.gcr.io/echoserver:1.10

Risultato di esempio:

deployment.apps/hello-ostechnix created
[[email protected] ~]#

La distribuzione è stata creata, verifica la distribuzione utilizzando il comando seguente.

# kubectl get deployments

Risultato di esempio:

NAME              READY   UP-TO-DATE   AVAILABLE   AGE
hello-ostechnix   1/1     1            1           85s

Accesso alla distribuzione

Per accedere a questa distribuzione come servizio, è necessario esporla come servizio. Utilizzare il comando seguente per esporre la distribuzione sulla porta 8080 .

# kubectl expose deployment hello-ostechnix --type=NodePort --port=8080

Risultato di esempio:

service/hello-ostechnix exposed

Utilizzare il comando seguente per ottenere l'URL del servizio esposto.

# minikube service hello-ostechnix --url

Risultato di esempio:

http://192.168.181.131:30525

Copia l'URL e incollalo nel tuo browser, elencherà i dettagli dell'applicazione distribuita.

Assicurati che la porta 30525 è consentito nel tuo router o firewall. Se questa porta è bloccata, potresti non visualizzare le informazioni del Pod nel browser.

Elimina distribuzione

Innanzitutto, elimina il servizio "hello-otechnix" usando il comando:

# kubectl delete services hello-ostechnix

Risultato di esempio:

service "hello-ostechnix" deleted

Quindi, elimina la distribuzione "hello-otechnix":

# kubectl delete deployment hello-ostechnix

Risultato di esempio:

deployment.apps "hello-ostechnix" deleted

Una volta eliminata la distribuzione, il Pod associato all'applicazione verrà terminato. Ci vorranno alcuni secondi per completare la terminazione.

# kubectl get pods

Risultato di esempio:

NAME                               READY   STATUS        RESTARTS   AGE
hello-ostechnix-5d4cf4df75-jlwff   1/1     Terminating   0          57m

Dopo aver terminato la distribuzione, l'applicazione non sarà più accessibile.

# kubectl get pods

Risultato di esempio:

No resources found in default namespace.

Esegui Pod con immagini

Possiamo usare 'kubectl run ' comando per creare ed eseguire un'applicazione in un Pod.

$ kubectl run <POD name> --image=<image name>

Qui, il nome del Pod può essere qualsiasi cosa e il nome dell'immagine deve essere specifico che sarebbe disponibile in Docker Hub o in qualsiasi repository locale.

Creiamo un Pod con l'immagine Nginx.

# kubectl run ostechnix-nginx --image=nginx

Risultato di esempio:

pod/ostechnix-nginx created

È stato creato un Pod chiamato 'otechnix-nginx'. Puoi verificare lo stato del Pod tramite il comando seguente.

# kubectl get pods

Risultato di esempio:

NAME              READY   STATUS    RESTARTS   AGE
ostechnix-nginx   1/1     Running   0          4m20s

Puoi ottenere informazioni aggiuntive come dove è in esecuzione il Pod e l'IP del Pod utilizzando 'wide ' opzione.

# kubectl get pods -o wide

Risultato di esempio:

NAME              READY   STATUS    RESTARTS   AGE   IP           NODE        NOMINATED NODE   READINESS GATES
ostechnix-nginx   1/1     Running   0          38m   172.17.0.6   ostechnix   <none>           <none>

Puoi ottenere informazioni complete sul POD utilizzando 'kubectl describe comando '.

# kubectl describe pod ostechnix-nginx

Questo comando ti fornirà i dettagli completi del POD come i dettagli del contenitore e i suoi stati, i dettagli degli eventi che si sono verificati da quando il Pod è stato creato.

Name:         ostechnix-nginx
Namespace:    default
Priority:     0
Node:         ostechnix/192.168.181.131
Start Time:   Thu, 03 Feb 2022 01:40:48 -0800
Labels:       run=ostechnix-nginx
Annotations:  <none>
Status:       Running
IP:           172.17.0.6
IPs:
  IP:  172.17.0.6
Containers:
  ostechnix-nginx:
    Container ID:   docker://29eeb0392247aef193d6dff0138f8ef132dfb6359d8e67c3a5e4a21d7e259989
    Image:          nginx
    Image ID:       docker-pullable://[email protected]:2834dc507516af02784808c5f48b7cbe38b8ed5d0f4837f16e78d00deb7e7767
    Port:           <none>
    Host Port:      <none>
    State:          Running
      Started:      Thu, 03 Feb 2022 01:40:54 -0800
    Ready:          True
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-ggvk6 (ro)
Conditions:
  Type              Status
  Initialized       True
  Ready             True
  ContainersReady   True
  PodScheduled      True
Volumes:
  kube-api-access-ggvk6:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   BestEffort
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type    Reason     Age    From               Message
  ----    ------     ----   ----               -------
  Normal  Scheduled  7m26s  default-scheduler  Successfully assigned default/ostechnix-nginx to ostechnix
  Normal  Pulling    7m24s  kubelet            Pulling image "nginx"
  Normal  Pulled     7m20s  kubelet            Successfully pulled image "nginx" in 4.114836826s
  Normal  Created    7m20s  kubelet            Created container ostechnix-nginx
  Normal  Started    7m20s  kubelet            Started container ostechnix-nginx
[[email protected] ~]#

Una volta terminato, puoi eliminare il Pod utilizzando 'kubectl delete comando '.

# kubectl delete pod ostechnix-nginx

Risultato di esempio:

pod "ostechnix-nginx" deleted

Verifica se il Pod è stato eliminato elencando i Pod disponibili:

# kubectl get pods
No resources found in default namespace.

Conclusione

In questo tutorial, abbiamo esaminato il concetto di Pod in Kubernetes, una semplice distribuzione di un'applicazione e come eseguire un Pod. Avremo maggiori dettagli sulla creazione di Pod con YAML file di definizione nei nostri prossimi dettagli.


Linux
  1. Come creare collegamenti rigidi e simbolici in Linux

  2. Come gestire la scadenza e l'invecchiamento della password utente in Linux

  3. Come gestire ed elencare i servizi in Linux

  4. Come distribuire il tuo primo pod su un cluster Kubernetes

  5. Come creare un alias e utilizzare il comando alias in Linux

Come creare e utilizzare file di scambio su Linux

Account FTP:come crearlo e gestirlo

Come creare e gestire macchine virtuali in KVM

Come creare e gestire nuovi utenti su Linux

Comando Linux crontab per creare e gestire i lavori Cron

Come rilevare e gestire i dispositivi su Linux