k3d

k3d 是一個輕量級的包裝器,用於在 Docker 中執行 k3s(Rancher Lab 的最小 Kubernetes 發行版本)。k3d 使得在 Docker 中建立單節點和多節點 k3s 叢集非常容易,例如用於 Kubernetes 上的本機開發。

先決條件

  • 若要使用 k3d,您還需要安裝 Docker
  • 安裝最新版本的k3d
  • 若要與 Kubernetes 叢集互動,請使用kubectl
  • (選用)Helm 是 Kubernetes 的套件管理器

安裝

  1. 使用以下命令建立叢集並停用 Traefik

    $ k3d cluster create --api-port 6550 -p '9080:80@loadbalancer' -p '9443:443@loadbalancer' --agents 2 --k3s-arg '--disable=traefik@server:*'
    
  2. 若要檢視 k3d 叢集清單,請使用以下命令

    $ k3d cluster list
    k3s-default
    
  3. 若要列出本機 Kubernetes 環境,請使用以下命令。

    $ kubectl config get-contexts
    CURRENT   NAME                 CLUSTER              AUTHINFO             NAMESPACE
    *         k3d-k3s-default      k3d-k3s-default      k3d-k3s-default
    
  4. 如果您執行多個叢集,您需要選擇 kubectl 與哪個叢集互動。您可以透過在 Kubernetes kubeconfig 檔案中設定目前的環境,為 kubectl 設定預設叢集。此外,您可以執行以下命令來設定 kubectl 的目前環境。

    $ kubectl config use-context k3d-k3s-default
    Switched to context "k3d-k3s-default".
    

為 k3d 設定 Istio

  1. 設定 k3d 叢集完成後,您可以繼續在該叢集上使用 Helm 3 安裝 Istio

    $ kubectl create namespace istio-system
    $ helm install istio-base istio/base -n istio-system --wait
    $ helm install istiod istio/istiod -n istio-system --wait
    
  2. (選用)安裝入口閘道

    $ helm install istio-ingressgateway istio/gateway -n istio-system --wait
    

為 k3d 設定儀表板 UI

k3d 不像 minikube 那樣內建儀表板 UI。但您仍然可以設定儀表板(一個基於網頁的 Kubernetes UI)來檢視您的叢集。請按照以下指示為 k3d 設定儀表板。

  1. 若要部署儀表板,請執行以下命令

    $ helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/
    $ helm upgrade --install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard --create-namespace --namespace kubernetes-dashboard
    
  2. 確認儀表板已部署並正在執行。

    $ kubectl get pod -n kubernetes-dashboard
    NAME                                         READY   STATUS    RESTARTS   AGE
    dashboard-metrics-scraper-8c47d4b5d-dd2ks    1/1     Running   0          25s
    kubernetes-dashboard-67bd8fc546-4xfmm        1/1     Running   0          25s
    
  3. 建立一個 ServiceAccountClusterRoleBinding,以便為新建立的叢集提供管理員存取權。

    $ kubectl create serviceaccount -n kubernetes-dashboard admin-user
    $ kubectl create clusterrolebinding -n kubernetes-dashboard admin-user --clusterrole cluster-admin --serviceaccount=kubernetes-dashboard:admin-user
    
  4. 若要登入您的儀表板,您需要一個 Bearer Token。請使用以下命令將 Token 儲存在變數中。

    $ token=$(kubectl -n kubernetes-dashboard create token admin-user)
    

    使用 echo 命令顯示 Token,並複製它以用於登入您的儀表板。

    $ echo $token
    
  5. 您可以使用 kubectl 命令列工具,執行以下命令來存取您的儀表板

    $ kubectl proxy
    Starting to serve on 127.0.0.1:8001
    

    點擊 Kubernetes 儀表板 以檢視您的部署和服務。

解除安裝

  1. 當您完成實驗並想要刪除現有叢集時,請使用以下命令

    $ k3d cluster delete k3s-default
    Deleting cluster "k3s-default" ...
    
這個資訊對您有幫助嗎?
您是否有任何改進建議?

感謝您的回饋!