日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

配置調度忽略特定容器資源

阿里云容器計算服務ACS支持采用Sidecar容器的形式實現類似DaemonSet的效果。為了避免在使用Sidecar模式時增加Pod的資源消耗, 同時保證Sidecar容器和業務容器合理共享資源,您可以通過配置調度策略來忽略Sidecar容器的資源占用。本文介紹如何在ACS集群中配置調度策略,以忽略特定容器資源。

功能說明

在ACS集群中,由于虛擬節點的限制,不支持Kubernetes的DaemonSet功能。此時可以采用為ACS Pod添加Sidecar容器的形式來實現類似DaemonSet的效果。同時,ACS支持忽略特定容器資源的功能,您可以為Sidecar容器添加忽略容器資源的環境變量。在ACS實例進行資源規整和調度時,系統會直接忽略該容器;而運行時則會繼續遵循容器的resources.requestsresources.limits,以保持Sidecar容器與實例中其他容器的資源共享和隔離。

ignore-resource.svg

重要

忽略特定容器的資源意味著該容器實際上是復用了該ACS Pod中其他容器的資源。如果遇到其他容器的資源余量不足, 可能會導致忽略資源的容器的CPU用量被壓制或者出現OOM的情況。

配置說明

忽略容器資源的環境變量名為__IGNORE_RESOURCE__,設置取值為true時則表示忽略該容器的資源聲明。

配置示例

  1. 使用以下內容創建test-ignore.yaml。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: test-ignore
      labels:
        app: test
    spec:
      replicas: 1 
      selector:
        matchLabels:
          app: test
      template:
        metadata:
          labels:
            app: test
        spec:
          containers:
          - name: app
            image: registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/busybox:1.28
            command: ["/bin/sh", "-c", "sleep 999"]
            resources:
              requests:
                cpu: 1
                memory: 2Gi
          - name: sidecar
            image: registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/busybox:1.28
            command: ["/bin/sh", "-c", "sleep 999"]
            resources:
              requests:
                cpu: 0.25
                memory: 0.5Gi

    此YAML將創建一個包含1個Pod副本的Deployment。Pod內包含兩個容器,都做了資源聲明。

  2. 執行以下命令,創建Deployment。

    kubectl apply -f test-ignore.yaml
  3. 執行以下命令,查看Pod的詳細信息,確認Pod規整后的規格。

    kubectl get pod <pod-name> -o yaml | grep alibabacloud.com/pod-use-spec

    預期輸出:

    alibabacloud.com/pod-use-spec: 2-4Gi

    可以看到, 如果不配置忽略容器資源,該ACS實例的規整結果是2-4Gi

  4. 使用以下內容更新test-ignore.yaml中的sidecar容器部分,為sidecar增加忽略資源聲明的環境變量。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: test-ignore
    .....
          - name: sidecar
            image: registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/busybox:1.28
            command: ["/bin/sh", "-c", "sleep 999"]
            env:
            - name: __IGNORE_RESOURCE__
              value: "true"
            resources:
              requests:
                cpu: 0.25
                memory: 0.5Gi
  5. 執行以下命令,更新deployment。

    kubectl apply -f test-ignore.yaml
  6. 再次執行以下命令,查看Pod的詳細信息,確認Pod規整后的規格。

    kubectl get pod <pod-name> -o yaml | grep alibabacloud.com/pod-use-spec

    可以看到,ACS實例規整后的結果為1-2Gi

  7. 檢查容器運行時的CPU權重。

    1. 執行以下命令,登錄到app容器內,查看app容器的CPU權重。

      kubectl exec -ti <pod-name> -c app -- cat /sys/fs/cgroup/cpu/cpu.shares

      預期輸出:

      1024
    2. 執行以下命令,登錄到sidecar容器內,查看sidecar容器的CPU權重。

      kubectl exec -ti <pod-name> -c sidecar -- cat /sys/fs/cgroup/cpu/cpu.shares

      預期輸出:

      256

      可以看到該ACS實例的app和sidecar容器的運行時CPU shares比例是4:1。

說明

如果把sidecar容器的resources.requests設置成0, 也可以達到規整后是1-2Gi的效果,但是在運行時,app容器和sidecar容器的CPU shares比例會遠遠大于期望的4:1的比例,無法合理設置。

下表展示了各種Pod配置下的資源規整結果以及實際生效的資源隔離情況:

sidecar configuration

app vs sidecar CPU shares

Pod resource

ignore_resource=false

CPU request=0.25c

4:1

2c4g

ignore_resource=false

CPU request=0c

512:1

1c2g

ignore_resource=true

CPU request=0.25c

4:1

1c2g