Jak użyć kubectl do tworzenia Deploymentu

Poznaj sposób wdrażania aplikacji. Wdróż swoją pierwszą aplikację na Kubernetesie za pomocą narzędzia kubectl.

Cele

  • Nauczyć się jak działa Deployment dla aplikacji.
  • Zainstalować pierwszą aplikację używając kubectl.

Instalacje w Kubernetes

Mając działający klaster Kubernetesa, można na nim zacząć instalować aplikacje. W tym celu należy utworzyć Deployment. Deployment informuje Kubernetesa, jak tworzyć i aktualizować instancje Twojej aplikacji. Po stworzeniu Deploymentu, warstwa sterowania Kubernetesa zleca uruchomienie tej aplikacji na indywidualnych węzłach klastra.

Po utworzeniu instancji aplikacji, kontroler Deploymentu Kubernetesa na bieżąco monitoruje te instancje. Jeśli węzeł, na którym działała jedna z instancji ulegnie awarii lub zostanie usunięty, kontroler Deploymentu zamieni tę instancję z instancją na innym węźle klastra. W ten sposób działa samo naprawiający się mechanizm, który reaguje na awarie lub wyłączenia maszyn w klastrze.

W czasach przed wprowadzeniem takiej automatyzacji, skrypty instalacyjne używane były zazwyczaj do uruchomienia aplikacji, ale nie radziły sobie z awariami maszyn. Poprzez połączenie procesu instalacji i kontroli nad działaniem aplikacji na węzłach, Deployment Kubernetesa oferuje fundamentalnie różne podejście do zarządzania aplikacjami.

Podsumowanie:

  • Deploymenty
  • Kubectl

Deployment odpowiada za stworzenie i aktualizacje instancji Twojej aplikacji


Instalacja pierwszej aplikacji w Kubernetes


Do tworzenia i zarządzaniem Deploymentem służy polecenie linii komend, kubectl. Kubectl używa Kubernetes API do komunikacji z klasterem. W tym module nauczysz się najczęściej używanych poleceń kubectl niezbędnych do stworzenia Deploymentu, który uruchomi Twoje aplikacje na klastrze Kubernetes.

Tworząc Deployment musisz określić obraz kontenera oraz liczbę replik, które mają być uruchomione. Te ustawienia możesz zmieniać później, aktualizując Deployment. Moduły 5 oraz 6 omawiają skalowanie i aktualizowanie Deploymentów.

Aby aplikacja mogła zostać uruchomiona w Kubernetes, musi być opakowana w jeden z obsługiwanych formatów kontenerów

Na potrzeby pierwszej instalacji użyjesz aplikacji hello-node zapakowaną w kontener Docker-a, która korzysta z NGINXa i powtarza wszystkie wysłane do niej zapytania. (Jeśli jeszcze nie próbowałeś stworzyć aplikacji hello-node i uruchomić za pomocą kontenerów, możesz spróbować teraz, kierując się instrukcjami samouczka Hello Minikube).

Musisz mieć zainstalowane narzędzie kubectl. Jeśli potrzebujesz go zainstalować, odwiedź install tools.

Skoro wiesz już, czym są Deploymenty, zróby wdrożenie pierwszej aplikacji!


Podstawy kubectl

Typowy format polecenia kubectl to: kubectl akcja zasób

Wykonuje określoną akcję (jak create, describe lub delete) na określonym zasobie (jak node lub deployment). Możesz użyć --help po poleceniu, aby uzyskać dodatkowe informacje o możliwych parametrach (na przykład: kubectl get nodes --help).

Sprawdź, czy kubectl jest skonfigurowany do komunikacji z twoim klastrem, uruchamiając polecenie kubectl version.

Sprawdź, czy kubectl jest zainstalowane oraz czy możesz zobaczyć zarówno wersję klienta, jak i serwera.

Aby wyświetlić węzły w klastrze, uruchom polecenie kubectl get nodes.

Zobaczysz dostępne węzły. Kubernetes wybierze, gdzie wdrożyć naszą aplikację, w oparciu o dostępne zasoby węzła.

Wdrażanie aplikacji

Uruchommy naszą pierwszą aplikację na Kubernetesie, używając polecenia kubectl create deployment. Musimy podać nazwę wdrożenia oraz lokalizację obrazu aplikacji (w tym pełny adres URL repozytorium dla obrazów hostowanych poza Docker Hub).

kubectl create deployment kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1

Świetnie! Właśnie wdrożyłeś swoją pierwszą aplikację, tworząc wdrożenie. Kubernetes wykonał dla Ciebie kilka rzeczy:

  • wyszukał odpowiedni węzeł, na którym można uruchomić instancję aplikacji (mamy dostępny tylko 1 węzeł)
  • zaplanował uruchomienie aplikacji na tym węźle
  • skonfigurował klaster do ponownego zaplanowania instancji na nowym węźle w razie potrzeby

Aby wyświetlić listę swoich wdrożeń, użyj polecenia kubectl get deployments:

kubectl get deployments

Widzimy, że jest 1 Deployment uruchamiający pojedynczą instancję Twojej aplikacji. Instancja działa wewnątrz kontenera na Twoim węźle.

Zobacz aplikację

Pody działające wewnątrz Kubernetesa działają na prywatnej, izolowanej sieci. Domyślnie są one widoczne z innych podów i usług w ramach tego samego klastra Kubernetesa, ale nie poza tą siecią. Kiedy używamy kubectl, komunikujemy się z aplikacją za pośrednictwem API.

Później, w Module 4, omówimy inne opcje dotyczące sposobów udostępniania Twojej aplikacji poza klastrem Kubernetesa. Ponieważ jest to tylko podstawowy samouczek, to nie wyjaśniamy tutaj szczegółowo, czym są Pody, bo będzie to omówione w późniejszych tematach.

Polecenie kubectl proxy może utworzyć proxy, które przekaże komunikację do ogólnoklastrowej, prywatnej sieci. Proxy można zakończyć poprzez naciśnięcie control-C - podczas działania nie wyświetla ono żadnych komunikatów.

Musisz otworzyć drugie okno terminala, aby uruchomić proxy.

kubectl proxy

Mamy teraz połączenie pomiędzy naszym hostem (terminalem) a klastrem Kubernetes. Proxy umożliwia bezpośredni dostęp do API z tych terminali.

Możesz zobaczyć wszystkie te interfejsy API hostowane przez punkt końcowy serwera proxy. Na przykład możemy bezpośrednio zapytać o wersję za pomocą polecenia curl:

curl http://localhost:8001/version

Serwer API automatycznie utworzy punkt końcowy dla każdego poda, bazując na nazwie poda, który jest również dostępny przez serwer proxy.

Najpierw musimy uzyskać nazwę Poda i zapisać ją w zmiennej środowiskowej POD_NAME:

export POD_NAME=$(kubectl get pods -o go-template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}')
echo Nazwa Pod: $POD_NAME

Możesz uzyskać dostęp do Poda za pośrednictwem API z proxy, uruchamiając:

curl http://localhost:8001/api/v1/namespaces/default/pods/$POD_NAME:8080/proxy/

Aby nowy Deployment był dostępny bez użycia proxy, wymagane jest utworzenie obiektu usługi (ang. Service), co zostanie wyjaśnione w Module 4.

Gdy będziesz gotowy, przejdź do Podgląd Podów i Węzłów.

Ostatnia modyfikacja April 05, 2025 at 5:23 AM PST: [pl] sync deploy-intro.html with the latest EN version (d8ea5cf6f9)