GKEでMount情報がリソースリークする

  • このエントリーをはてなブックマークに追加

GKEでcronJobを使っているときに、このようなエラーが出て実行が止まってしまいました。

MountVolume.SetUp failed for volume "service-account" : mount failed: exit status 1 Mounting command: systemd-run Mounting arguments: --description=Kubernetes transient mount for /var/lib/kubelet/pods/cd987559-252d-11e8-8bea-42010a920fe9/volumes/kubernetes.io~secret/service-account --scope -- mount -t tmpfs tmpfs /var/lib/kubelet/pods/cd987559-252d-11e8-8bea-42010a920fe9/volumes/kubernetes.io~secret/service-account Output: Failed to start transient scope unit: Argument list too long

こちらのIssueにWorkaroundがあり、ノード(GCE)上で次のコマンドを打つと解決します。

問題の状態を確認。なお上記が発生した時は2^17くらいの数まで溜まっていました。

systemctl list-units --all | wc -l

次のコマンドで綺麗になります。

systemctl daemon-reload

Systemdの問題か?

systemdの問題で、このPRで直っていると思います。これが取り込まれているのがv237です。

私の手元のGCEのsystemdはv232でした。
新しいk8sクラスタを作るとどのバージョンになるのかはまだ確認していないです。

参考