Hello Minikube

Ten samouczek pokaże, jak uruchomić przykładową aplikację na Kubernetesie przy użyciu minikube. W tym samouczku wykorzystamy obraz kontenera, który korzysta z NGINX, aby wyświetlić z powrotem wszystkie przychodzące zapytania.

Cele

  • Skonfiguruj przykładową aplikację do uruchomienia w minikube.
  • Uruchom aplikację.
  • Przejrzyj jej logi.

Zanim zaczniesz

Ten tutorial zakłada, że masz już skonfigurowane narzędzie minikube. Instrukcje instalacji znajdziesz w Kroku 1 dokumentacji minikube start.

Dodatkowo wymagane jest zainstalowanie kubectl. Szczegółowe instrukcje instalacji dostępne są w sekcji Install tools.

Utwórz klaster minikube

minikube start

Sprawdź status klastra minikube.

Sprawdź status klastra minikube, aby upewnić się, że wszystkie jego komponenty są uruchomione.

minikube status

Wynik z powyższego polecenia powinien pokazywać wszystkie komponenty jako działające (ang. Running) lub skonfigurowane (ang. Configured), jak pokazano w poniższym przykładzie:

minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured

Otwórz Dashboard

Otwórz dashboard Kubernetesa. Można to zrobić na dwa sposoby:

Otwórz nowy terminal i uruchom:

# Uruchom nową sesję terminala i pozostaw ją aktywną.
minikube dashboard

Teraz wróć do terminala, w którym uruchomiłeś minikube start.

Jeśli nie chcesz, aby minikube automatycznie otwierał przeglądarkę internetową, uruchom podkomendę dashboard z flagą --url. minikube wyświetli adres URL, który możesz otworzyć w preferowanej przeglądarce.

Otwórz nowy terminal i uruchom:

# Uruchom nową sesję terminala i pozostaw ją aktywną.
minikube dashboard --url

Teraz możesz użyć tego URL-a i wrócić do terminala, w którym uruchomiłeś minikube start.

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.

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

    # Uruchom testowy obraz kontenera zawierający serwer WWW
    kubectl create deployment hello-node --image=registry.k8s.io/e2e-test-images/agnhost:2.53 -- /agnhost netexec --http-port=8080
    
  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
    

    (Może minąć trochę czasu, zanim pod stanie się dostępny. Jeśli widzisz "0/1", spróbuj ponownie za kilka sekund.)

  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
    
  6. Pobierz logi aplikacji z kontenera działającego w podzie (użyj nazwy poda zwróconej przez polecenie kubectl get pods).

    kubectl logs hello-node-5f76cf6ccf-br9b5
    

    Wynik powinien wyglądać podobnie do:

    I0911 09:19:26.677397       1 log.go:195] Started HTTP server on port 8080
    I0911 09:19:26.677586       1 log.go:195] Started UDP server on port  8081
    

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.

  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.

    Aplikacja, która jest umieszczona w obrazie kontenera, 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.

  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, serwis typu LoadBalancer można udostępnić poprzez polecenie minikube service.

  3. Uruchom poniższe polecenie:

    minikube service hello-node
    

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

  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
    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 metrics-server:

    minikube addons enable metrics-server
    

    Wynik powinien wyglądać podobnie do:

    The 'metrics-server' addon is enabled
    
  3. 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
    
  4. Sprawdź wynik z metrics-server:

    kubectl top pods
    

    Wynik powinien wyglądać podobnie do:

    NAME                         CPU(cores)   MEMORY(bytes)
    hello-node-ccf4b9788-4jn97   1m           6Mi
    

    Jeśli zobaczysz następującą wiadomość, poczekaj i spróbuj ponownie:

    error: Metrics API not available
    
  5. 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

Zatrzymaj wirtualną maszynę Minikube (VM):

minikube stop

(Opcjonalnie) Skasuj Minikube VM:

# Optional
minikube delete

Jeżeli planujesz ponownie używać minikube do dalszej nauki Kubernetesa, nie musisz go usuwać.

Wniosek

Ta strona obejmowała podstawowe aspekty dotyczące uruchomienia klastra minikube. Teraz jesteś gotowy do wdrażania aplikacji.

Co dalej?

Ostatnia modyfikacja January 12, 2026 at 2:21 PM PST: [pl] add minikube verification to docs - sync with PR 53292 (82823ca3b1)