Hello Minikube

本教學課程示範如何使用 minikube 在 Kubernetes 上執行範例應用程式。本教學課程提供一個容器映像檔,該映像檔使用 NGINX 回應所有請求。

目標

  • 將範例應用程式部署到 minikube。
  • 執行應用程式。
  • 檢視應用程式日誌。

開始之前

本教學課程假設您已設定 minikube。如需安裝指示,請參閱 minikube start 中的步驟 1

您還需要安裝 kubectl。如需安裝指示,請參閱安裝工具

建立 minikube 叢集

minikube start

開啟儀表板

開啟 Kubernetes 儀表板。您可以使用兩種不同的方式執行此操作

開啟新的終端機,然後執行

# Start a new terminal, and leave this running.
minikube dashboard

現在,切換回您執行 minikube start 的終端機。

如果您不希望 minikube 為您開啟網頁瀏覽器,請使用 --url 旗標執行 dashboard 子命令。minikube 會輸出您可以在偏好的瀏覽器中開啟的 URL。

開啟新的終端機,然後執行

# Start a new terminal, and leave this running.
minikube dashboard --url

現在,您可以使用此 URL 並切換回您執行 minikube start 的終端機。

建立 Deployment

Kubernetes Pod 是一組或多個容器的群組,為了管理與網路目的而綁在一起。本教學課程中的 Pod 只有一個容器。Kubernetes Deployment 會檢查您的 Pod 健康狀態,並在 Pod 的容器終止時重新啟動它。建議使用 Deployment 來管理 Pod 的建立與擴充。

  1. 使用 kubectl create 命令建立管理 Pod 的 Deployment。Pod 根據提供的 Docker 映像檔執行容器。

    # Run a test container image that includes a webserver
    kubectl create deployment hello-node --image=registry.k8s.io/e2e-test-images/agnhost:2.39 -- /agnhost netexec --http-port=8080
    
  2. 檢視 Deployment

    kubectl get deployments
    

    輸出類似於

    NAME         READY   UP-TO-DATE   AVAILABLE   AGE
    hello-node   1/1     1            1           1m
    

    (Pod 可能需要一些時間才能變成可用。如果您看到「0/1」,請在幾秒鐘後再試一次。)

  3. 檢視 Pod

    kubectl get pods
    

    輸出類似於

    NAME                          READY     STATUS    RESTARTS   AGE
    hello-node-5f76cf6ccf-br9b5   1/1       Running   0          1m
    
  4. 檢視叢集事件

    kubectl get events
    
  5. 檢視 kubectl 組態

    kubectl config view
    
  6. 檢視 Pod 中容器的應用程式日誌 (將 Pod 名稱取代為您從 kubectl get pods 取得的名稱)。

    kubectl logs hello-node-5f76cf6ccf-br9b5
    

    輸出類似於

    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
    

建立服務

預設情況下,Pod 只能透過其在 Kubernetes 叢集內的內部 IP 位址存取。若要使 hello-node 容器可從 Kubernetes 虛擬網路外部存取,您必須將 Pod 公開為 Kubernetes Service

  1. 使用 kubectl expose 命令將 Pod 公開到公用網際網路

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

    --type=LoadBalancer 旗標表示您想要在叢集外部公開您的服務。

    測試映像檔內的應用程式程式碼僅監聽 TCP 連接埠 8080。如果您使用 kubectl expose 公開不同的連接埠,用戶端將無法連線到該其他連接埠。

  2. 檢視您建立的服務

    kubectl get services
    

    輸出類似於

    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
    

    在支援負載平衡器的雲端供應商上,將會配置外部 IP 位址以存取服務。在 minikube 上,LoadBalancer 類型可透過 minikube service 命令存取服務。

  3. 執行下列命令

    minikube service hello-node
    

    這會開啟一個瀏覽器視窗,以服務您的應用程式並顯示應用程式的回應。

啟用附加元件

minikube 工具包含一組內建的附加元件,可以在本機 Kubernetes 環境中啟用、停用與開啟。

  1. 列出目前支援的附加元件

    minikube addons list
    

    輸出類似於

    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. 啟用附加元件,例如 metrics-server

    minikube addons enable metrics-server
    

    輸出類似於

    The 'metrics-server' addon is enabled
    
  3. 檢視您安裝該附加元件後建立的 Pod 和 Service

    kubectl get pod,svc -n kube-system
    

    輸出類似於

    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. 檢查 metrics-server 的輸出

    kubectl top pods
    

    輸出類似於

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

    如果您看到以下訊息,請稍候並重試

    error: Metrics API not available
    
  5. 停用 metrics-server

    minikube addons disable metrics-server
    

    輸出類似於

    metrics-server was successfully disabled
    

清理

現在您可以清理您在叢集中建立的資源

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

停止 Minikube 叢集

minikube stop

(可選)刪除 Minikube VM

# Optional
minikube delete

如果您想再次使用 minikube 來進一步了解 Kubernetes,則無需刪除它。

結論

本頁涵蓋了啟動並執行 minikube 叢集的基本方面。您現在已準備好部署應用程式。

接下來

最後修改時間:2024 年 6 月 27 日上午 10:43 PST:Update content/en/docs/tutorials/hello-minikube.md (a3e1fef3a0)