# Creazione di pod di Kubernetes

La configurazione dei pod di Kubernetes può avvenire con approccio **imperativo, dichiarativo o per mezzo di interfacce API**. Durante la configurazione puoi anche indicare e modificare risorse supplementari per i container interessati.

## Creazione di pod di Kubernetes: i requisiti

Per realizzare un [pod di Kubernetes](https://www.ionos.it/digitalguide/server/configurazione/pod-di-kubernetes/) è necessario un **cluster Kubernetes** in esecuzione, in locale o su un sistema di sviluppo, all’interno di un ambiente cloud oppure on-premises. Per l’installazione ti consigliamo di seguire il [tutorial di Kubernetes](https://www.ionos.it/digitalguide/server/configurazione/tutorial-kubernetes/). Inoltre, devi assicurarti che sul tuo computer sia presente e configurato lo strumento a riga di comando kubectl per poter interagire con il cluster Kubernetes. Verifica anche che il file kubeconfig sia configurato correttamente per stabilire una connessione funzionante con il cluster.

Consiglio [Managed Kubernetes](https://cloud.ionos.it/managed/kubernetes "Managed Kubernetes di IONOS") di IONOS garantisce l’elevata disponibilità delle tue distribuzioni K8s, ottimizzando i costi al tempo stesso. L’integrazione nell’ecosistema cloud di IONOS offre inoltre un avanzato sistema di memoria dati persistente e completamente integrato.

## Guida: creazione di pod di Kubernetes

In Kubernetes è possibile creare i pod in tre modi diversi:

1. Configurazione imperativa
2. Configurazione dichiarativa
3. Utilizzo dell’interfaccia API

### Configurazione imperativa

Con l’approccio imperativo fornisci al sistema istruzioni esplicite tramite la riga di comando `kubectl` su come creare un pod di Kubernetes senza aver prima predisposto un file di configurazione dettagliato.

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

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

Poiché il metodo imperativo apporta modifiche direttamente senza definire chiaramente lo stato previsto, in genere si consiglia l’approccio dichiarativo.

### Configurazione dichiarativa

L’approccio dichiarativo in Kubernetes richiede la definizione dello stato desiderato delle risorse utilizzando i **file di configurazione YAML**.

Apri un editor di testo e crea un file YAML, ad esempio `nginx-pod.yaml`, che descriva lo stato desiderato del pod Nginx.

```yaml
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
```

Utilizza il comando `kubectl apply` per attivare il pod di Kubernetes in base alla configurazione dichiarativa.

```shell
kubectl apply -f nginx-pod.yaml
```

Le configurazioni dichiarative che indichi nel file YAML sono una definizione concreta dello **stato previsto**, inclusa la versione del pod da creare. Questa soluzione ti permette di gestire e monitorare le risorse nel tuo cluster Kubernetes in modo più trasparente.

### Utilizzo dell’interfaccia API

Kubernetes mette a tua disposizione una **API RESTful** che ti permette di interagire con il cluster Kubernetes. Prima di utilizzare l’API devi autenticarti e ottenere l’autorizzazione. A tal fine, di solito devi fornire token o certificati di accesso, a seconda della configurazione del cluster Kubernetes.

A seguire trovi un esempio di creazione di un **file JSON** per un pod Nginx utilizzando l’API REST.

```shell
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
```

Per attivare il pod di Kubernetes utilizza `curl`, che ti permette di comunicare con l’API REST del cluster Kubernetes:

```shell
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
```

Questo comando `curl` invia una **richiesta HTTPS POST** a un endpoint del cluster Kubernetes. Le opzioni `-k` e `-v` servono rispettivamente a ignorare la verifica del certificato SSL e a utilizzare la modalità Verbose. Con `-X` POST puoi definire una richiesta POST. L’intestazione **Authorization** contiene un token bearer (sostituisci `<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.

## Visualizzazione dei pod

Per verificare lo stato corrente di tutti i pod nello **spazio dei nomi**, utilizza il seguente comando:

```shell
kubectl get pods
```

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

Per ottenere informazioni più dettagliate utilizza il comando seguente:

```shell
kubectl describe pod my-pod
```

Questo comando restituisce informazioni dettagliate sul pod, compresa la configurazione, gli eventi e le transizioni di stato.

Per visualizzare i **registri** del container principale del pod di Kubernetes utilizza il comando seguente:

```shell
kubectl logs my-pod
```

In presenza di più container puoi contrassegnare il container con l’opzione `-c`.

## Eliminazione di un pod

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

```shell
kubectl delete pod nginx
```

Questo comando arresta il pod di Kubernetes selezionato e chiude il container corrispondente. In questo esempio abbiamo eliminato correttamente il pod Nginx dal cluster.


This is a markdown version of: [https://www.ionos.it/digitalguide/server/configurazione/creazione-di-pod-di-kubernetes/](https://www.ionos.it/digitalguide/server/configurazione/creazione-di-pod-di-kubernetes/) for AI/LLM consumption.