DaemonSet を使ったポッドの実行

KubernetesKubernetesBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

Kubernetes では、DaemonSet はコントローラの一種で、クラスタ内の各ノードにポッドのコピーが実行されていることを保証します。この実験では、クラスタ内の各ノードにポッドのレプリカを実行するための DaemonSet を作成するプロセスを案内します。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL kubernetes(("Kubernetes")) -.-> kubernetes/TroubleshootingandDebuggingCommandsGroup(["Troubleshooting and Debugging Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/BasicsGroup(["Basics"]) kubernetes(("Kubernetes")) -.-> kubernetes/BasicCommandsGroup(["Basic Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/AdvancedCommandsGroup(["Advanced Commands"]) kubernetes/BasicsGroup -.-> kubernetes/initialization("Initialization") kubernetes/BasicCommandsGroup -.-> kubernetes/get("Get") kubernetes/BasicCommandsGroup -.-> kubernetes/create("Create") kubernetes/AdvancedCommandsGroup -.-> kubernetes/apply("Apply") kubernetes/TroubleshootingandDebuggingCommandsGroup -.-> kubernetes/describe("Describe") subgraph Lab Skills kubernetes/initialization -.-> lab-8454{{"DaemonSet を使ったポッドの実行"}} kubernetes/get -.-> lab-8454{{"DaemonSet を使ったポッドの実行"}} kubernetes/create -.-> lab-8454{{"DaemonSet を使ったポッドの実行"}} kubernetes/apply -.-> lab-8454{{"DaemonSet を使ったポッドの実行"}} kubernetes/describe -.-> lab-8454{{"DaemonSet を使ったポッドの実行"}} end

Minikube クラスタを起動する

リソースを作成する前に、実行中の Kubernetes クラスタが必要です。Minikube は、ローカル マシン上で実行される軽量の Kubernetes 環境です。

  1. 作業ディレクトリに移動する:

    ターミナルを開き、デフォルトのプロジェクト フォルダに移動します。

    cd /home/labex/project
  2. Minikube を起動する:

    Minikube を起動して Kubernetes クラスタを初期化します。

    minikube start
    • このコマンドは、ローカル マシン上に単一ノードの Kubernetes クラスタをセットアップします。
    • Minikube は、システムのパフォーマンスに応じて数分かかる場合があります。
  3. Minikube が実行されていることを確認する:

    Minikube クラスタの状態を確認します。

    minikube status
    • kubeletapiserver などのコンポーネントが Running と表示されていることを確認します。
    • クラスタが実行されていない場合は、minikube start を再度実行します。

Minikube の起動に問題がある場合は、必要に応じて minikube delete を使用して環境をリセットします。

ポッドを作成する

レプリカのテンプレートとして使用される単純なポッドを作成します。以下の内容で /home/labex/project/myapp-pod.yaml という名前のファイルを作成します。

apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
spec:
  containers:
    - name: myapp-container
      image: nginx
      ports:
        - containerPort: 80

以下のコマンドを使用してポッドを作成します。

kubectl apply -f /home/labex/project/myapp-pod.yaml

DaemonSet を作成する

クラスタ内の各ノードに myapp-pod のレプリカを実行するための DaemonSet を作成します。以下の内容で /home/labex/project/myapp-daemonset.yaml という名前のファイルを作成します。

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: myapp-daemonset
spec:
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
        - name: myapp-container
          image: nginx
          ports:
            - containerPort: 80

この DaemonSet は、レプリカのテンプレートとして myapp-pod を使用し、matchLabels セレクタを app: myapp に設定して、各ノードにレプリカが作成されることを確認します。

以下のコマンドを使用して DaemonSet を作成します。

kubectl apply -f /home/labex/project/myapp-daemonset.yaml

DaemonSet を確認する

DaemonSet が作成され、各ノードに myapp-pod のレプリカが実行されていることを確認します。クラスタ内のノードを一覧表示するには、以下のコマンドを使用します。

kubectl get nodes

DaemonSet によって作成されたポッドを一覧表示するには、以下のコマンドを使用します。

kubectl get pods -l app=myapp

クラスタ内の各ノードに対して 1 つのポッドが表示されるはずです。

DaemonSet を更新する

myapp-container で使用されるイメージを変更するために DaemonSet を更新します。以下の内容で /home/labex/project/myapp-daemonsett-update.yaml という名前のファイルを作成します。

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: myapp-daemonset
spec:
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
        - name: myapp-container
          image: busybox
          command: ["sleep", "3600"]

この更新された DaemonSet は、myapp-container で使用されるイメージを busybox に変更し、コマンドを sleep 3600 に設定します。

以下のコマンドを使用して DaemonSet を更新します。

kubectl apply -f /home/labex/project/myapp-daemonset-update.yaml

DaemonSet が更新され、新しいイメージで myapp-pod のレプリカが実行されていることを確認します。DaemonSet によって作成されたポッドを一覧表示するには、以下のコマンドを使用します。

kubectl get pods -l app=myapp

更新されたイメージで新しく作成されたポッドが表示されるはずです。

まとめ

この実験では、Kubernetes で DaemonSet を使用して、クラスタ内の各ノードにポッドのレプリカを実行する方法を学びました。