La con­fi­gu­ra­zio­ne dei pod di Ku­ber­ne­tes può avvenire con approccio im­pe­ra­ti­vo, di­chia­ra­ti­vo o per mezzo di in­ter­fac­ce API. Durante la con­fi­gu­ra­zio­ne puoi anche indicare e mo­di­fi­ca­re risorse sup­ple­men­ta­ri per i container in­te­res­sa­ti.

Creazione di pod di Ku­ber­ne­tes: i requisiti

Per rea­liz­za­re un pod di Ku­ber­ne­tes è ne­ces­sa­rio un cluster Ku­ber­ne­tes in ese­cu­zio­ne, in locale o su un sistema di sviluppo, all’interno di un ambiente cloud oppure on-premises. Per l’in­stal­la­zio­ne ti con­si­glia­mo di seguire il tutorial di Ku­ber­ne­tes. Inoltre, devi as­si­cu­rar­ti che sul tuo computer sia presente e con­fi­gu­ra­to lo strumento a riga di comando kubectl per poter in­te­ra­gi­re con il cluster Ku­ber­ne­tes. Verifica anche che il file ku­be­con­fig sia con­fi­gu­ra­to cor­ret­ta­men­te per stabilire una con­nes­sio­ne fun­zio­nan­te con il cluster.

Consiglio

Managed Ku­ber­ne­tes di IONOS ga­ran­ti­sce l’elevata di­spo­ni­bi­li­tà delle tue di­stri­bu­zio­ni K8s, ot­ti­miz­zan­do i costi al tempo stesso. L’in­te­gra­zio­ne nell’eco­si­ste­ma cloud di IONOS offre inoltre un avanzato sistema di memoria dati per­si­sten­te e com­ple­ta­men­te integrato.

Guida: creazione di pod di Ku­ber­ne­tes

In Ku­ber­ne­tes è possibile creare i pod in tre modi diversi:

  1. Con­fi­gu­ra­zio­ne im­pe­ra­ti­va
  2. Con­fi­gu­ra­zio­ne di­chia­ra­ti­va
  3. Utilizzo dell’in­ter­fac­cia API

Con­fi­gu­ra­zio­ne im­pe­ra­ti­va

Con l’approccio im­pe­ra­ti­vo fornisci al sistema istru­zio­ni esplicite tramite la riga di comando kubectl su come creare un pod di Ku­ber­ne­tes senza aver prima pre­di­spo­sto un file di con­fi­gu­ra­zio­ne det­ta­glia­to.

kubectl run nginx --image=nginx --restart=Never
shell

Questo comando crea un singolo pod di nome nginx che contiene il server web Nginx.

Poiché il metodo im­pe­ra­ti­vo apporta modifiche di­ret­ta­men­te senza definire chia­ra­men­te lo stato previsto, in genere si consiglia l’approccio di­chia­ra­ti­vo.

Con­fi­gu­ra­zio­ne di­chia­ra­ti­va

L’approccio di­chia­ra­ti­vo in Ku­ber­ne­tes richiede la de­fi­ni­zio­ne dello stato de­si­de­ra­to delle risorse uti­liz­zan­do i file di con­fi­gu­ra­zio­ne YAML.

Apri un editor di testo e crea un file YAML, ad esempio nginx-pod.yaml, che descriva lo stato de­si­de­ra­to del pod Nginx.

apiVersion: apps/v1
kind: Deployment
metadata:
    name: nginx-deployment
spec:
    selector:
        matchLabels:
            app: nginx
    minReadySeconds: 5
    template:
        metadata:
            labels:
                app: nginx
        spec:
            containers:
            - name: nginx-container
                image: nginx:latest
                ports:
                - containerPort: 80
yaml

Utilizza il comando kubectl apply per attivare il pod di Ku­ber­ne­tes in base alla con­fi­gu­ra­zio­ne di­chia­ra­ti­va.

kubectl apply -f nginx-pod.yaml
shell

Le con­fi­gu­ra­zio­ni di­chia­ra­ti­ve che indichi nel file YAML sono una de­fi­ni­zio­ne concreta dello stato previsto, inclusa la versione del pod da creare. Questa soluzione ti permette di gestire e mo­ni­to­ra­re le risorse nel tuo cluster Ku­ber­ne­tes in modo più tra­spa­ren­te.

