k3d
k3dは、dockerでk3s(Rancher Labの最小限のKubernetesディストリビューション)を実行するための軽量ラッパーです。k3dを使用すると、dockerでシングルノードおよびマルチノードのk3sクラスターを簡単に作成できます。たとえば、Kubernetesでのローカル開発などです。
前提条件
- k3dを使用するには、dockerをインストールする必要があります。
- k3dの最新バージョンをインストールします。
- Kubernetesクラスターとやり取りするには、kubectlを使用します
- (オプション) HelmはKubernetesのパッケージマネージャーです
インストール
次のコマンドでクラスターを作成し、
Traefik
を無効にします$ k3d cluster create --api-port 6550 -p '9080:80@loadbalancer' -p '9443:443@loadbalancer' --agents 2 --k3s-arg '--disable=traefik@server:*'
k3dクラスターのリストを表示するには、次のコマンドを使用します
$ k3d cluster list k3s-default
ローカルKubernetesコンテキストをリストするには、次のコマンドを使用します。
$ kubectl config get-contexts CURRENT NAME CLUSTER AUTHINFO NAMESPACE * k3d-k3s-default k3d-k3s-default k3d-k3s-default
複数のクラスターを実行する場合は、
kubectl
がどのクラスターと通信するかを選択する必要があります。 Kubernetes kubeconfigファイルで現在のコンテキストを設定することにより、kubectl
のデフォルトクラスターを設定できます。さらに、次のコマンドを実行して、kubectl
の現在のコンテキストを設定できます。$ kubectl config use-context k3d-k3s-default Switched to context "k3d-k3s-default".
k3d用Istioの設定
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
(オプション)Ingressゲートウェイをインストールする
$ helm install istio-ingressgateway istio/gateway -n istio-system --wait
k3d用ダッシュボードUIの設定
k3dにはminikubeのような組み込みのダッシュボードUIはありません。しかし、WebベースのKubernetes UIであるダッシュボードをセットアップして、クラスターを表示することは可能です。k3dにダッシュボードをセットアップするには、以下の手順に従ってください。
ダッシュボードをデプロイするには、次のコマンドを実行します。
$ helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/ $ helm upgrade --install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard --create-namespace --namespace kubernetes-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
新しく作成したクラスターへの管理者アクセス権を付与するために、
ServiceAccount
とClusterRoleBinding
を作成します。$ kubectl create serviceaccount -n kubernetes-dashboard admin-user $ kubectl create clusterrolebinding -n kubernetes-dashboard admin-user --clusterrole cluster-admin --serviceaccount=kubernetes-dashboard:admin-user
ダッシュボードにログインするには、Bearer Tokenが必要です。次のコマンドを使用して、トークンを変数に保存します。
$ token=$(kubectl -n kubernetes-dashboard create token admin-user)
echo
コマンドを使用してトークンを表示し、コピーしてダッシュボードへのログインに使用します。$ echo $token
次のコマンドを実行して、kubectlコマンドラインツールを使用してダッシュボードにアクセスできます。
$ kubectl proxy Starting to serve on 127.0.0.1:8001
Kubernetesダッシュボードをクリックして、デプロイとサービスを表示します。
アンインストール
実験が終わって既存のクラスターを削除したい場合は、次のコマンドを使用します。
$ k3d cluster delete k3s-default Deleting cluster "k3s-default" ...