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.

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

  1. Click Launch Terminal

  2. Apri la console di Kubernetes nel browser:

    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 è 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.

  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.

    kubectl create deployment hello-node --image=k8s.gcr.io/echoserver:1.4
    
  2. 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
    
  3. 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
    
  4. Visualizza gli eventi del cluster Kubernetes:

    kubectl get events
    
  5. Visualizza la configurazione di kubectl:

    kubectl config view
    

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.

  1. 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.

  2. 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.

  3. Esegui il comando:

    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 addons che possono essere attivati, disattivati o eseguti nel ambiente Kubernetes locale.

  1. 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
    
  2. Attiva un addon, per esempio, metrics-server:

    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:

    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:

    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

Ultima modifica May 30, 2020 at 3:43 PM PST : add it pages (74d006a75)