多数の異なる展開が実行されているクラスターがあると想像してください。一部のポッドはPersistentVolume(Azureディスク)を使用します。 AzureにはVMにマウントできるディスクの量に制限があり、これにより次のようなスケジューリングエラーが発生します。
Status=409 Code="OperationNotAllowed" Message="The maximum number of data disks allowed to be attached to a VM of this size is 8
ポッドはそのまま
Waiting: Container creating
ただし、一部のノードは、スケジューリングの時点でディスクが接続されているポッドの数がはるかに少なかった。このエラーが発生しないように、ノードごとにディスクが接続されたポッドの量を制限することは素晴らしいことです。私は信じている
podAntiAffinity
私は必要なものであり、同じラベルのポッドが同じノードでスケジュールすることを制限できることは知っていますが、ノードがディスクを持つポッドの最大量になるまでそれを許可する方法がわかりません。
私のインストールはAKSです。
az acs create \
--orchestrator-type=kubernetes \
--orchestrator-version 1.7.9 \
--resource-group <resource_group_here> \
--name=<name_here> \
...
関連した質問
- クラスタ内で接続が拒否されましたが、ポート転送はKubernetesで機能します
- Azure上のTerraformAKSクラスターにボリュームを追加するときにエラー「そのようなホストはありません」
- ノードに十分な空きがあるのに、リソースが原因でポッドのスケジュールが失敗するのはなぜですか?
- リソースがなくなる前にAzureKubernetesノードプールを自動スケーリングするにはどうすればよいですか
- AKSでタイプLoadBalancerのkubernetesサービスにアクセスできません
- Kubernetes:プライベートコンテナーレジストリからイメージをプルできませんでした
- イメージmyapidemodockerazurecrio/apidemo - v40のプルに失敗しました:rpcエラー:code = unknown desc = unknown blob
- 断続的にタイムアウトするAzureのKubernetesでポッドとして実行されるRESTベースのサービス
- Azure AKS Kubernetes Cluster自己署名CAをGitLab CI/CD Kubernetes統合に追加する方法
KUBE_MAX_PD_VOLS
あなたが探しているものです。デフォルトでは、値は16です。Azureディスク。したがって、接続されているディスクの制限が同じインスタンス(16)を使用するか、望ましい値に設定することができます。 githubで宣言されている場所を確認できますこの環境変数は、スケジューラ宣言で設定する必要があります。
/etc/kubernetes/manifests/kube-scheduler.yaml
でスケジューラ宣言を見つけました 。これは、現在の外観です。apiVersion: "v1" kind: "Pod" metadata: name: "kube-scheduler" ... spec: containers: - name: "kube-scheduler" ... env: - name: KUBE_MAX_PD_VOLS value: "8" ...
spec.containers.env.KUBE_MAX_PD_VOLS
に注意してください 設定-各ノードで8個を超えるディスクをスケジュールできないようにします。このように、ポッドは問題なくノード間で広がり、収まらないポッドは、収まる十分なノードが見つかるまで保留状態のままになります。