LoginSignup
3
0

More than 1 year has passed since last update.

M1 Macのkind create clusterでエラーが出たらまず確認すべきこと

Last updated at Posted at 2022-10-27

M1 MacでDocker Desktopとkind(Kubernetes IN Docker)をインストールし、さてクラスターでも作ってみるか!とサンプルコードでkind create clusterしたら、いきなりエラーが出てがっかりしたことはあるでしょうか?

私はあります。

$ kind create cluster --config kind.yaml --name kindcluster
Creating cluster "kindcluster" ...
 ✓ Ensuring node image (kindest/node:v1.18.2) 🖼
 ✗ Preparing nodes 📦 📦 📦 📦 📦 📦
ERROR: failed to create cluster: could not find a log line that matches "Reached target .*Multi-User System.*|detected cgroup v1"

書籍のサンプルコードなどは、M1(arm64)前提で書かれることはほぼないですよね、たぶん。
(最近の書籍だと注釈にM1の対処法が書かれているのを見かけたこともありますが)

kind公式サイトには「amd64アーキテクチャ以外のイメージなんて作ってない(そんな需要ない)から自分でビルドしてね」とか書いてあるし、ちょっとググっても解決方法が見つからないし、なんか面倒そうだな、、、

と思っていたら実はサクッとと解決しました。

結論

docker hubにarm64向けのノードイメージがあるので、それを使いましょう。

kind.yaml
apiVersion: kind.x-k8s.io/v1alpha4
kind: Cluster
nodes:
- role: control-plane
  image: kindest/node-arm64:v1.25.3
- role: control-plane
  image: kindest/node-arm64:v1.25.3
- role: control-plane
  image: kindest/node-arm64:v1.25.3
- role: worker
  image: kindest/node-arm64:v1.25.3
- role: worker
  image: kindest/node-arm64:v1.25.3
- role: worker
  image: kindest/node-arm64:v1.25.3
$ kind create cluster --config kind.yaml --name kindcluster
Creating cluster "kindcluster" ...
 ✓ Ensuring node image (kindest/node-arm64:v1.25.3) 🖼
 ✓ Preparing nodes 📦 📦 📦 📦 📦 📦
 ✓ Configuring the external load balancer ⚖️
 ✓ Writing configuration 📜
 ✓ Starting control-plane 🕹️
 ✓ Installing CNI 🔌
 ✓ Installing StorageClass 💾
 ✓ Joining more control-plane nodes 🎮
 ✓ Joining worker nodes 🚜
Set kubectl context to "kind-kindcluster"
You can now use your cluster with:

kubectl cluster-info --context kind-kindcluster

Not sure what to do next? 😅  Check out https://kind.sigs.k8s.io/docs/user/quick-start/

できました!

動作確認

DaemonSetを起動してみます。

sample-ds.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: sample-ds
spec:
  selector:
    matchLabels:
      app: sample-app
  template:
    metadata:
      labels:
        app: sample-app
    spec:
      containers:
      - name: nginx-container
        image: nginx:1.16
$ kubectl apply -f sample-ds.yaml 
daemonset.apps/sample-ds created
$ kubectl get pods               
NAME              READY   STATUS    RESTARTS   AGE
sample-ds-2ldjg   1/1     Running   0          11m
sample-ds-j84hd   1/1     Running   0          11m
sample-ds-z8bpn   1/1     Running   0          11m

各ノードにポッドが起動しました!

動作環境

  • MacBook Pro (2021, M1 Pro)
  • Docker Desktop for Mac (Apple silicon) 4.13.0 (89412)
  • kind v0.16.0 go1.19.1 darwin/arm64

最後に

docker hubでイメージを見つける前に、自分でノードイメージをビルドして解決することもできました。
色々と試行錯誤があったので、その手順も別記事で書こうかと思います。 → 書きました

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0