はじめに
この実験では、まず単純なデプロイを作成し、それにノードセレクタを割り当てます。次に、より複雑なシナリオに移行し、特定のノードにポッドをスケジュールするために異なるセレクタを使用します。
💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください
この実験では、まず単純なデプロイを作成し、それにノードセレクタを割り当てます。次に、より複雑なシナリオに移行し、特定のノードにポッドをスケジュールするために異なるセレクタを使用します。
リソースを作成する前に、動作中の Kubernetes クラスタが必要です。Minikube は、ローカルマシン上で動作する軽量の Kubernetes 環境です。
作業ディレクトリに移動する:
ターミナルを開き、デフォルトのプロジェクトフォルダに移動します。
cd /home/labex/project
Minikube を起動する:
Minikube を起動して Kubernetes クラスタを初期化します。
minikube start
Minikube が動作していることを確認する:
Minikube クラスタの状態を確認します。
minikube status
kubelet
やapiserver
などのコンポーネントがRunning
と表示されていることを確認します。minikube start
を再度実行します。Minikube の起動に問題がある場合は、必要に応じてminikube delete
を使用して環境をリセットします。
このステップでは、単一のポッドを持つ単純なデプロイを作成します。
simple-deployment.yaml
という名前のファイルを作成します。apiVersion: apps/v1
kind: Deployment
metadata:
name: simple-deployment
spec:
replicas: 1
selector:
matchLabels:
app: simple-app
template:
metadata:
labels:
app: simple-app
spec:
containers:
- name: simple-container
image: nginx:latest
kubectl
を使用してデプロイを作成します。kubectl apply -f simple-deployment.yaml
kubectl get deployments
このステップでは、ステップ 1 で作成したデプロイにノードセレクタを割り当てます。
kubectl label nodes minikube disk=ssd
node-selector-deployment.yaml
ファイルを編集し、spec.template.spec
セクションの下に nodeSelector
フィールドを追加する:apiVersion: apps/v1
kind: Deployment
metadata:
name: selector-deployment
spec:
replicas: 1
selector:
matchLabels:
app: selector-app
template:
metadata:
labels:
app: selector-app
spec:
nodeSelector:
disk: ssd
containers:
- name: selector-container
image: nginx:latest
kubectl
を使用して変更を適用する:kubectl apply -f node-selector-deployment.yaml
disk=ssd
というラベル付きのノードにスケジュールされたことを確認する:kubectl get pods -o wide | grep selector-deployment
このステップでは、ノードに割り当てられたラベルに基づいて、特定のノードにポッドをスケジュールするために、異なるノードセレクタを使用します。
kubectl label nodes minikube resigon=labex
kubectl label nodes minikube gpu=true
multi-selector-deployment.yaml
という名前のファイルを作成する:apiVersion: apps/v1
kind: Deployment
metadata:
name: multi-selector-deployment
spec:
replicas: 3
selector:
matchLabels:
app: multi-selector-app
template:
metadata:
labels:
app: multi-selector-app
spec:
containers:
- name: multi-selector-container
image: nginx:latest
nodeSelector:
resigon: labex
gpu: "true"
kubectl apply -f multi-selector-deployment.yaml
kubectl get pods -o wide | grep multi-selector-deployment
この実験では、ノードセレクタとノードアフィニティを使用して、特定のノードにポッドをスケジュールする方法を学びました。単純なデプロイから始め、その後、異なるセレクタとアフィニティルールを使用して、ノードに割り当てられたラベルに基づいて特定のノードにポッドをスケジュールするより複雑なシナリオに移行しました。
おめでとうございます!この実験を無事に完了しました。