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. (オプション)Ingressゲートウェイをインストールする

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

k3d用ダッシュボードUIの設定

k3dにはminikubeのような組み込みのダッシュボードUIはありません。しかし、Webベースの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=$(kubectl -n kubernetes-dashboard create token admin-user)
    

    echoコマンドを使用してトークンを表示し、コピーしてダッシュボードへのログインに使用します。

    $ 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" ...
    
この情報は役に立ちましたか?
改善のための提案はありますか?

フィードバックありがとうございます!