2020-05-20 10:30:39 +00:00
---
title: Hello Minikube
2020-05-30 19:43:58 +00:00
content_type: tutorial
2020-05-20 10:30:39 +00:00
weight: 5
menu:
main:
title: "Cominciamo!"
weight: 10
post: >
< p > Sei pronto a cominciare con Kubernetes? Crea un Kubernetes cluster ed esegui un'appliczione di esempio.< / p >
card:
name: tutorials
weight: 10
---
2020-05-30 19:43:58 +00:00
<!-- overview -->
2020-05-20 10:30:39 +00:00
Questo tutorial mostra come eseguire una semplice applicazione in Kubernetes
utilizzando [Minikube ](/docs/setup/learning-environment/minikube ) e Katacoda.
Katacoda permette di operare su un'installazione di Kubernetes dal tuo browser.
{{< note > }}
Come alternativa, è possibile eseguire questo tutorial [installando minikube ](/docs/tasks/tools/install-minikube/ ) localmente.
{{< / note > }}
2020-05-30 19:43:58 +00:00
## {{% heading "objectives" %}}
2020-05-20 10:30:39 +00:00
* Rilasciare una semplice applicazione su Minikube.
* Eseguire l'applicazione.
* Visualizzare i log dell'applicazione.
2020-05-30 19:43:58 +00:00
## {{% heading "prerequisites" %}}
2020-05-20 10:30:39 +00:00
Questo tutorial fornisce una container image che utilizza NGINX per risponde a tutte le richieste
con un echo che visualizza i dati della richiesta stessa.
2020-05-30 19:43:58 +00:00
<!-- lessoncontent -->
2020-05-20 10:30:39 +00:00
## Crea un Minikube cluster
1. Click **Launch Terminal**
{{< kat-button > }}
{{< note > }}Se hai installato Minikube localmente, esegui `minikube start` .{{< / note > }}
2. Apri la console di Kubernetes nel browser:
```shell
minikube dashboard
```
3. Katacoda environment only: In alto alla finestra del terminale, fai click segno più, e a seguire click su **Select port to view on Host 1** .
4. Katacoda environment only: Inserisci `30000` , a seguire click su **Display Port** .
## Crea un Deployment
Un Kubernetes [*Pod* ](/docs/concepts/workloads/pods/pod/ ) è un gruppo di uno o più Containers,
che sono uniti tra loro dal punto di vista amministrativo e che condividono lo stesso network.
Il Pod in questo tutorial ha un solo Container. Un Kubernetes
[*Deployment* ](/docs/concepts/workloads/controllers/deployment/ ) monitora lo stato del Pod ed
eventualmente provvedere a farlo ripartire nel caso questo termini. L'uso dei Deployments è la
modalità raccomandata per gestire la creazione e lo scaling dei Pods.
1. Usa il comando `kubectl create` per creare un Deployment che gestisce un singolo Pod. Il Pod
eseguirà un Container basato sulla Docker image specificata.
```shell
kubectl create deployment hello-node --image=k8s.gcr.io/echoserver:1.4
```
2. Visualizza il Deployment:
```shell
kubectl get deployments
```
L'output del comando è simile a:
```
NAME READY UP-TO-DATE AVAILABLE AGE
hello-node 1/1 1 1 1m
```
3. Visualizza il Pod creato dal Deployment:
```shell
kubectl get pods
```
L'output del comando è simile a:
```
NAME READY STATUS RESTARTS AGE
hello-node-5f76cf6ccf-br9b5 1/1 Running 0 1m
```
4. Visualizza gli eventi del cluster Kubernetes:
```shell
kubectl get events
```
5. Visualizza la configurazione di `kubectl` :
```shell
kubectl config view
```
{{< note > }}Per maggiori informazioni sui comandi di `kubectl` , vedi [kubectl overview ](/docs/user-guide/kubectl-overview/ ).{{< / note > }}
## Crea un Service
Con le impostazioni di default, un Pod è accessibile solamente dagli indirizzi IP interni
al Kubernetes cluster. Per far si che il Container `hello-node` sia accessibile dall'esterno
del Kubernetes virtual network, è necessario esporre il Pod utilizzando un
Kubernetes [*Service* ](/docs/concepts/services-networking/service/ ).
1. Esponi il Pod su internet untilizzando il comando `kubectl expose` :
```shell
kubectl expose deployment hello-node --type=LoadBalancer --port=8080
```
Il flag `--type=LoadBalancer` indica la volontà di esporre il Service
all'esterno del Kubernetes cluster.
2. Visualizza il Servizio appena creato:
```shell
kubectl get services
```
L'output del comando è simile a:
```
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hello-node LoadBalancer 10.108.144.78 < pending > 8080:30369/TCP 21s
kubernetes ClusterIP 10.96.0.1 < none > 443/TCP 23m
```
Nei cloud providers che supportano i servizi di tipo load balancers,
viene fornito un indirizzo IP pubblico per permettere l'acesso al Service. Su Minikube,
il service type `LoadBalancer` rende il Service accessibile attraverso il comando `minikube service` .
3. Esegui il comando:
```shell
minikube service hello-node
```
4. Katacoda environment only: Fai click segno più, e a seguire click su **Select port to view on Host 1** .
5. Katacoda environment only: Fai attenzione al numero di 5 cifre visualizzato a fianco di `8080` nell'output del comando. Questo port number è generato casualmente e può essere diverso nel tuo caso. Inserisci il tuo port number nella textbox, e a seguire fai click su Display Port. Nell'esempio precedente, avresti scritto `30369` .
Questo apre un finestra nel browser dove l'applicazione visuallizza l'echo delle richieste ricevute.
## Attiva gli addons
Minikube include un set {{< glossary_tooltip text = "addons" term_id = "addons" > }} che possono essere attivati, disattivati o eseguti nel ambiente Kubernetes locale.
1. Elenca gli addons disponibili:
```shell
minikube addons list
```
L'output del comando è simile a:
```
addon-manager: enabled
dashboard: enabled
default-storageclass: enabled
efk: disabled
freshpod: disabled
gvisor: disabled
helm-tiller: disabled
ingress: disabled
ingress-dns: disabled
logviewer: disabled
metrics-server: disabled
nvidia-driver-installer: disabled
nvidia-gpu-device-plugin: disabled
registry: disabled
registry-creds: disabled
storage-provisioner: enabled
storage-provisioner-gluster: disabled
```
2. Attiva un addon, per esempio, `metrics-server` :
```shell
minikube addons enable metrics-server
```
L'output del comando è simile a:
```
metrics-server was successfully enabled
```
3. Visualizza i Pods ed i Service creati in precedenza:
```shell
kubectl get pod,svc -n kube-system
```
L'output del comando è simile a:
```
NAME READY STATUS RESTARTS AGE
pod/coredns-5644d7b6d9-mh9ll 1/1 Running 0 34m
pod/coredns-5644d7b6d9-pqd2t 1/1 Running 0 34m
pod/metrics-server-67fb648c5 1/1 Running 0 26s
pod/etcd-minikube 1/1 Running 0 34m
pod/influxdb-grafana-b29w8 2/2 Running 0 26s
pod/kube-addon-manager-minikube 1/1 Running 0 34m
pod/kube-apiserver-minikube 1/1 Running 0 34m
pod/kube-controller-manager-minikube 1/1 Running 0 34m
pod/kube-proxy-rnlps 1/1 Running 0 34m
pod/kube-scheduler-minikube 1/1 Running 0 34m
pod/storage-provisioner 1/1 Running 0 34m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/metrics-server ClusterIP 10.96.241.45 < none > 80/TCP 26s
service/kube-dns ClusterIP 10.96.0.10 < none > 53/UDP,53/TCP 34m
service/monitoring-grafana NodePort 10.99.24.54 < none > 80:30002/TCP 26s
service/monitoring-influxdb ClusterIP 10.111.169.94 < none > 8083/TCP,8086/TCP 26s
```
4. Disabilita `metrics-server` :
```shell
minikube addons disable metrics-server
```
L'output del comando è simile a:
```
metrics-server was successfully disabled
```
## Clean up
Adesso puoi procedere a fare clean up delle risorse che hai creato nel tuo cluster:
```shell
kubectl delete service hello-node
kubectl delete deployment hello-node
```
Eventualmente, puoi stoppare la Minikube virtual machine (VM):
```shell
minikube stop
```
Eventualmente, puoi cancellare la Minikube VM:
```shell
minikube delete
```
2020-05-30 19:43:58 +00:00
## {{% heading "whatsnext" %}}
2020-05-20 10:30:39 +00:00
* Approfondisci la tua conoscenza dei [Deployments ](/docs/concepts/workloads/controllers/deployment/ ).
* Approfondisci la tua conoscenza di [Rilasciare applicazioni ](/docs/tasks/run-application/run-stateless-application-deployment/ ).
* Approfondisci la tua conoscenza dei [Services ](/docs/concepts/services-networking/service/ ).
2020-05-30 19:43:58 +00:00