はじめに
Kubernetes では、プローブはコンテナが稼働しておりトラフィックを受け付ける準備ができているかどうかを判断するために使用される診断ツールです。プローブには、生存性プローブと準備度プローブの 2 種類があります。この実験では、コンテナがトラフィックを受け付ける準備ができているかどうかを検出するために使用されるツールである ContainerProbe に焦点を当てます。
💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください
Kubernetes では、プローブはコンテナが稼働しておりトラフィックを受け付ける準備ができているかどうかを判断するために使用される診断ツールです。プローブには、生存性プローブと準備度プローブの 2 種類があります。この実験では、コンテナがトラフィックを受け付ける準備ができているかどうかを検出するために使用されるツールである ContainerProbe に焦点を当てます。
リソースを作成する前に、稼働している Kubernetes クラスタが必要です。Minikube は、ローカル マシン上で実行される軽量な Kubernetes 環境です。
作業ディレクトリに移動する:
ターミナルを開き、デフォルトのプロジェクト フォルダに移動します。
cd /home/labex/project
Minikube を起動する:
Minikube を起動して Kubernetes クラスタを初期化します。
minikube start
Minikube が実行されていることを確認する:
Minikube クラスタの状態を確認します。
minikube status
kubelet
や apiserver
などのコンポーネントが Running
と表示されていることを確認します。minikube start
を再度実行します。Minikube の起動に問題がある場合は、必要に応じて minikube delete
を使用して環境をリセットします。
最初のステップは、Kubernetes でデプロイメントを作成することです。このデプロイメントを使用して ContainerProbe をテストします。
/home/labex/project
ディレクトリに deployment.yaml
という名前の新しいファイルを作成します。apiVersion: apps/v1
kind: Deployment
metadata:
name: containerprobe-deployment
spec:
replicas: 1
selector:
matchLabels:
app: containerprobe
template:
metadata:
labels:
app: containerprobe
spec:
containers:
- name: containerprobe
image: nginx
ports:
- containerPort: 80
このコードは、1 つのレプリカを持つデプロイメント、app: containerprobe
というラベルを持つセレクタ、および nginx イメージを実行するコンテナを作成します。
kubectl apply -f deployment.yaml
次のステップは、nginx コンテナに生存性プローブを追加することです。生存性プローブは、コンテナが稼働しているかどうかを判断するために使用されます。プローブが失敗した場合、Kubernetes はコンテナを再起動します。
/home/labex/project
ディレクトリの deployment.yaml
を以下の内容で更新します。apiVersion: apps/v1
kind: Deployment
metadata:
name: containerprobe-deployment
spec:
replicas: 1
selector:
matchLabels:
app: containerprobe
template:
metadata:
labels:
app: containerprobe
spec:
containers:
- name: containerprobe
image: nginx
ports:
- containerPort: 80
livenessProbe:
httpGet:
path: /
port: 80
このコードは、生存性プローブがポート 80 のルート パスに HTTP GET 要求を送信するように指定しています。
kubectl apply -f deployment.yaml
これで生存性プローブを追加したので、それが正しく機能しているかどうかをテストできます。
kubectl get pods -l app=containerprobe -o jsonpath='{.items[0].metadata.name}'
このコマンドは、デプロイメントによって作成されたポッドの名前を取得します。
kubectl describe pod <pod-name>
<pod-name>
を前のステップで取得したポッドの名前に置き換えます。
以下のような出力が表示されるはずです。
Liveness: http-get http://:80/ delay=0s timeout=1s period=10s #success=1 #failure=3
これは、生存性プローブが正しく構成されていることを示しています。
次のステップは、nginx コンテナに準備度プローブを追加することです。準備度プローブは、コンテナがトラフィックを受け付ける準備ができているかどうかを判断するために使用されます。プローブが失敗した場合、Kubernetes はコンテナにトラフィックを送信しません。
deployment.yaml
のコンテナ定義に以下のコードを追加します。apiVersion: apps/v1
kind: Deployment
metadata:
name: containerprobe-deployment
spec:
replicas: 1
selector:
matchLabels:
app: containerprobe
template:
metadata:
labels:
app: containerprobe
spec:
containers:
- name: containerprobe
image: nginx
ports:
- containerPort: 80
livenessProbe:
httpGet:
path: /
port: 80
readinessProbe:
httpGet:
path: /
port: 80
このコードは、準備度プローブがポート 80 のルート パスに HTTP GET 要求を送信するように指定しています。
kubectl apply -f deployment.yaml
これで準備度プローブを追加したので、それが正しく機能しているかどうかをテストできます。
kubectl get pods -l app=containerprobe -o jsonpath='{.items[0].metadata.name}'
このコマンドは、デプロイメントによって作成されたポッドの名前を取得します。
kubectl describe pod <pod-name>
<pod-name>
を前のステップで取得したポッドの名前に置き換えます。
以下のような出力が表示されるはずです。
Readiness: http-get http://:80/ delay=0s timeout=1s period=10s #success=1 #failure=3
これは、準備度プローブが正しく構成されていることを示しています。
この実験では、Kubernetes で ContainerProbe を使用する方法を学びました。デプロイメントを作成し、生存性プローブを追加し、生存性プローブをテストし、準備度プローブを追加し、準備度プローブをテストしました。ContainerProbe を使用することで、コンテナがトラフィックを受け付ける準備ができており、正常に機能していることを確認できます。