minikube で kind を動かす
趣旨
- k8s のマルチノードクラスタを試してみたくなった
kind
を使ってみる- デプロイは完了するけど外からアクセスできない
- 公開される IP アドレスが
127.0.0.1
に固定されてる - 公開されるポート番号がランダム
- 公開される IP アドレスが
kind
の実装眺めてたら設定ファイルで制御できそうなことがわかった- できた 👍
kind
の設定ファイル
kind creaet cluster
に次のような設定ファイルを指定するといい感じになります。
kind: Cluster apiVersion: kind.sigs.k8s.io/v1alpha4 networking: apiServerPort: 11734 apiServerAddress: 192.168.0.123 nodes: - role: control-plane
networking
についてはソースコードのこの辺に書いてありました。
kind/types.go at master · kubernetes-sigs/kind · GitHub
クラスタの作成
kind
は引数で設定項目の一部を上書きできるようにはなっておらず、完成している設定ファイルを渡す必要があります。
設定ファイルのテンプレートを用意して envsubst
するのが無難な感じです。
$ kind --version kind version v0.5.1 $ lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 10 (buster) Release: 10 Codename: buster $ sudo apt install -y gettext-base $ which envsubst /usr/bin/envsubst $ cat config.tmpl kind: Cluster apiVersion: kind.sigs.k8s.io/v1alpha3 networking: apiServerPort: $PORT apiServerAddress: $ADDRESS nodes: - role: control-plane $ PORT=11374 ADDRESS=$(minikube ip) envsubst < config.tmpl > config.yaml && kind create cluster --config=./config.yaml --wait=10m Creating cluster "kind" ... ✓ Ensuring node image (kindest/node:v1.15.3) � ✓ Preparing nodes � ✓ Creating kubeadm config � ✓ Starting control-plane �️ ✓ Installing CNI � ✓ Installing StorageClass � ✓ Waiting ≤ 10m0s for control-plane = Ready ⏳ • Ready after 24s � Cluster creation complete. You can now use the cluster with: export KUBECONFIG="$(kind get kubeconfig-path --name="kind")" kubectl cluster-info $ kubectl --kubeconfig="$(kind get kubeconfig-path --name="kind")" cluster-info Kubernetes master is running at https://192.168.0.123:11374 KubeDNS is running at https://192.168.0.123:11374/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.