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

調度Pod到Arm架構的虛擬節點

將Pod調度到虛擬節點以ECI運行時,ACK集群和ACK Serverless集群均默認將Pod調度到x86架構的虛擬節點上。如果您的應用采用Arm架構,需要您額外添加nodeSelector來指定Arm架構的虛擬節點。本文介紹如何將Pod調度到Arm架構的虛擬節點。

前提條件

請確認集群滿足以下要求:

注意事項

將Pod調度到Arm架構的虛擬節點上時,對應的ECI實例按照實際生成的Arm規格進行計費,不按vCPU和內存計費。

說明

ECI Pod創建成功后,您可以通過kubectl describe pod <pod name>命令查看Pod詳情,通過k8s.aliyun.com/eci-instance-spec字段確認Pod實際使用的ECS規格。

添加Arm架構的虛擬節點

您可以通過以下步驟修改eci-profile,在集群中添加Arm架構的虛擬節點。

  1. 修改eci-profile。

    kubectl edit configmap eci-profile -n kube-system

    在eci-profile的data中將enableLinuxArm64Node配置為true,同時確保配置的可用區中至少有一個可用區開放了Arm規格。示例如下:

    data:
      enableClusterIp: "true"
      enableHybridMode: "false"
      enableLinuxArm64Node: "true"    #開啟Arm節點
      enableLogController: "false"
      enablePVCController: "false"
      enablePrivateZone: "false"
      enableReuseSSLKey: "false"
      featureGates: MetricsVpcNet=true,ProtectionFinalizers=false,WaitForFirstConsumer=false
      resourceGroupId: ""
      securityGroupId: sg-2zeg1fci0oq1hljo6h0a
      selectors: ""
      slsMachineGroup: ""
      vSwitchIds: vsw-2zewa5mb19wr45g63****,vsw-2zevanrscmoiaxryx****,vsw-2ze94pjtfuj9vaymf****   #配置的可用區中包含已開放Arm規格的可用區
      vpcId: vpc-2zeghwzptn5zii0w7****
  2. 查看生成的節點。

    配置enableLinuxArm64Node為true后,通過kubectl get node命令查看節點信息時,您可以看到集群已自動生成Arm節點。

    ARM節點

將Pod調度到Arm架構的虛擬節點

通過nodeSelector調度

在ACK集群和ACK Serverless集群中,Arm架構的節點均帶有kubernetes.io/arch: arm64 的標簽,創建ECI Pod時,可以通過nodeSelector來指定Arm架構的節點,將Pod調度到Arm架構的虛擬節點上運行。

nodeSelector:
  kubernetes.io/arch: arm64 

YAML示例如下:

  • 不指定規格

    沒有指定任何規格時,系統默認采用2 vCPU和4 GiB內存的Arm規格,即ecs.c8y.large。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: test
      labels:
        app: test
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          name: nginx-test
          labels:
            app: nginx
            alibabacloud.com/eci: "true"    # 調度到虛擬節點。
        spec:
          containers:
          - name: nginx
            image: arm64v8/centos:7.9.2009   # 使用基于Arm架構的鏡像。
            command: ["sleep"]
            args: ["999999"]
          nodeSelector:
            kubernetes.io/arch: arm64  # 指定Arm架構的節點。
  • 指定vCPU和內存規格

    指定vCPU和內存規格時,系統會從ECI支持的ECS Arm規格中自動選擇一個符合vCPU和內存條件的Arm規格。

    說明

    指定vCPU和內存規格時,可以直接定義Containers的limits或requests來指定(建議使用limits),也可以添加k8s.aliyun.com/eci-use-specs的Annotation來指定。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: test
      labels:
        app: test
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          name: nginx-test
          labels:
            app: nginx
            alibabacloud.com/eci: "true"    # 調度到虛擬節點。
        spec:
          containers:
          - name: nginx
            image: arm64v8/centos:7.9.2009   # 使用基于Arm架構的鏡像。
            command: ["sleep"]
            args: ["999999"]
            resources:
              limits:
                cpu: "1000m"      # 指vCPU為1 vCPU。
                memory: "4096Mi"   # 指定nginx容器的內存為4 GiB。
          nodeSelector:
            kubernetes.io/arch: arm64  # 指定Arm架構的節點。
  • 指定ECS Arm規格

    如果您對規格有特殊需求,可以通過k8s.aliyun.com/eci-use-specs的Annotation來指定具體的Arm規格。關于ECI支持的Arm規格,請參見指定Arm規格創建Pod

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: test
      labels:
        app: test
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          name: nginx-test
          labels:
            app: nginx
            alibabacloud.com/eci: "true" 
          annotations:
            k8s.aliyun.com/eci-use-specs: "ecs.c8y.large,ecs.g8y.large"   # 指定支持的ECS Arm規格,單次最多5個。
        spec:
          containers:
          - name: nginx
            image: arm64v8/centos:7.9.2009   # 使用基于Arm架構的鏡像。
            command: ["sleep"]
            args: ["999999"]
          nodeSelector:
            kubernetes.io/arch: arm64  # 調度到Arm節點。

多架構鏡像調度

如果您的應用鏡像為多架構鏡像,需要配置跨x86和Arm架構的節點調度,您可以通過tolerations和nodeAffinity實現將Pod優先調度到Arm架構或者x86架構的虛擬節點。

重要

參考以下YAML使用nodeAffinity配置節點親和性時,請確保集群已開啟虛擬節點調度功能。具體操作,請參見開啟集群虛擬節點調度策略

YAML示例如下:

  • 優先調度到Arm節點

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: test
      labels:
        app: test
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          name: nginx-test
          labels:
            app: nginx
            alibabacloud.com/eci: "true"    # 調度到虛擬節點。
        spec:
          tolerations:                 # 容忍Arm架構的節點的Taint。
          - key: kubernetes.io/arch
            operator: Equal
            value: arm64
            effect: NoSchedule
          affinity:                 
            nodeAffinity:     
              preferredDuringSchedulingIgnoredDuringExecution:
              - weight: 1
                preference:
                  matchExpressions:
                  - key: kubernetes.io/arch
                    operator: In
                    values:
                    - arm64       # 優先調度到Arm架構的節點。
          containers:
          - name: nginx
            image: arm64v8/centos:7.9.2009   # 使用多架構鏡像。
            command: ["sleep"]
            args: ["999999"]
  • 優先調度到x86節點

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: test
      labels:
        app: test
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          name: nginx-test
          labels:
            app: nginx
            alibabacloud.com/eci: "true"    # 調度到虛擬節點。
        spec:
          tolerations:                 # 容忍Arm架構節點的Taint。
          - key: kubernetes.io/arch
            operator: Equal
            value: arm64
            effect: NoSchedule
          affinity:                 
            nodeAffinity:     
              preferredDuringSchedulingIgnoredDuringExecution:
              - weight: 1
                preference:
                  matchExpressions:
                  - key: kubernetes.io/arch
                    operator: In
                    values:
                    - amd64         # 優先調度到x86架構的節點。
          containers:
          - name: nginx
            image: arm64v8/centos:7.9.2009   # 使用多架構鏡像。
            command: ["sleep"]
            args: ["999999"]

相關文檔