他のkubernetesコントローラーのPodDisruptionBudget

他のkubernetesコントローラーのPodDisruptionBudget

Kubernetesでビジネスが中断されたり、ビジネスSLAが低下したりしないようにするには、Deployment、StatefulSetデプロイメントなどのクラスターにアプリケーションをデプロイする必要があります。クラスター化されたデプロイですが、ポッドを積極的に破棄する場合、一度に多くのポッドを破棄しないようにするために、KubernetesはPodDisruptionBudget(PDB)コントローラーを参照してクラスター内のポッドの数を制御します。

PDBでは、ポッドの数は主に2つのパラメーターによって制御されます。

  • minAvailable:使用可能なポッドの最小数を表します。これは、ポッドクラスター内の実行状態のポッドの最小数、または実行状態のポッド数と合計のパーセンテージを表します。

  • maxUnavailable:使用できないポッドの最大数を示し、ポッドクラスター内の使用できないポッドの最大数、または使用できないポッドの数と合計のパーセンテージを示します。
注意:minAvailable和maxUnavailable是互斥了,也就是说两者同一时刻只能出现一种。

kubectldrainコマンドはすでにPodDisruptionBudgetコントローラーをサポートしています。kubectldrain操作が実行されると、PodDisruptionBudgetコントローラーに従ってアプリケーションPODクラスターの数が決定され、サービスの中断やサービスSLAの低下なしにアプリケーションPODの破棄が実行されるようになります。 。kubectlドレインまたはポッドをアクティブにエスケープする場合、Kubernetesは次の状況で判断します。

  • minAvailableは値5に設定されます。アプリケーションPODクラスターに少なくとも5つの正常で使用可能なPODが存在する必要があります。そうすれば、操作を実行できます。

  • MinAvailableは30%のパーセンテージに設定されています。アプリケーションPODクラスターで使用可能な正常なPODの少なくとも30%を操作できます。

  • maxUnavailableは値5に設定されます。操作を実行する前に、アプリケーションPODクラスターに使用できないPODは5つだけです。

  • maxUnavailableは30%のパーセンテージに設定されます。アプリケーションPODクラスターで使用できないPODの30%のみを操作できます。

maxUnavailableを0または100%に設定するなどの極端な場合は、kubectlドレイン操作を実行できないことを意味します。同様に、minAvailableを100%、またはアプリケーションPODクラスターの最大コピー数に設定すると、kubectlドレイン操作を実行できなくなります。

注意:使用PodDisruptionBudget控制器并不能保证任何情况下都对业务POD集群进行约束,PodDisruptionBudget控制器只能保证POD主动逃离的情况下业务不中断或者业务SLA不降级,例如在执行kubectldrain命令时。

例:
(1)、minAvailableを定義します

apiVersion: policy/v1beta1

kind: PodDisruptionBudget

metadata:

  name: pdb-demo

spec:

  minAvailable: 2

  selector:

    matchLables:

      app: nginx

(2)、maxUnavailableを定義します

apiVersion: policy/v1beta1

kind: PodDisruptionBudget

metadata:

  name: pdb-demo

spec:

  maxUnavailable: 1

  selector:

    matchLables:

      app: nginx

(3)リソースリストを作成する

对于PodDisruptionBudget对象,无法直接进行更新操作,只能通过删除和重新创建来完成对PodDisruptionBudget对象的更新。
# kubectl apply -f pdb-demo.yaml

(4)ステータスを確認する

# kubectl get pdb

NAME       MIN AVAILABLE   MAX UNAVAILABLE   ALLOWED DISRUPTIONS   AGE

pdb-demo   2               N/A               0                     7m46s

(5)詳細情報を見る

# kubectl describe pdb pdb-demo

Name:           pdb-demo

Namespace:      default

Min available:  2

Selector:       app=nginx

Status:

    Allowed disruptions:  0

    Current:              0

    Desired:              2

    Total:                0

Events:

  Type    Reason  Age                   From               Message

  ----    ------  ----                  ----               -------

  Normal  NoPods  2m58s (x53 over 28m)  controllermanager  No matching pods found
参考文档:https://kubernetes.io/docs/tasks/run-application/configure-pdb/

終了

おすすめ

転載: blog.51cto.com/15080014/2654512