Likwidacja przewodników interaktywnych
Przewodniki interaktywne wkrótce nie będą już dostępne na tej stronie. Mamy nadzieję, że docelowo podobna forma kształcenia stanie się jednak częścią projektu Kubernetes.
Niedostępność przewodników jest efektem Free Katacoda Kubernetes Tutorials Are Shutting Down.
Hello Minikube
Ten samouczek pokaże, jak uruchomić przykładową aplikację na Kubernetesie 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. Odwiedź stronę minikube start, aby dowiedzieć się, jak go zainstalować.Cele
- Skonfiguruj przykładową aplikację do uruchomienia w minikube.
- Uruchom aplikację.
- Przejrzyj jej logi.
Zanim zaczniesz
W tym samouczku wykorzystamy obraz kontenera, który korzysta z NGINX, aby wyświetlić z powrotem wszystkie przychodzące zapytania.
Stwórz klaster minikube
Kliknij w Launch Terminal
Informacja:
Jeśli masz minikube zainstalowane lokalnie, uruchom `minikube start`. Przed uruchomieniem `minikube dashboard`, otwórz okno nowego terminala, uruchom w nim `minikube dashboard` i przełącz się z powrotem do okna głównego terminala.
Otwórz panel Kubernetesa 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.
Informacja:
Polecenie dashboard
uruchamia dodatek panelu i otwiera proxy w domyślnej przeglądarce.
W panelu można tworzyć różne obiekty Kubernetesa, takie jak Deployment czy Serwis.
Jeśli pracujesz z uprawnieniami roota, skorzystaj z: Otwieranie panelu poprzez URL.
Panel jest domyślnie dostępny jedynie z wewnętrznej sieci Kubernetesa.
Polecenie dashboard
tworzy tymczasowe proxy, które udostępnia panel także poza tą wewnętrzną sieć.
Aby zatrzymać proxy, wciśnij Ctrl+C
i zakończ proces.
Panel ciągle działa na klastrze Kubernetesa, nawet po przerwaniu działania proxy.
Aby dostać się ponownie do panelu, trzeba stworzyć kolejne proxy poleceniem dashboard
.
Otwieranie panelu poprzez URL
Jeśli nie chcesz otwierać przeglądarki, uruchom panel z opcją --url
, aby wyświetlić URL:
minikube dashboard --url
Stwórz Deployment
Pod w Kubernetesie 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 Kubernetesie monitoruje stan twojego Poda i restartuje należące do niego kontenery, jeśli z jakichś powodów przestaną 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=registry.k8s.io/e2e-test-images/agnhost:2.39 -- /agnhost netexec --http-port=8080
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 polecenia `kubectl` znajdziesz w [przeglądzie kubectl](/docs/reference/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 Kubernetesa, musisz najpierw udostępnić Pod
jako Serwis Kubernetes.
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.Aplikacja, która jest umieszczona w obrazie kontenera
registry.k8s.io/echoserver
, nasłuchuje jedynie na porcie TCP 8080. Jeśli użyłeśkubectl expose
do wystawienia innego portu, aplikacje klienckie mogą nie móc się podłączyć do tamtego innego portu.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, serwis typu
LoadBalancer
można udostępnić poprzez polecenieminikube 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 obok8080
w opisie Serwisu) i kliknij Display PortOtworzy sie okno przeglądarki obsługującej twoją aplikację i wyświetli odpowiedź tej aplikacji.
Włącz dodatki
Narzędzie minikube dysponuje zestawem wbudowanych dodatków, 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:
The 'metrics-server' addon is enabled
Sprawdź Pody i Serwisy, 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:
metrics-server 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
Co dalej?
- Dowiedz się więcej o obiektach typu Deployment.
- Dowiedz się więcej o instalowaniu aplikacji.
- Dowiedz się więcej o obiektach typu Serwis.