7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

kubeadm init で container runtime is not running のエラーが出て clusterを作れない

Last updated at Posted at 2022-08-09

エラーの内容

最近あまりにも余裕がないのですが、最低限、検証はしなければ!(⇦ 事務仕事から逃げる言い訳)と
Kubernetesクラスタを作ろうと思ってテケトーにやってると kubeadmが failしてしまいます……

yasuo@m1:~$ sudo kubeadm init --config new-config.yaml
[init] Using Kubernetes version: v1.24.3
[preflight] Running pre-flight checks
        [WARNING SystemVerification]: missing optional cgroups: blkio
error execution phase preflight: [preflight] Some fatal errors occurred:
        [ERROR CRI]: container runtime is not running: output: E0809 20:26:55.688131   10079 remote_runtime.go:925] "Status from runtime service failed" err="rpc error: code = Unimplemented desc = unknown service runtime.v1alpha2.RuntimeService"

今回は、このTrouble Shootingの話です。

Solution?

環境は以下です。

  • Debian 11.4
  • kernel: 5.10.0-16-amd64
  • containerd.io: 1.6.7-1
  • Kubernetes 1.24.3

Googleで検索すると2年ぐらい前から config.toml 消しやがれ って話がたくさん出てきて、今も1それが Solutionになってる。

ただ、config.toml 消すと cgroup driver 関連おかしくならん?と思ったので、
config.tomlを消した形で構成して見てみると system.slice 配下に podが散らかってました。

Control group /:
-.slice
| ~~省略~~
`-system.slice
  |-kubepods-burstable-pod257eb0ac8a2f0cfcc2960c78f8c8a611.slice:cri-containerd:00d5d3e1c22fe100bfecdc23e7c62a3b09be595>
  | `-16919 kube-apiserver --advertise-address=192.168.255.100 --allow-privileged=true --authorization-mode=Node,RBAC ->
  |-kubepods-burstable-pod75c6738c774970f2bb9f57f5698d94ab.slice:cri-containerd:fce0ea0a42dd5917fd9e38329bbab26a1246597>
  | `-16797 /pause
  |-containerd.service ...
  | |-16542 /usr/bin/containerd
  | |-16690 /usr/bin/containerd-shim-runc-v2 -namespace k8s.io -id 388ec98f35c5f555d5b48c8d0d50013dd6dc9f891ce8aed0e6ad>
  | |-16699 /usr/bin/containerd-shim-runc-v2 -namespace k8s.io -id cad683f46d742bb80f4b7093c1526189f30b62d696a20f54efda>
  | |-16734 /usr/bin/containerd-shim-runc-v2 -namespace k8s.io -id af42adb1ef15516d5fc3719476208bee57772aa33234e283bbc9>
  | `-16747 /usr/bin/containerd-shim-runc-v2 -namespace k8s.io -id fce0ea0a42dd5917fd9e38329bbab26a1246597d6e23e8300fa6>

なんとなく、これでは いかんのでは?って気がします。

エラーが出る原因

結論から言うと、これが起きた理由は config.tomlの余計な場所を書き換えていたことが原因でした。

containerdのconfigの編集は、通常以下の様な形でdefaultを変更するようにしています。

containerd config default > config.toml
vi config.toml
cat config.toml | sudo tee /etc/containerd/config.toml

なんとなく記憶を頼りに config.tomlを systemd_cgroup を trueにすんだよなと思ってGoogleで検索すると、日本語のページがヒットします。

あー、これこれ!と思って以下を true に書き換えたのですが……

config.toml
[plugins]
  [plugins."io.containerd.grpc.v1.cri"]
    systemd_cgroup = false

ここを書き換えると件のエラーになってしまいます

Solution

というわけなので、英語のページを見ます。

あれ、書き換えてる場所違うじゃんと。

config.toml
[plugins]
  [plugins."io.containerd.grpc.v1.cri"]
    [plugins."io.containerd.grpc.v1.cri".containerd]
      [plugins."io.containerd.grpc.v1.cri".containerd.runtimes]
        [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
          [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
            SystemdCgroup = true

runcのoptions側の設定 SystemdCgroup だけ書き換えろ ってなってます。

結果

設定を変更して、systemd_cgroup = false かつ SystemdCgroup = trueにしてやると /etc/containerd/config.toml があっても kubeadm init が通る様になります。

そして、ちゃんと kubepodsのsliceの下に podが まとまる形になりました。

Control group /:
-.slice
| ~~省略~~
`-kubepods.slice
  |-kubepods-burstable.slice
  | |-kubepods-burstable-pod56fc75382b1ac6b3f13f20d4cdf8a364.slice
  | | |-cri-containerd-c67aaae2f743aa7e3f3df7269c38b155824f0fd18b37db002b4e8bfabd90b1f0.scope ...
  | | | `-23148 /pause
  | | `-cri-containerd-9e39dc8e269da3912aae883aa7d2eacf4d371f525e4d296e4f9b6a53d7c93903.scope ...
  | |   `-23278 kube-scheduler --authentication-kubeconfig=/etc/kubernetes/scheduler.conf --authorization-kubeconfig=/e
  | |-kubepods-burstable-pod75c6738c774970f2bb9f57f5698d94ab.slice

なぜ こうなるのかをちゃんと確認した上で、日本語ドキュメントの修正依頼を出すべきだなと思ったのですが、時間がないので 今回はここまでで……orz

  1. 比較的つい最近だと思うのですが、redditでも config.toml消しましょうとなってました。

7
1
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
7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?