GNU/Linux >> Linux Esercitazione >  >> Panels >> Docker

Alternative Kubernetes ai comandi Docker

Docker di solito fornisce la prima introduzione di uno sviluppatore ai container. Kubernetes è una piattaforma di orchestrazione che risolve le sfide relative all'esecuzione di container in produzione. Ecco come i comandi Docker vengono mappati alle loro controparti Kubernetes.

Non puoi utilizzare la docker CLI per interagire con i container in esecuzione in Kubernetes. Kubernetes fornisce la propria interfaccia a riga di comando, kubectl , per aiutarti a gestire il tuo cluster. Leggi la nostra guida per iniziare con kubectl se non hai familiarità con lo strumento.

Nessuno dei docker i comandi hanno lo stesso nome in kubectl . Kubernetes espone la funzionalità a modo suo. I carichi di lavoro stessi sono fondamentalmente diversi:Docker è progettato per funzionare con un singolo container alla volta, mentre Kubernetes consente l'orchestrazione di più repliche.

Il primo punto da apprezzare è il cambio di terminologia. Docker si riferisce a "contenitori" mentre Kubernetes usa "baccelli". Un pod potrebbe eseguire un contenitore o più repliche gestite come una singola unità. A parte questo dettaglio, quando vedi "contenitore" in Docker, dovresti pensare a un "baccello" Kubernetes. I termini verranno utilizzati in modo intercambiabile per il resto di questo articolo.

Ottenere i dettagli dei tuoi container

In Docker, usi docker ps -a per vedere tutti i contenitori sulla tua macchina.

L'equivalente Kubernetes più vicino è kubectl get pods .

L'output dei due comandi è abbastanza diverso. Docker mostra ulteriori informazioni sul carico di lavoro in esecuzione nel container.

Kubernetes fornirà dettagli sull'immagine e sul comando quando si utilizza il describe pod comando. Devi passare il nome del pod. Questo fornisce informazioni molto più dettagliate, utilizzando un elenco anziché una tabella.

Esecuzione dei comandi nei contenitori

Docker ti consente di eseguire un comando in un contenitore in esecuzione utilizzando docker exec .

L'equivalente di Kubernetes è anche chiamato exec . Usa il nome del pod Kubernetes invece del nome del contenitore Docker. Il comando è specificato in modo leggermente diverso:deve essere separato dal nome del pod da un -- sequenza.

Puoi usare il -it flag per ottenere l'accesso interattivo allo stesso modo di Docker. Questa è una scorciatoia per --stdin --tty e dovrebbe essere usato ogni volta che vuoi lanciare una shell all'interno di un pod. Specifica il nome della shell, ad esempio bash , come comando.

Kubectl supporta il attach comando per quando vuoi collegarti a un processo in un contenitore che è già in esecuzione. Funziona in modo simile a docker attach ma dovresti passare il -it flag se hai bisogno di un accesso interattivo.

Visualizzazione dei log dei contenitori

Per visualizzare i log di un container con Docker, utilizza i docker logs comando. Aggiunta di -f switch "seguirà" i log in modo che vengano trasmessi continuamente al tuo terminale.

logs di Kubectl comando ha la stessa sintassi. Fornisci un nome pod nello stesso modo in cui Docker accetta un nome contenitore.

Sia Docker che Kubernetes raccolgono i log dall'output standard e dall'errore standard (stdout /stderr ) flussi di contenitori in esecuzione. Kubernetes gestisce i riavvii dei container in modo diverso rispetto a Docker. Mentre in Docker un container riavviato aggiunge i propri log a quelli esistenti, Kubernetes crea un nuovo log per ogni esecuzione. Puoi ottenere i log di un container sostituito aggiungendo il --previous segnala ai logs comando.

Creazione di contenitori

I container Docker vengono creati con run comando. Ecco come puoi avviare un nginx server con Docker:

docker run -d --name nginx --restart=always -p 80:80 nginx

Questo crea un contenitore usando nginx immagine di base e imposta il riavvio automatico. Il server è associato alla porta HTTP predefinita 80.

