Kubernetes

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

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

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

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,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-Kubernetes