Kubernetes · 1 min read · Dec 14, 2025

Kubernetesにおける静的ポッド

静的ポッドはkubeletによって直接管理され、APIサーバーはこれらのポッドを制御することはできません。kubeletは各静的ポッドを監視し、クラッシュした場合には再起動する責任があります。ノード上で実行されている静的ポッドはAPIサーバーで確認できますが、APIサーバーによって制御されることはありません。静的ポッドには関連するレプリケーションコントローラーがなく、kubeletサービス自体がそれを監視し、クラッシュした場合には再起動します。静的ポッドにはヘルスチェックはありません。kubeletプロセスは静的ポッド用に指定された特定のディレクトリを監視します。

静的ポッドについて詳しく知りたい場合は、こちらのKubernetesの公式ページをご覧ください。

この記事では、デフォルトの場所に保存されたファイルから静的ポッドを作成する手順を見ていきます。また、デフォルトの場所を他のディレクトリに変更し、そこから静的ポッドを作成する様子も確認します。ワーカーノードで静的ポッドを作成します。

前提条件

  1. 1つ以上のワーカーノードを持つKubernetesクラスター。 Kubernetesクラスターの作成方法を学びたい場合は、こちらをクリックしてください。このガイドでは、AWSのUbuntu 18.04 EC2インスタンス上に1つのマスターと2つのノードを持つKubernetesクラスターを作成する手助けをします。

何をするか?

  1. 静的ポッドを作成する

静的ポッドを作成する

マスターノードから以下のコマンドを実行して、クラスター内のノードとポッドの詳細を取得します。

$master kubectl get nodes
$master kubectl get pods

get-all-pods

ポッドの一部として実行されているコンテナを確認できます。

$worker docker ps
$worker docker ps -a

次に、ワーカーノードにログインし、静的ポッドのマニフェストのデフォルトパスに以下の内容の新しいファイルを作成します。

$worker vim /etc/kubernetes/manifests/static-web.yaml
apiVersion: v1
kind: Pod
metadata:
  name: static-web
  labels:
    role: myrole
spec:
  containers:
    - name: web
      image: nginx
      ports:
        - name: web
          containerPort: 80
          protocol: TCP

static-pod-definition-at-default-location

静的ポッドマニフェストのデフォルトの場所にポッド定義を作成すると、APIサーバーによって制御されないポッドが作成されます。

マスターノードから以下のコマンドを実行して、新しく作成されたポッドを確認できます。

$master kubectl get pods
$master kubectl get pods --all-namespaces

static-pod-created

ポッドの一部として作成されたコンテナを確認するために、ワーカーノードで以下のコマンドを実行します。

$worker docker ps
$worker docker ps -a

kubeletがマニフェストを読み込むデフォルトの場所を変更することもできます。

静的ポッドのマニフェストを保存する新しいフォルダーを作成します。

ここでは、”/etc/kubelet.d/“を作成します。

$worker mkdir -p /etc/kubelet.d/

作成したディレクトリにポッド定義ファイルを作成します。

$worker vim /etc/kubelet.d/static-web.yaml
apiVersion: v1
kind: Pod
metadata:
  name: static-web-2
  labels:
    role: myrole
spec:
  containers:
    - name: web
      image: nginx
      ports:
        - name: web
          containerPort: 80
          protocol: TCP

Kubeletが静的ポッドのマニフェストを読み込むデフォルトパスを変更するには、/var/lib/kubelet/config.yamlファイルを編集し、”staticPodPath”の値を”staticPodPath=/etc/kubelet.d”に変更します。

change-static-pod-path

設定が完了したら、Kubeletサービスを再起動します。

$worker systemctl restart kubelet

サービスが再起動されると、Kubeletは新しい場所を検出し、その場所からマニフェストを読み込み、ポッドを作成します。

ポッドが作成されたかどうかを確認します。

$master kubectl get pods

ワーカーノードで以下のコマンドを使用して、ポッドの一部として作成されたコンテナを確認します。

$worker docker ps

結論

この記事では、静的ポッドを作成する手順と、静的ポッドのマニフェストのデフォルトディレクトリを変更するためにKubeletで必要な設定変更を見てきました。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。