Utilizzo dell’in­ter­fac­cia API

Ku­ber­ne­tes mette a tua di­spo­si­zio­ne una API RESTful che ti permette di in­te­ra­gi­re con il cluster Ku­ber­ne­tes. Prima di uti­liz­za­re l’API devi au­ten­ti­car­ti e ottenere l’au­to­riz­za­zio­ne. A tal fine, di solito devi fornire token o cer­ti­fi­ca­ti di accesso, a seconda della con­fi­gu­ra­zio­ne del cluster Ku­ber­ne­tes.

A seguire trovi un esempio di creazione di un file JSON per un pod Nginx uti­liz­zan­do l’API REST.

cat > nginx-pod.json <<EOF
{
    "apiVersion": "apps/v1",
    "kind": "Deployment",
    "metadata": {
        "name": "nginx-deployment"
    },
    "spec": {
        "selector": {
            "matchLabels": {
                "app": "nginx"
            }
        },
        "minReadySeconds": 5,
        "template": {
            "metadata": {
                "labels": {
                    "app": "nginx"
                }
            },
            "spec": {
                "containers": [
                    {
                        "name": "nginx-container",
                        "image": "nginx:latest",
                        "ports": [
                            {
                                "containerPort": 80
                            }
                        ]
                    }
                ]
            }
        }
    }
}
EOF
shell

Per attivare il pod di Ku­ber­ne­tes utilizza curl, che ti permette di co­mu­ni­ca­re con l’API REST del cluster Ku­ber­ne­tes:

curl -k -v -X POST -H "Authorization: Bearer <JWT_TOKEN>" -H "Content-Type: application/json" https://cluster-ip:6443/api/v1/namespaces/default/pods -d@nginx-pod.json
shell

Questo comando curl invia una richiesta HTTPS POST a un endpoint del cluster Ku­ber­ne­tes. Le opzioni -k e -v servono ri­spet­ti­va­men­te a ignorare la verifica del cer­ti­fi­ca­to SSL e a uti­liz­za­re la modalità Verbose. Con -X POST puoi definire una richiesta POST. L’in­te­sta­zio­ne Au­tho­ri­za­tion contiene un token bearer (so­sti­tui­sci <JWT_TOKEN> con il token vero e proprio), mentre Content-Type specifica il tipo di formato dati JSON. L’opzione -d@nginx-pod.json trasmette i dati al server.

Vi­sua­liz­za­zio­ne dei pod

Per ve­ri­fi­ca­re lo stato corrente di tutti i pod nello spazio dei nomi, utilizza il seguente comando:

kubectl get pods
shell

Il risultato è un elenco di pod esistenti con il loro stato, l’ora di avvio e altri dettagli.

Per ottenere in­for­ma­zio­ni più det­ta­glia­te utilizza il comando seguente:

kubectl describe pod my-pod
shell

Questo comando re­sti­tui­sce in­for­ma­zio­ni det­ta­glia­te sul pod, compresa la con­fi­gu­ra­zio­ne, gli eventi e le tran­si­zio­ni di stato.

Per vi­sua­liz­za­re i registri del container prin­ci­pa­le del pod di Ku­ber­ne­tes utilizza il comando seguente:

kubectl logs my-pod
shell

In presenza di più container puoi con­tras­se­gna­re il container con l’opzione -c.

Eli­mi­na­zio­ne di un pod

Eliminare un pod è facile ed è possibile farlo con un semplice comando.

kubectl delete pod nginx
shell

Questo comando arresta il pod di Ku­ber­ne­tes se­le­zio­na­to e chiude il container cor­ri­spon­den­te. In questo esempio abbiamo eliminato cor­ret­ta­men­te il pod Nginx dal cluster.

Managed Ku­ber­ne­tes
Or­che­stra­zio­ne sicura dei carichi di lavoro dei container
  • Con­fi­gu­ra­zio­ne au­to­ma­ti­ca dei cluster Ku­ber­ne­tes
  • Ar­chi­via­zio­ne per­si­sten­te com­ple­ta­men­te integrata
  • As­si­sten­za clienti 24/7
Vai al menu prin­ci­pa­le