La maggior parte dei suggerimenti forniti di seguito utilizzano kubectl, un potente strumento da riga di comando che consente di eseguire comandi sui cluster Kubernetes.
Newsletter di settore
Resta al passo con le tendenze più importanti e interessanti del settore relative ad AI, automazione, dati e altro con la newsletter Think. Leggi l'Informativa sulla privacy IBM.
L'abbonamento sarà fornito in lingua inglese. Troverai un link per annullare l'iscrizione in tutte le newsletter. Puoi gestire i tuoi abbonamenti o annullarli qui. Per ulteriori informazioni, consulta l'Informativa sulla privacy IBM.
Se hai bisogno di informazioni di base su Kubernetes prima di passare a questi suggerimenti, consulta le seguenti risorse:
Puoi suddividere un cluster Kubernetes in più ambienti usando namespace (ad esempio, Dev1, Dev2, QA1, QA2, ecc.), e ogni ambiente può essere gestito da un utente diverso. Uno degli inconvenienti della scrittura dei comandi di kubectl è che ogni volta che si scrive un comando, devi avere l'opzione --namespace
alla fine. Le persone spesso se ne dimenticano e finiscono per creare oggetti (pod, servizi, distribuzioni) nel namespace sbagliato.
Con questo trucco, puoi impostare la preferenza di namespace prima di eseguire i comandi kubectl. Esegui il seguente comando prima di eseguire i comandi kubectl. In questo modo, il namespace verrà salvato per tutti i successivi comandi kubectl per il contesto corrente:
kubectl config set-context $(kubectl config current-context) --namespace=mynamespace
Alcuni dei comandi più comuni e utili con namespace sono elencati di seguito:
I comandi di Kubernetes possono essere piuttosto lunghi, quindi la creazione di alcuni alias per l'esecuzione di kubectl è molto utile. Non dovrai più ripetere il comando completo più e più volte, rendendoti la vita molto più facile quando vuoi eseguire più comandi Kubernetes in una sola sessione.
Di seguito abbiamo elencato gli alias di alcuni comandi utilizzati di frequente. Esegui questi test prima di eseguire i comandi kubectl per risparmiare tempo. Esempio: basta digitare K invece di digitare kubectl:
Sono disponibili molti editor diversi per scrivere file YAML, ma ci sono molte occasioni in cui potrebbe essere necessario modificare rapidamente uno YAML generato mentre si lavora su un terminale. Questo è un luogo ideale per utilizzare il nostro fidato vi, l'editor di testo originariamente creato per il sistema operativo Unix.
L'editor vi è ben documentato e ha il supporto di una vivace comunità open source. Uno dei problemi dell'editor vi durante la creazione di file YAML, però, è la gestione degli spazi. Serve un modo per fare l'indentazione con le tabulazioni e l'allineamento con gli spazi. L'uso di tabulazioni invece di spazi per lo spazio bianco ha sempre creato problemi di sintassi durante la scrittura di file YAML (ad esempio, ottenere il YAML a 2 spazi come predefinito quando si preme Invio).
La soluzione? Crea un file ~/.vimrc con queste righe prima di creare file YAML con l'editor vi per facilitare la modifica:
Possiamo creare file YAML complessi dalla riga di comando usando comandi kubectl.
La maggior parte delle persone concorderebbe sul fatto che lavorare con i file YAML non è divertente e che i file YAML di Kubernetes possono essere molto prolissi e difficili da creare da zero. È molto più semplice creare il file YAML dai comandi kubectl anziché da una pagina vuota utilizzando un editor.
I seguenti comandi creeranno un file YAML con il nome yamlfile . Una volta creato il file YAML da questi comandi kubectl, puoi modificarlo in base alle tue esigenze e usarlo invece di scrivere da zero:
kubectl run busybox --image=busybox --dry-run=client -o yaml -- restart=Never > yamlfile.yaml
kubectl create job my-job --dry-run=client -o yaml --image=busybox -- date>yamlfile.yaml
kubectl get -o yaml deploy/nginx > 1.yaml(Assicurati di avere una distribuzione chiamata nginx)
kubectl run busybox --image=busybox --dry-run=client -o yaml --restart=Never -- /bin/sh -c "while true; do echo hello; echo hello again;done" > yamlfile.yaml
kubectl run wordpress --image=wordpress –-expose –-port=8989 - -restart=Never -o yaml
kubectl run test --image=busybox --restart=Never --dry - run=client -o yaml -- bin/sh -c 'echo test;sleep 100' > yamlfile.yaml(Nota che --bin va alla fine. Questo creerà un file yaml.)
(Nota che --bin va alla fine. Questo creerà un file yaml.)
Un'altra buona idea per creare il file YAML è ottenere il file direttamente da Internet usando il comando wget .
Nel suggerimento 1, abbiamo appreso alcuni comandi utili per utilizzare i namespace di Kubernetes e salvarli in modo da non doverli aggiungere a ogni comando. Espandiamo il suggerimento per facilitare il passaggio tra namespace e contesti kubectl.
Ci sono diversi strumenti che possono aiutare, ma ci piacciono kubectx e kubens per gestire contesti e namespace, rispettivamente. Puoi trovare i dettagli su kubectx e kubens qui.
Ecco come scaricare i binari Linux per le utility kubectx e kubens:
wget https://github.com/ahmetb/kubectx/releases/download/v0.9.0/kubectx_v0.9.0_linux_x86_64.tar.gz
wget https://github.com/ahmetb/kubectx/releases/download/v0.9.0/kubens_v0.9.0_linux_x86_64.tar.gz
Poi li estrai con i seguenti comandi:
tar -xvf kubectx_v0.9.0_linux_x86_64.tar.gz
tar -xvf kubens_v0.9.0_linux_x86_64.tar.gz
Infine, li sposti sul tuo PERCORSO:
Una volta installato, puoi semplicemente usare kubens per elencare i namespace e passare tra di essi:
Quando si lavora con più cluster, kubectx rende il passaggio tra i contesti più semplice:
Sapevi che kubectl fornisce il completamento automatico per BASH e ZSH? Questa è una configurazione facoltativa.
Supponiamo che tu comprenda i concetti di Kubernetes e abbia una certa esperienza con kubectl, ma forse memorizzare i comandi non è il tuo forte. Prima installa bash-completion e poi abilita il completamento automatico di kubectl. Puoi trovare tutti i dettagli nella pagina della documentazione "Install and Set Up kubectl" per il tuo ambiente.
Di seguito sono riportate le opzioni di configurazione con la funzione di completamento automatico:
Ora vai di tabulazioni!
Il comando top è probabilmente uno degli strumenti più popolari per monitorare i processi e le risorse del sistema. Fornisce un'interfaccia semplice basata sui caratteri e un accesso rapido alle informazioni cruciali.
Puoi vedere l'utilizzo delle risorse per nodo:
Utilizzo delle risorse per pod:
E il pratico comando watch può aiutarti a visualizzare il comando in un intervallo desiderabile, senza doverlo eseguire più volte. L'esempio seguente fa sì che venga eseguito ogni cinque secondi (il valore predefinito è di due secondi):
watch kubectl top node -n 5
Nota: è necessario scaricare il comando watch per il tuo ambiente.
Il tuo cluster Kubernetes deve inoltre avere heapster in esecuzione affinché il comando top funzioni; in caso contrario riceverai il seguente errore: "Error from server (NotFound): the server could not find the requested resource (get services http:heapster:)"
Il comando kubectl fornisce una visione riassuntiva delle risorse memorizzate dall'apiserver. Ci sono molti altri campi memorizzati dall'apiserver che non vengono mostrati. Puoi usare il comando kubectl get con l'output delle risorse grezze per creare la tua visualizzazione e i tuoi comandi.
Puoi stampare le risorse grezze in JSON con il seguente comando:
kubectl get deployments -o json
Puoi anche chiamare direttamente la risorsa usando la chiamata API:
kubectl get --raw=/apis/apps/v1/deployments
Puoi persino combinare l'output con strumenti come jq per fornire visualizzazioni diverse, filtrare l'output o alimentare l'output ad altri strumenti per l'automazione avanzata.
Ad esempio, può essere difficile trovare problemi su cluster con più namespace e distribuzioni, ma l'esempio qui sotto utilizza l'API grezza per analizzare tutte le distribuzioni nel cluster e filtrare solo quelle con repliche non riuscite:
kubectl get --raw=/apis/apps/v1/deployments | jq '.items[]
| {name: .metadata.name, replicas: .status.replicas, available:
(.status.availableReplicas // 0), unavailable:
(.status.unavailableReplicas // 0)} | select (.unavailable > 0)'
Di seguito viene fornita una breve spiegazione del comando sopra:
kubectl get --raw=/apis/apps/v1/deployments | jq .
kubectl get --raw=/apis/apps/v1/deployments | jq '.items[] |
{name: .metadata.name, replicas: .status.replicas, available:
(.status.availableReplicas // 0), unavailable:
(.status.unavailableReplicas // 0)}'
kubectl get --raw=/apis/apps/v1/deployments | jq '.items[] |
{name: .metadata.name, replicas: .status.replicas, available:
(.status.availableReplicas // 0), unavailable:
(.status.unavailableReplicas // 0)} | select (.unavailable > 0)'
Ci auguriamo che questi suggerimenti e trucchi ti siano utili mentre lavori con Kubernetes. Facci sapere se hai un suggerimento preferito o uno tuo che vorresti condividere.
Non dimenticare di dare un'occhiata a IBM Cloud Kubernetes Service e mettere in pratica questi consigli e trucchi.
Vuoi fare esperienza pratica e gratuita con Kubernetes? Utilizza al meglio IBM CloudLab, una nuova piattaforma interattiva che offre tutorial Kubernetes con certificazione, senza costi o configurazioni necessari.
Red Hat OpenShift on IBM Cloud è una OpenShift Container Platform (OCP) completamente gestita.
Le soluzioni basate su container eseguono e scalano workload containerizzati con sicurezza, innovazione open source e implementazione rapida.
Sblocca nuove funzionalità e promuovi l'agilità aziendale con i servizi di consulenza cloud di IBM. Scopri come creare insieme soluzioni, accelerare la trasformazione digitale e ottimizzare le prestazioni attraverso strategie di hybrid cloud e partnership di esperti.