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 设置 Dashboard UI

k3d 没有像 minikube 那样内置的 Dashboard UI。但是您仍然可以设置 Dashboard,这是一个基于 Web 的 Kubernetes UI,用于查看您的集群。请按照以下说明为 k3d 设置 Dashboard。

  1. 要部署 Dashboard,请运行以下命令

    $ 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. 验证 Dashboard 是否已部署并正在运行。

    $ 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. 要登录到您的 Dashboard,您需要一个 Bearer 令牌。使用以下命令将令牌存储在变量中。

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

    使用 echo 命令显示令牌,并将其复制以用于登录到您的 Dashboard。

    $ echo $token
    
  5. 您可以使用 kubectl 命令行工具通过运行以下命令访问您的 Dashboard

    $ kubectl proxy
    Starting to serve on 127.0.0.1:8001
    

    点击 Kubernetes Dashboard 查看您的部署和服务。

卸载

  1. 当您完成实验并想要删除现有集群时,请使用以下命令

    $ k3d cluster delete k3s-default
    Deleting cluster "k3s-default" ...
    
这些信息是否有用?
您对改进有什么建议?

感谢您的反馈!