はじめに
Kubernetes では、DaemonSet はコントローラの一種で、クラスタ内の各ノードにポッドのコピーが実行されていることを保証します。この実験では、クラスタ内の各ノードにポッドのレプリカを実行するための DaemonSet を作成するプロセスを案内します。
💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください
Kubernetes では、DaemonSet はコントローラの一種で、クラスタ内の各ノードにポッドのコピーが実行されていることを保証します。この実験では、クラスタ内の各ノードにポッドのレプリカを実行するための DaemonSet を作成するプロセスを案内します。
リソースを作成する前に、実行中の Kubernetes クラスタが必要です。Minikube は、ローカル マシン上で実行される軽量の Kubernetes 環境です。
作業ディレクトリに移動する:
ターミナルを開き、デフォルトのプロジェクト フォルダに移動します。
cd /home/labex/project
Minikube を起動する:
Minikube を起動して Kubernetes クラスタを初期化します。
minikube start
Minikube が実行されていることを確認する:
Minikube クラスタの状態を確認します。
minikube status
kubelet
や apiserver
などのコンポーネントが 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
クラスタ内の各ノードに 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 が作成され、各ノードに myapp-pod
のレプリカが実行されていることを確認します。クラスタ内のノードを一覧表示するには、以下のコマンドを使用します。
kubectl get nodes
DaemonSet によって作成されたポッドを一覧表示するには、以下のコマンドを使用します。
kubectl get pods -l app=myapp
クラスタ内の各ノードに対して 1 つのポッドが表示されるはずです。
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 を使用して、クラスタ内の各ノードにポッドのレプリカを実行する方法を学びました。