Open3

k8sでコンテナのCPUを決めるには

H.K.WH.K.W

✏️CPUの指定方法

podやdeploymentでCPUのサイズを指定するにはresourcesを記載する。
requestsは要求量でlimitsは制限量のこと。

apiVersion: v1
kind: Pod
metadata:
  name: cpu-demo
  namespace: cpu-example
spec:
  containers:
  - name: cpu-demo-ctr
    image: vish/stress
    resources:
      limits:
        cpu: "1"
      requests:
        cpu: "0.5"

requestsにnodeのCPUサイズ以上を指定すると、podがスケジュールされない。

Events:
  Reason                        Message
  ------                        -------
  FailedScheduling      No nodes are available that match all of the following predicates:: Insufficient cpu (3).

📚参考

https://kubernetes.io/ja/docs/tasks/configure-pod-container/assign-cpu-resource/

H.K.WH.K.W

CPUの単位

複数の表記がある。
0.5 = 500m = 500millicores
また0.1未満は無視される

各ベンダーにおける1CPUは以下のようになる。

  • 1 AWS vCPU
  • 1 GCPコア
  • 1 Azure vCore

ベンダーによる違いはない模様。

H.K.WH.K.W

🐶Datadogのコンテナ

サイドカーとして配置するdatadog-agentコンテナはresourcesを以下のようにしている。

resources:
  requests:
    memory: "256Mi"
    cpu: "200m"
  limits:
    memory: "256Mi"
    cpu: "200m"

https://docs.datadoghq.com/ja/integrations/eks_fargate/

EKS on Fargate

EKSで指定できる最小のvCPUは0.25なのでDatadogと合算して最小にするなら0.5vCPUとなる。

https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/fargate-pod-configuration.html