ytooyamaのブログ

サーバ構築とか、仕事で発見したこととか、趣味のこととかを書いています。

Podmanでコンテナーの名前解決がおかしくなったので対応した

私が現在勤めている会社でCentOS 8でPodmanを利用している環境があり、とある作業をするアプリケーションがコンテナーで動いているのですが、コンテナーが名前解決をできず、正常に動いていませんでした。

以前ブログでも書きましたが、以下の回避策で解決できるんじゃないかなと思いました。

serverfault.com

また同じ事象がRHEL 8.1で起きていたのですが、RHEL 8.2にアップグレードしたらなんか解消したので、「CentOS 8-2004に更新すれば解決できるのでは」みたいな回答をしたと思います。

そこでアップグレードしようという話になりました。アップグレード後は新しいカーネルで起動するためにシステムの再起動を行いました。

# yum check-update
(アップデートパッケージが何個あるか確認)
# yum update -y
(アップグレード)
# reboot
(再起動)

起動後、Podmanのコンテナーを起動します。

# podman start hogehuga

起動後、名前解決を試してみました。ん?OCI runtime error??

# podman exec -it hogehuga ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: seq=0 ttl=112 time=2.181 ms
64 bytes from 8.8.8.8: seq=1 ttl=112 time=2.177 ms
^C
--- 8.8.8.8 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 2.177/2.179/2.181 ms

# podman exec -it hogehuga ping tooyama.org
ping: bad address 'tooyama.org'
Error: non zero exit code: 1: OCI runtime error

アップグレードしたのに解消しない。なぜ? 症状で調べたところ、次のような情報を見つけました。

ahelpme.com

実行したのは次のコマンドです。

# sysctl -w net.ipv4.ip_forward=1
# firewall-cmd --zone=public --add-masquerade
# firewall-cmd --permanent --zone=public --add-masquerade
# firewall-cmd --reload

ちなみにこのままだとsysctlコマンドの設定変更は次の再起動の際に消えてしまうので、永続化が必要です。 UbuntuやRHEL7、CentOS7などでは /etc/sysctl.conf を編集していたのですが、 8世代では一つのファイルに列挙するのではなく、設定ごとにconfファイルを作って記述する方が推奨されているようです。というわけで、 /usr/lib/sysctl.d/ ディレクトリー以下に、次のファイルを置いて設定を記述しました。

# cat 50-ip_forward.conf
net.ipv4.ip_forward=1

設定としてはこれだけです。

結果、問題がなくなりました。

# podman exec -it hogehuga sh
/ # ping tooyama.org
PING tooyama.org (150.95.9.135): 56 data bytes
64 bytes from 150.95.9.135: seq=0 ttl=51 time=9.217 ms
^C
--- tooyama.org ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 9.217/9.217/9.217 ms
/ #

問題が解決したものの、RHEL 8.2相当と思われるCentOS 8-2004に更新しても引き続き問題が発生するのが、ちょっと気になりました。 差分を確認しようといくつかコマンドを実行したところ、Podmanのバージョンが違うことがわかりました。

それは挙動が違っても仕方ないわ。

OS Podmanバージョン
RHEL 8.2 1.9.3
CentOS 8-2004 1.6.4
CentOS Stream 8 1.6.4

というわけでクローズ。

このブログサイトはJavaScriptを使っていますが、読み込んでいるJavaScriptは全てはてなが提供しているものであり、筆者が設置しているものではありません。