Kubernetes 上で systemd を実行できる CentOS コンテナを起動する検証です。ただし、これは通常のアプリケーション運用では推奨されません。systemd を動かすには privileged に近い権限が必要になり、コンテナの分離を弱めるためです。
参考
書籍
書籍
参考書籍
Kubernetes完全ガイド 第2版
Kubernetes、コンテナ、クラスタ運用、ネットワークまわりを体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
考え方
コンテナは基本的に 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 コンテナを動かす




