手当たり次第に書くんだ

飽きっぽいのは本能

Kubernetes で systemd を実行可能な CentOS コンテナを動かす

Kubernetes 上で systemd を実行できる CentOS コンテナを起動する検証です。ただし、これは通常のアプリケーション運用では推奨されません。systemd を動かすには privileged に近い権限が必要になり、コンテナの分離を弱めるためです。

考え方

コンテナは基本的に 1 つの主プロセスを実行するための仕組みです。systemd を PID 1 として動かす構成は、OS 検証や特殊な移行検証には使えますが、本番アプリケーションの標準形ではありません。

Manifest

kubectl apply -f - <<'EOF'
apiVersion: v1
kind: Pod
metadata:
  name: centos-systemd-pod
spec:
  containers:
    - name: centos
      image: quay.io/centos/centos:stream9
      command: ["/sbin/init"]
      securityContext:
        privileged: true
EOF

確認

kubectl get pod centos-systemd-pod -o wide
kubectl exec -it centos-systemd-pod -- ps -p 1 -o pid,comm,args
kubectl exec -it centos-systemd-pod -- systemctl is-system-running

注意点

  • privileged はコンテナの分離を大きく弱める。
  • 本番環境では原則として避ける。
  • systemd が必要な処理は、コンテナの起動コマンドやサイドカー構成に分解できないか検討する。
  • OS そのものを動かしたい場合は VM の方が自然なことが多い。

まとめ

Kubernetes で systemd コンテナを動かすこと自体は可能ですが、設計としては例外扱いです。検証目的で使う場合も、なぜ privileged が必要なのか、通常のコンテナ設計に戻せないのかを確認します。

Kubernetes で systemd を実行可能な CentOS コンテナを動かす

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る