Kubernetes richiede di pensare ad astrazioni di livello superiore quando aggiungi contenitori al tuo cluster. Invece di eseguire un container, stai creando una implementazione per rappresentare il tuo carico di lavoro:

kubectl create deployment --image=nginx nginx

Questo creerà un nginx distribuzione. Un pod viene avviato automaticamente; all'interno del pod, ci sarà un container che esegue il server web.

La creazione di una distribuzione non legherà i suoi contenitori a nessuna porta. Il server appena creato non è ancora accessibile. Le porte devono essere esposte tramite un servizio . I pod sono effimeri e possono contenere più contenitori replicati. I servizi definiscono una raccolta logica di pod e ti consentono di assegnare loro risorse di rete come un indirizzo IP e una porta.

Esporre nginx la distribuzione sulla porta 80 consentirà l'accesso al server:

kubectl expose deployment nginx --port=80 --name nginx-http

Il tentativo di accedere alla porta 80 sull'indirizzo IP predefinito del cluster dovrebbe ora indirizzarti a nginx server.

Kubectl non supporta direttamente altre docker run opzioni come la creazione del volume e il montaggio del binding. I contenitori che richiedono l'archiviazione persistente dovranno avere i volumi configurati manualmente tramite kubectl comandi o un manifest di volume.

Rimozione dei contenitori

I contenitori Docker vengono rimossi utilizzando docker rm comando con l'ID del contenitore.

Kubernetes non ti consente di eliminare direttamente i contenitori. Invece, lavori con la implementazione che ha creato il baccello. Usa il kubectl delete deployment comando, passando il nome della distribuzione.

Docker ti consente di fermare un contenitore invece di rimuoverlo. Kubernetes ha rimosso il supporto per questa azione. Il modo consigliato per sospendere temporaneamente una distribuzione consiste nel ridimensionare il conteggio delle repliche fino a 0. Senza pod in esecuzione, il carico di lavoro viene effettivamente interrotto.

kubectl scale --replicas=0 deployment/my-deployment

Quando sei pronto per riprendere la distribuzione, esegui scale comando di nuovo. Imposta il nuovo conteggio delle repliche su 1 o più alto. L'utilizzo di più repliche può aumentare la disponibilità del tuo carico di lavoro.

Conclusione

Non ci sono paralleli diretti tra Docker CLI e kubectl . La maggior parte dei comandi Kubernetes ha una sintassi diversa rispetto alle loro controparti Docker. Dovrai imparare nuovi termini e opzioni prima di poter trasferire i flussi di lavoro basati su Docker su Kubernetes.

In molti casi, non esiste kubectl alternativa a una funzionalità Docker CLI. La funzionalità di Docker è focalizzata sul concetto di contenitore. Kubernetes lo prende e lo pone al centro di un ecosistema di risorse notevolmente ampliato.

Raramente i contenitori vengono trattati in isolamento. Dovrai invece lavorare con risorse come distribuzioni, servizi e set di repliche. Questo è il motivo per cui l'apprendimento di Kubernetes può sembrare difficile quando ci si avvicina al punto di vista di un utente Docker.

Se hai familiarità con i fondamenti di Docker, il passaggio a Kubernetes dovrebbe comunque essere relativamente semplice. La differenza principale è che ciò che Docker vede come un container è generalmente accessibile come un "pod" aggregato in Kubernetes. I pod vengono creati da "distribuzioni" che rappresentano i carichi di lavoro nel tuo cluster. In caso di dubbio, fare riferimento a kubectl docs per trovare una corrispondenza appropriata per un comando Docker.


Docker
  1. Alcuni comandi DOCKER

  2. Foglio di riferimento rapido per i comandi Docker

  3. Docker

  4. Che cos'è containerd e come si collega a Docker e Kubernetes?

  5. Comandi Docker sospesi senza risposta

Da Docker Compose a Kubernetes con Podman

Come eseguire SSH in un contenitore Docker ed eseguire comandi

Come distribuire Docker Compose Stack su Kubernetes con Kompose

21 comandi essenziali che ogni utente Docker dovrebbe conoscere

Comandi Docker per la gestione del ciclo di vita dei container (Guida definitiva)

40 importanti comandi Docker per gli sviluppatori di software