Kubernetes

Kubernetes の CPU・mCPU と vCPU の関係と設定ガイド

ⓘ本ページはプロモーションが含まれています

お得なお知らせ

スポンサードリンク
1ヶ月で資格+現場入り

インフラエンジニアへの最短ルート

未経験でもAWS・Linux・ネットワーク資格を最短で取り、現場入りまでサポート。SREやクラウドエンジニアの入口。

CODE×CODEスピード転職|無料面談▶ SRE/クラウドのフリーランス案件▶

▶ AWS/GCP/Kubernetesの独学には Kindle Unlimited の技術書読み放題がコスパ最強。


スポンサードリンク

Kubernetes が扱う CPU 単位と公式定義

1️⃣ CPU の基本概念

表記 意味
1 / 1000m 1 vCPU(論理コア) = 1 ハイパースレッド
250m 0.25 vCPU(1/4 論理コア)
500m 0.5 vCPU(半分の論理コア)

ポイント
Kubernetes のリソース項目 cpu は、クラウド側で呼ばれる vCPU(=ハイパースレッド)と 1:1 にマッピングされます。したがって「1 CPU = 1 コア」ではなく 「1 CPU = 1 vCPU (論理コア)」 と考えてください。

参考

  • Kubernetes 公式ドキュメント – 「コンテナおよび Pod への CPU リソースの割り当て」[^1]

2️⃣ ミリCPU(mCPU)とは

Kubernetes は整数で管理できるよう、CPU を 1000 分割 した単位 ミリCPU (m) を導入しています。

記述 換算
250m 0.25 vCPU
500m 0.5 vCPU
1500m 1.5 vCPU

計算式

ポイント
250m のように千分の一単位で指定できるため、細かいリソース調整が可能です。設定時は必ず「/1000」換算を意識しましょう。

参考

  • Kubernetes 公式ドキュメント – 「CPU リソース」[^1]

3️⃣ 物理コア・vCPU・ハイパースレッドの違いと主要クラウドベンダーの実装

ベンダー インスタンスタイプ例 物理コア数 vCPU(論理コア) 補足
AWS t3.large 2 2 vCPU 1 vCPU = 1 ハイパースレッド。インスタンスタイプにより 1 vCPU が 1 つの物理コアのハイパースレッド と定義されます(公式ドキュメント参照)
GCP n1-standard-4 2 4 vCPU 1 vCPU = 1 ハイパースレッド。Intel/AMD CPU の場合、2 スレッドが 1 物理コアに対応
Azure Standard_D2s_v3 2 4 vCPU 1 vCPU = 1 ハイパースレッド(公式情報)

ポイント
多くのクラウドは「1 vCPU = 1 ハイパースレッド」=論理コアとして提供しています。物理コア数は半分になることが多いので、Kubernetes のリソース設計では vCPU(論理コア) を基準に考える必要があります。

参考

  • AWS – EC2 インスタンスの vCPU 定義[^2]
  • GCP – Compute Engine の CPU 構成[^3]
  • Azure – VM の CPU と vCPU の関係[^4]

4️⃣ requestslimits の役割とスケジューラへの影響

項目 意味
requests スケジューラが Pod 配置時に参照する「保証リソース」
ノードの空き vCPU が requests 以上あるかで配置可否を判断
limits コンテナ実行時の上限
超過すると Linux cgroup が CPU シェアを制限し、スロットリングが発生

設定例

  • シナリオ A:実際の使用率が常に 0.2 vCPU → requests が余裕あり、スケジューラは問題なく配置
  • シナリオ B:負荷が急増し 1.2 vCPU を要求 → cgroup が上限(limits: 1)を超える分を制御し、CPU スロットリングが発生

ポイント
requests は「予約」、limits は「上限」と覚えておくと、リソース競合やスロットリングの原因がすぐに特定できます。

参考

  • Kubernetes 公式 – 「CPU リクエストとリミット」[^1]
  • Linux cgroup の CPU 制御(公式マニュアル)[^5]

