Hello Minikube
Questo tutorial mostra come eseguire una semplice applicazione in Kubernetes utilizzando Minikube e Katacoda. Katacoda permette di operare su un'installazione di Kubernetes dal tuo browser.
Nota: Come alternativa, è possibile eseguire questo tutorial installando minikube localmente.
Obbiettivi
- Rilasciare una semplice applicazione su Minikube.
- Eseguire l'applicazione.
- Visualizzare i log dell'applicazione.
Prima di cominciare
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.
Crea un Minikube cluster
-
Click Launch Terminal
Nota: Se hai installato Minikube localmente, eseguiminikube start
. -
Apri la console di Kubernetes nel browser:
minikube dashboard
-
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.
-
Katacoda environment only: Inserisci
30000
, a seguire click su Display Port.
Crea un Deployment
Un Kubernetes 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 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.
-
Usa il comando
kubectl create
per creare un Deployment che gestisce un singolo Pod. Il Pod eseguirà un Container basato sulla Docker image specificata.kubectl create deployment hello-node --image=k8s.gcr.io/echoserver:1.4
-
Visualizza il Deployment:
kubectl get deployments
L'output del comando è simile a:
NAME READY UP-TO-DATE AVAILABLE AGE hello-node 1/1 1 1 1m
-
Visualizza il Pod creato dal Deployment:
kubectl get pods
L'output del comando è simile a:
NAME READY STATUS RESTARTS AGE hello-node-5f76cf6ccf-br9b5 1/1 Running 0 1m
-
Visualizza gli eventi del cluster Kubernetes:
kubectl get events
-
Visualizza la configurazione di
kubectl
:kubectl config view
Nota: Per maggiori informazioni sui comandi dikubectl
, vedi kubectl overview.
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.
-
Esponi il Pod su internet untilizzando il comando
kubectl expose
: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. -
Visualizza il Servizio appena creato:
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 comandominikube service
. -
Esegui il comando:
minikube service hello-node
-
Katacoda environment only: Fai click segno più, e a seguire click su Select port to view on Host 1.
-
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 scritto30369
.Questo apre un finestra nel browser dove l'applicazione visuallizza l'echo delle richieste ricevute.
Attiva gli addons
Minikube include un set addons che possono essere attivati, disattivati o eseguti nel ambiente Kubernetes locale.
-
Elenca gli addons disponibili:
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
-
Attiva un addon, per esempio,
metrics-server
:minikube addons enable metrics-server
L'output del comando è simile a:
metrics-server was successfully enabled
-
Visualizza i Pods ed i Service creati in precedenza:
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
-
Disabilita
metrics-server
: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:
kubectl delete service hello-node
kubectl delete deployment hello-node
Eventualmente, puoi stoppare la Minikube virtual machine (VM):
minikube stop
Eventualmente, puoi cancellare la Minikube VM:
minikube delete
Voci correlate
- Approfondisci la tua conoscenza dei Deployments.
- Approfondisci la tua conoscenza di Rilasciare applicazioni.
- Approfondisci la tua conoscenza dei Services.