KubernetesのStatic Podとは何か?

『IT自動化の力でビジネス加速を全ての企業に』

”IT自動化の専門会社”、リアルグローブ・オートメーティッド(RGA)技術ブログ編集部の馬塚です。本日もRGAの技師がまとめた技術情報を読者の皆様にお届けしていきます!

よくお客様に「コンテナ化すると何が嬉しいのか」について聞かれるのですが、その答えの1つとして”ITリソースを最適化して利用できること”が挙げられます。このメリットはとても大きく、何を隠そう弊社も自前システムをコンテナ化することでリソースの無駄が削減されて、大幅なコスト削減を実現できたりしています!

さて、皆さん、Kubernetesの「Pod」はご存知でしょうか。「Pod」とは、1つ以上のアプリケーションコンテナの集合体を管理するためのもので、アプリケーションコンテナを単体で運用する場合に生じる様々な不便を解消してくれるとても便利なリソースです。今回は「Pod」の中でも少し特殊なリソースである Static Pod についてご紹介いたします。

――――――――――――――――――――――――――――――――――

KubernetesのStatic Podとは何か?

OpenShift 4.2 において、 etcd が Static Pod という機能でデプロイされていたため、Static Pod がどういうものなのか調査してみました。
(※etcd はKubernetesクラスタの情報を保存しているKey-Value Storeです)

発端はOpenShiftですが、Static Pod 自体はKubernetes(以後、k8s)におけるリソースの1つです。

(k8s公式ドキュメントより)
Create static Pods

Static Pods are managed directly by the kubelet daemon on a specific node, without the API server observing them. Unlike Pods that are managed by the control plane (for example, a Deployment); instead, the kubelet watches each static Pod (and restarts it if it crashes).

Static Pod とは、kubelet によって直接管理されるPodです。コントロールプレーンによって管理されるPod(例えばDeploymentなどで配置されたもの)は kube-apiserver によって管理されていますが、Static Pod は kube-apiserver を介さず kubelet が直接管理しています。

Static Pod は必ずいずれかのノードの kubelet に紐付けられています。
kubelet は 自動的に各 Static Pod に対応する mirror pod を kube-apiserver 上に作成します。
これにより、Static Pod は kube-apiserver から見えるようになります(=kubectl コマンドなどで 確認することができるようになる)。

しかし、mirror pod に操作を加えることはできず、”kubectl delete pod” などをしても Static Pod の実体は消えません(mirror pod を消しても、実体を元にしてすぐに復活してきます)。
また、Static Pod はクラッシュした場合にも自動的に再起動されます。

DaemonSet との違い

”各ノードにPodを1つずつ配置する” という特徴は DaemonSet と同じですが、Static Pod とは次のような違いがあります。

● DaemonSet は kubectl などの Kubernetes API クライアントで管理できますが、Static Pod はできません。
● DaemonSet は kube-apiserver に依存しますが、Static Pod は依存しません。そのため、Static Pod はクラスターのブートストラップ時に便利です。

Static Pod の作成・削除

前述の通り、ノードごとに1つのPodを配置したい場合には通常 DaemonSet を使用するため、Static Pod を自分で作ることはほぼ無いと思いますが、以下に作成手順が記載されています。
https://kubernetes.io/docs/tasks/configure-pod-container/static-pod/#static-pod-creation

Static Pod は今後廃止されるかも

ここまで Static Pod についてご説明してきたわけですが、なんとKubernetes公式ドキュメント によると Static Pod は今後廃止される可能性があるとのことです。廃止して Static Pod で管理していた Pod はすべて DaemonSet での管理に移行する予定なのでしょうか?
廃止するかもしれない理由まではドキュメントに記載されていなかったため、引き続き動向を追っていきたいと思います。

執筆者:株式会社リアルグローブ・オートメーティッド技師 青島――――――――――――――――――――――――――――――――――

執筆者プロフィール:青島 秀治
株式会社リアルグローブ・オートメーティッド 技師
九州大学大学院理学府博士課程中退。
大学院では理論天文学が専門。数値計算プログラム開発の傍ら、研究用の計算機郡や学内システムの開発・運用を経験。
2019年よりAnsibleを用いた運用作業自動化や自社サービスのKubernetes移行、OpenShiftのインフラCI実装などの業務に従事。

【ご案内】
ITシステム開発やITインフラ運用の効率化、高速化、品質向上、その他、情シス部門の働き方改革など、IT自動化導入がもたらすメリットは様々ございます。
IT業務の自動化にご興味・ご関心ございましたら、まずは一度、IT自動化の専門家リアルグローブ・オートメーティッド(RGA)にご相談ください!

お問合せは以下の窓口までお願いいたします。

【お問い合わせ窓口】
株式会社リアルグローブ・オートメーティッド
代表窓口:info@rg-automated.jp
URL:https://rg-automated.jp

画像1

(編集:馬塚勇介/校正:水谷裕一)