5️⃣ マルチコアノードでの最適化ベストプラクティス

推奨項目 内容
余裕率 ノード総 vCPU の 70 %〜80 % まで requests を合計。残りはスパイク時に確保できるバッファとして確保
requests / limits 比率 requests ≈ 30‑50 % × limits(例:250m500m)で Burstable QoS を意識
QoS クラスの選択 - Guaranteed : requests = limits → 高優先度ワークロード向け
- Burstable : 上記比率で設定 → 通常ワークロード
Pod の分散配置 topologySpreadConstraintsaffinity/anti‑affinity を活用し、ノード間に均等に Pod を配置
モニタリング kubectl top pod、Prometheus + Grafana、Sysdig などで実使用率を可視化し、過剰予約や不足を検出・調整

ポイント
「余裕率 × QoS の組み合わせ」でスパイク時のリソース確保ができ、ノード全体のスループットが向上します。定期的にモニタリングデータをレビューし、requests/limits をチューニングするサイクルを確立しましょう。

参考

  • Kubernetes 公式 – 「Quality of Service(QoS)クラス」[^6]
  • Sysdig ブログ – 「Kubernetes CPU リクエスト & リミット とオートスケーリング」[^7]

まとめ

  1. CPU の単位は vCPU(ハイパースレッド)1 = 1000m = 1 論理コア
  2. mCPU (millicpu) は千分の一単位で、細かい割り当てが可能
  3. クラウドベンダーは基本的に vCPU = ハイパースレッド を提供。物理コア数とは別に考える必要があります(例:AWS t3.large2 vCPU
  4. requests はスケジューラが参照する保証リソース、limits は実行時上限であり超過すると cgroup による CPU スロットリング が発生
  5. マルチコアノードでは 余裕率 70 % 前後、適切な QoS 設定、Pod の分散配置 を意識したリソース設計がベストプラクティス

次のステップ
自クラスターの各 Pod に対して cpu.requestscpu.limits が公式ドキュメントに沿って設定されているか確認し、余裕率や QoS クラスを見直してください。さらに詳しい最適化手順は当サイトの「Kubernetes リソース最適化完全ガイド」をご参照ください。


参考文献

番号 タイトル・リンク
[^1] 「コンテナおよび Pod への CPU リソースの割り当て」
https://kubernetes.io/ja/docs/tasks/configure-pod-container/assign-cpu-resource/
[^2] AWS – EC2 インスタンスにおける vCPU の定義
https://aws.amazon.com/jp/ec2/faqs/#What_is_a_vCPU
[^3] GCP – Compute Engine の CPU 構成
https://cloud.google.com/compute/docs/cpu-platforms?hl=ja
[^4] Azure – 仮想マシンの CPU と vCPU の関係
https://learn.microsoft.com/ja-jp/azure/virtual-machines/sizes
[^5] Linux cgroup v2 – CPU コントロール
https://www.kernel.org/doc/html/latest/admin-guide/cgroup-v2.html#cpu-controller
[^6] Kubernetes – Quality of Service(QoS)クラス
https://kubernetes.io/ja/docs/tasks/configure-pod-container/quality-of-service-pod/
[^7] Sysdig Blog – 「Kubernetes CPU リクエスト & リミット とオートスケーリング」
https://sysdig.com/blog/kubernetes-cpu-requests-limits-autoscaling/

スポンサードリンク

お得なお知らせ

スポンサードリンク
1ヶ月で資格+現場入り

インフラエンジニアへの最短ルート

未経験でもAWS・Linux・ネットワーク資格を最短で取り、現場入りまでサポート。SREやクラウドエンジニアの入口。

CODE×CODEスピード転職|無料面談▶ SRE/クラウドのフリーランス案件▶

▶ AWS/GCP/Kubernetesの独学には Kindle Unlimited の技術書読み放題がコスパ最強。


-Kubernetes