如何在 Openshift 中删除 podAntiAfinity

Bru*_*que 2 patch set openshift

我需要从多个部署配置中删除 podeAntiAfinity 属性。

到目前为止,我已经设法找到一种使用oc 补丁 dc更新此属性的方法。

我的部署配置看起来像这样:

apiVersion: v1
kind: DeploymentConfig
metadata:
  annotations:
    openshift.io/generated-by: OpenShiftNewApp
  creationTimestamp: 2018-05-25T17:31:47Z
  generation: 8
  labels:
    app: my-app
  name: my-dc
  namespace: my-ns
spec:
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    app: my-app
    deploymentconfig: my-dc
  strategy:
    activeDeadlineSeconds: 21600
    resources: {}
    rollingParams:
      intervalSeconds: 1
      maxSurge: 1
      maxUnavailable: 100%
      timeoutSeconds: 600
      updatePeriodSeconds: 1
    type: Rolling
  template:
    metadata:
      annotations:
        alpha.image.policy.openshift.io/resolve-names: '*'
        openshift.io/generated-by: OpenShiftNewApp
      creationTimestamp: null
      labels:
        app: my-app
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: someKey
                operator: DoesNotExist
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchExpressions:
              - key: app
                operator: In
                values:
                - another-app
            topologyKey: kubernetes.io/hostname
Run Code Online (Sandbox Code Playgroud)

我想删除spec.template.spec.affinity.podAntiAffinity ,同时保留spec.template.spec.affinity.nodeAffinity

有人可以帮忙吗?

Gra*_*ton 5

oc patch命令采用不同的补丁格式。您想使用json允许您说应该删除项目的格式。看:

未经测试的猜测,补丁需要是:

[{ "op": "remove", "path": "/spec/template/spec/affinity/podAntiAffinity" }]
Run Code Online (Sandbox Code Playgroud)

因此尝试:

oc patch dc/my-dc --type json --patch '[{ "op": "remove", "path": "/spec/template/spec/affinity/podAntiAffinity" }]'
Run Code Online (Sandbox Code Playgroud)