【问题标题】:Volume node affinity conflicts in Argo workflowsArgo 工作流程中的卷节点关联性冲突
【发布时间】:2023-03-10 14:15:01
【问题描述】:

我有一个包含两个步骤的 Argo 工作流程,第一个在 Linux 上运行,第二个在 Windows 上运行

apiVersion: argoproj.io/v1alpha1
kind: WorkflowTemplate
metadata:
  name: my-workflow-v1.13
spec:
  entrypoint: process
  volumeClaimTemplates:
    - metadata:
        name: workdir
      spec:
        accessModes: [ "ReadWriteOnce" ]
        resources:
          requests:
            storage: 1Gi
  arguments:
    parameters:
      - name: jobId
        value: 0
  templates:
    - name: process
      steps:
        - - name: prepare
            template: prepare
        - - name: win-step
            template: win-step

    - name: win-step
      nodeSelector:
        kubernetes.io/os: windows
      container:
        image: mcr.microsoft.com/windows/nanoserver:1809
        command: ["cmd", "/c"]
        args: ["dir", "C:\\workdir\\source"]
        volumeMounts:
          - name: workdir
            mountPath: /workdir

    - name: prepare
      nodeSelector:
        kubernetes.io/os: linux
      inputs:
        artifacts:
          - name: src
            path: /opt/workdir/source.zip
            s3:
              endpoint: minio:9000
              insecure: true
              bucket: "{{workflow.parameters.jobId}}"
              key: "source.zip"
              accessKeySecret:
                name: my-minio-cred
                key: accesskey
              secretKeySecret:
                name: my-minio-cred
                key: secretkey
      script:
        image: garthk/unzip:latest
        imagePullPolicy: IfNotPresent
        command: [sh]
        source: |
          unzip /opt/workdir/source.zip -d /opt/workdir/source
        volumeMounts:
          - name: workdir
            mountPath: /opt/workdir

两个步骤共享一个卷。

为了在 Azure Kubernetes 服务中实现这一点,我必须创建两个节点池,一个用于 Linux 节点,另一个用于 Windows 节点

问题是,当我对工作流进行排队时,有时它会完成,有时,win-step(在 Windows 容器中运行的步骤)挂起/失败并显示此消息

1 node(s) had volume node affinity conflict

我了解到这可能会发生,因为卷被安排在特定区域中,而 Windows 容器(因为它位于不同的池中)被安排在无法访问该卷的不同区域中,但我找不到解决办法。

请帮忙。

【问题讨论】:

    标签: azure kubernetes azure-aks persistent-volumes argo-workflows


    【解决方案1】:

    第一个在 Linux 上运行,第二个在 Windows 上运行

    我怀疑您是否可以在 Linux(通常是 ext4 文件系统)和 Windows 节点(Azure Windows containers uses NTFS 文件系统)上挂载相同的卷。

    因此,您在第二步中尝试挂载的卷位于与您的nodeSelector 不匹配的节点池中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-27
      • 2020-03-03
      • 1970-01-01
      • 2022-08-16
      • 2022-06-10
      • 1970-01-01
      • 2020-08-29
      • 2022-08-16
      相关资源
      最近更新 更多