Confluent Platform の CPU リソースとメモリーリソース

適切なリクエストと制限を設定することは、Confluent Platform クラスターとそのアプリケーションのパフォーマンスにとって重要です。

CPU とメモリーのリソース要件を構成する前に、「クラスターのサイジング」を参照してリソース割り当て計画を立てます。

Kubernetes の CPU リソースとメモリーリソースの詳細については、「コンテナのリソース管理」を参照してください。

Confluent for Kubernetes (CFK)では、デプロイされる Confluent Platform コンポーネントのカスタムポッドリソース要件をユーザーが定義できます。これらの要件は、カスタムリソース(CR)のコンポーネントの requests および limits プロパティを使用して指定します。

spec:
  podTemplate:
    resources:  --- [1]
      limits:   --- [2]
        cpu:    --- [3]
        memory: --- [4]
      requests: --- [5]
        cpu:    --- [6]
        memory: --- [7]
  • [1] resources は、このコンポーネント CR のコンピュートリソース要件を説明しています。

  • [2] limits は、使用できるコンピュートリソースの最大量を説明しています。デプロイする Confluent Platform コンポーネントは、ここで設定した値より多くのリソースを使用しようとすると、抑制されます。

  • [3] [6] CPU リソースの制限とリクエストの量は CPU 単位で表現されます。1 CPU 単位は、1 つの物理 CPU コアまたは 1 つの仮想コアに相当します。

    分割 CPU リクエストが可能です。たとえば、resources.requests.cpu: 0.5 は、半分の CPU 時間のリクエストです。

    CPU リソース単位の場合、数量を表す 0.1 は、"100 ミリ CPU" を意味する表現 100m に相当します。

  • [4] [7] メモリーの制限とリクエストの量はバイト単位で表現されます。

  • [5] requests は、必要なコンピュートリソースの最小量を説明しています。requests セクションを省略すると、同じ CR に明示的に limits が指定されている場合は、これがデフォルト値となります。そうでない場合は、Kubernetes クラスター用に定義された値がデフォルト値となります。

次の CR の例では、0.25 CPU と 64 MiB のメモリーのリクエストが指定されています。また、制限は、0.5 CPU と 128 MiB のメモリーに設定されています。

spec:
  podTemplate:
    resources:
      requests:
        memory: "64Mi"
        cpu: "250m"
      limits:
        memory: "128Mi"
        cpu: "500m"

Java ヒープサイズの定義

メモリーのサイジングの設定の他に、Confluent Platform コンポーネントの Java(JVM)ヒープサイズを定義する必要があります。

Confluent Platform の Java ヒープサイズを定義するには、コンポーネントの CR の構成オーバーライド機能(spec.configOverrides.jvm)を使用します。

以下に示すのは、JVM ヒープサイズが 6 GB に設定されている例です。

spec:
  configOverrides:
    server:
      - auto.create.topics.enable=true
      - confluent.cluster.link.enable=true
    jvm:
      - "-Xmx6g"                # Set to 6 GB
      - "-XX:MetaspaceSize=96m"
      - "-XX:+UseG1GC"

構成オーバーライド機能の詳細については、「構成のオーバーライド」を参照してください。

CFK Init コンテナーのリソースの定義

CFK では、Init コンテナーのリソースリクエストや制限を構成できません。Confluent Platform デプロイごとに、CFK は以下を Init コンテナーに設定します。

resources:
  limits:
    cpu: 500m
    memory: 1Gi
  requests:
    cpu: 100m
    memory: 512Mi