Samouczki

Edit This Page

Hello Minikube

Ten samouczek pokaże, jak uruchomić prostą aplikację Hello World w Node.js na Kubernetes przy użyciu Minikube oraz Katacoda. Katacoda to darmowe środowisko Kubernetes dostępne bezpośrednio z przeglądarki web.

Informacja: Możesz też skorzystać z tego samouczka, jeśli już zainstalowałeś Minikube lokalnie.

Cele

  • Skonfiguruj aplikację hello world do uruchomienia w Minikube.
  • Uruchom aplikację.
  • Przejrzyj jej logi.

Nim zaczniesz

W tym samouczku wykorzystamy obraz kontenera zbudowany z następujących plików:

minikube/server.js
var http = require('http');

var handleRequest = function(request, response) {
  console.log('Received request for URL: ' + request.url);
  response.writeHead(200);
  response.end('Hello World!');
};
var www = http.createServer(handleRequest);
www.listen(8080);
minikube/Dockerfile
FROM node:6.14.2
EXPOSE 8080
COPY server.js .
CMD node server.js

Więcej informacji na temat polecenia docker build znajdziesz w dokumentacji Dockera.

Stwórz klaster Minikube

  1. Kliknij w Launch Terminal

    Informacja: Jeśli masz Minikube zainstalowane lokalnie, uruchom minikube start.
  2. Otwórz panel Kubernetes w przeglądarce:

    minikube dashboard
  3. Tylko w Katacoda: Na górze okienka z terminalem kliknij na znak plus, a następnie wybierz Select port to view on Host 1.

  4. Tylko w Katacoda: Wpisz 30000i kliknij Display Port.

Stwórz Deployment

Pod w Kubernetes to grupa jednego lub wielu kontenerów połączonych ze sobą na potrzeby administrowania i dostępu sieci. W tym samouczku Pod zawiera tylko jeden kontener. Deployment w Kubernetes monitoruje stan twojego Poda i restartuje należący do niego kontener, jeśli ten z jakichś powodów przestanie działać. Użycie Deploymentu to rekomendowana metoda zarządzania tworzeniem i skalowaniem Podów.

  1. Użyj polecenia kubectl create do stworzenia Deploymentu, który będzie zarządzał Podem. Pod uruchamia kontener wykorzystując podany obraz Dockera.

    kubectl create deployment hello-node --image=gcr.io/hello-minikube-zero-install/hello-node
  2. Sprawdź stan Deploymentu:

    kubectl get deployments

    Wynik powinien wyglądać podobnie do:

    NAME         READY   UP-TO-DATE   AVAILABLE   AGE
    hello-node   1/1     1            1           1m
    
  3. Sprawdź stan Poda:

    kubectl get pods

    Wynik powinien wyglądać podobnie do:

    NAME                          READY     STATUS    RESTARTS   AGE
    hello-node-5f76cf6ccf-br9b5   1/1       Running   0          1m
    
  4. Obejrzyj zdarzenia na klastrze:

    kubectl get events
  5. Sprawdź konfigurację kubectl:

    kubectl config view
    Informacja: Więcej informacji na temat polecenia kubectl znajdziesz w przeglądzie kubectl.

Stwórz Serwis

Domyślnie Pod jest dostępny tylko poprzez swój wewnętrzny adres IP wewnątrz klastra Kubernetes. Aby kontener hello-node był osiągalny spoza wirtualnej sieci Kubernetes, musisz najpierw wystawić Pod jako Serwis Kubernetes, na który można będzie dostać się z zewnątrz.

  1. Udostępnij Pod w Internecie przy pomocy polecenia kubectl expose:

    kubectl expose deployment hello-node --type=LoadBalancer --port=8080

    Opcja --type=LoadBalancer wskazuje, że chcesz udostępnić swój Serwis na zewnątrz klastra.

  2. Sprawdź Serwis, który właśnie utworzyłeś:

    kubectl get services
    

    Wynik powinien wyglądać podobnie do:

    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

    U dostawców usług chmurowych, którzy obsługują load balancers, zostanie przydzielony zewnętrzny adres IP na potrzeby serwisu. W Minikube, typ LoadBalancer udostępnia serwis poprzez polecenie minikube service.

  3. Uruchom poniższe polecenie:

    minikube service hello-node
  4. Tylko w Katacoda: Kliknij znak plus, a następnie Select port to view on Host 1.

  5. Tylko w Katacoda: Wpisz 30369 (sprawdź numer portu obok 8080 w opisie Serwisu) i kliknij Display Port

    Otworzy sie okno przeglądarki obsługującej twoją aplikację i wyświetli w nim komunikat “Hello World”.

Włącz dodatki

Minikube ma zestaw wbudowanych dodatków, które mogą być włączane, wyłączane i otwierane w lokalnym środowisku Kubernetes.

  1. Lista aktualnie obsługiwanych dodatków:

    minikube addons list

    Wynik powinien wyglądać podobnie do:

    addon-manager: enabled
    dashboard: enabled
    default-storageclass: enabled
    efk: disabled
    freshpod: disabled
    gvisor: disabled
    heapster: 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. Włącz dodatek, na przykład heapster:

    minikube addons enable heapster

    Wynik powinien wyglądać podobnie do:

    heapster was successfully enabled
    
  3. Sprawdź Pod i Serwis, który właśnie stworzyłeś:

    kubectl get pod,svc -n kube-system

    Wynik powinien wyglądać podobnie do:

    NAME                                        READY     STATUS    RESTARTS   AGE
    pod/coredns-5644d7b6d9-mh9ll                1/1       Running   0          34m
    pod/coredns-5644d7b6d9-pqd2t                1/1       Running   0          34m
    pod/heapster-9jttx                          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/heapster               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. Wyłącz dodatek heapster:

    minikube addons disable heapster

    Wynik powinien wyglądać podobnie do:

    heapster was successfully disabled
    

Porządkujemy po sobie

Teraz jest czas na wyczyszczenie zasobów, które utworzyłeś w klastrze:

kubectl delete service hello-node
kubectl delete deployment hello-node

(Opcjonalnie) Zatrzymaj wirtualną maszynę Minikube (VM):

minikube stop

(Opcjonalnie) Skasuj Minikube VM:

minikube delete

Następne:

Twoja opinia