現在表示しているのは、次のバージョン向けのドキュメントです。Kubernetesバージョン: v1.31

Kubernetes v1.31 のドキュメントは積極的にメンテナンスされていません。現在表示されているバージョンはスナップショットです。最新のドキュメントはこちらです: 最新バージョン

拡張リソースをコンテナに割り当てる

FEATURE STATE: Kubernetes v1.31 [stable]

このページでは、拡張リソースをコンテナに割り当てる方法について説明します。

始める前に

Kubernetesクラスターが必要、かつそのクラスターと通信するためにkubectlコマンドラインツールが設定されている必要があります。 このチュートリアルは、コントロールプレーンのホストとして動作していない少なくとも2つのノードを持つクラスターで実行することをおすすめします。 まだクラスターがない場合、minikubeを使って作成するか、 以下のいずれかのKubernetesプレイグラウンドも使用できます:

バージョンを確認するには次のコマンドを実行してください: kubectl version.

この練習を始める前に、Nodeに拡張リソースをアドバタイズするの練習を行ってください。これにより、Nodeの1つがドングルリソースをアドバタイズするように設定されます。

拡張リソースをPodに割り当てる

拡張リソースをリクエストするには、コンテナのマニフェストにresources:requestsフィールドを含めます。拡張リソースは、*.kubernetes.io/以外の任意のドメインで完全修飾されます。有効な拡張リソース名は、example.com/fooという形式になります。ここで、example.comはあなたの組織のドメインで、fooは記述的なリソース名で置き換えます。

1つのコンテナからなるPodの構成ファイルを示します。

apiVersion: v1 kind: Pod metadata:  name: extended-resource-demo spec:  containers:  - name: extended-resource-demo-ctr  image: nginx  resources:  requests:  example.com/dongle: 3  limits:  example.com/dongle: 3 

構成ファイルでは、コンテナが3つのdongleをリクエストしていることがわかります。

次のコマンドでPodを作成します。

kubectl apply -f https://k8s.io/examples/pods/resource/extended-resource-pod.yaml 

Podが起動したことを確認します。

kubectl get pod extended-resource-demo 

Podの説明を表示します。

kubectl describe pod extended-resource-demo 

dongleのリクエストが表示されます。

Limits:  example.com/dongle: 3 Requests:  example.com/dongle: 3 

2つ目のPodの作成を試みる

以下に、1つのコンテナを持つPodの構成ファイルを示します。コンテナは2つのdongleをリクエストします。

apiVersion: v1 kind: Pod metadata:  name: extended-resource-demo-2 spec:  containers:  - name: extended-resource-demo-2-ctr  image: nginx  resources:  requests:  example.com/dongle: 2  limits:  example.com/dongle: 2 

Kubernetesは、2つのdongleのリクエストを満たすことができません。1つ目のPodが、利用可能な4つのdongleのうち3つを使用してしまっているためです。

Podを作成してみます。

kubectl apply -f https://k8s.io/examples/pods/resource/extended-resource-pod-2.yaml 

Podの説明を表示します。

kubectl describe pod extended-resource-demo-2 

出力にはPodがスケジュールできないことが示されます。2つのdongleが利用できるNodeが存在しないためです。

Conditions: Type Status PodScheduled False ... Events: ... ... Warning FailedScheduling pod (extended-resource-demo-2) failed to fit in any node fit failure summary on nodes : Insufficient example.com/dongle (1) 

Podのステータスを表示します。

kubectl get pod extended-resource-demo-2 

出力には、Podは作成されたものの、Nodeにスケジュールされなかったことが示されています。PodはPending状態になっています。

NAME READY STATUS RESTARTS AGE extended-resource-demo-2 0/1 Pending 0 6m 

クリーンアップ

この練習で作成したPodを削除します。

kubectl delete pod extended-resource-demo kubectl delete pod extended-resource-demo-2 

次の項目

アプリケーション開発者向け

クラスター管理者向け