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.
W tym samouczku wykorzystamy obraz kontenera zbudowany z następujących plików:
minikube/server.js
|
---|
|
minikube/Dockerfile
|
---|
|
Więcej informacji na temat polecenia docker build
znajdziesz w dokumentacji Dockera.
Kliknij w Launch Terminal
Informacja: Jeśli masz Minikube zainstalowane lokalnie, uruchomminikube start
.
Otwórz panel Kubernetes w przeglądarce:
minikube dashboard
Tylko w Katacoda: Na górze okienka z terminalem kliknij na znak plus, a następnie wybierz Select port to view on Host 1.
Tylko w Katacoda: Wpisz 30000
i kliknij Display Port.
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.
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
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
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
Obejrzyj zdarzenia na klastrze:
kubectl get events
Sprawdź konfigurację kubectl
:
kubectl config view
Informacja: Więcej informacji na temat poleceniakubectl
znajdziesz w przeglądzie kubectl.
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.
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.
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
.
Uruchom poniższe polecenie:
minikube service hello-node
Tylko w Katacoda: Kliknij znak plus, a następnie Select port to view on Host 1.
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”.
Minikube ma zestaw wbudowanych dodatkówResources that extend the functionality of Kubernetes. , które mogą być włączane, wyłączane i otwierane w lokalnym środowisku Kubernetes.
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
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
Włącz dodatek, na przykład metrics-server
:
minikube addons enable metrics-server
Wynik powinien wyglądać podobnie do:
metrics-server was successfully enabled
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/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
Wyłącz dodatek metrics-server
:
minikube addons disable metrics-server
Wynik powinien wyglądać podobnie do:
heapster was successfully metrics-server
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
Czy ta strona była przydatna?
Dziękujemy za informację zwrotną. Jeśli masz konkretne pytanie dotyczące użycia Kubernetesa, odwiedź Stack Overflow. Otwórz zgłoszenie w repozytorium GitHub, jeśli chcesz zgłosić problem lub zaproponować poprawkę.