Black lives matter.
We stand in solidarity with the Black community.
Racism is unacceptable.
It conflicts with the core values of the Kubernetes project and our community does not tolerate it.
We stand in solidarity with the Black community.
Racism is unacceptable.
It conflicts with the core values of the Kubernetes project and our community does not tolerate it.
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.
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.
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.
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.
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 comando minikube 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 scritto 30369
.
Questo apre un finestra nel browser dove l'applicazione visuallizza l'echo delle richieste ricevute.
Minikube include un set addonsResources that extend the functionality of Kubernetes. 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
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