编辑/更新广告连播的Yaml

时间:2019-11-01 15:54:19

标签: kubernetes yaml kubernetes-pod amazon-eks aws-eks

我在EKS集群中有一个Pod,我想对其进行编辑,以便可以将read-only的值从true更改为false。这样,我希望能够更改Pod的系统{/ {1}}(尚未确切知道它的名称)。

有可能吗?我可以那样做吗?

我尝试复制当前yaml内容并创建一个只读值设置为false的新yaml文件,以便将其替换为当前yaml文件。

我尝试使用的命令是:

read-only file system

我得到的错误是:

  

警告:kubectl apply应用于由kubectl create --save-config或kubectl apply创建的资源   广告连播“ polling-telegraf-s-79f44d578f-khdjf”无效:规范:禁止:广告连播更新不能更改kubectl apply -f telegraf-new.yaml --namespace examplenamespace -l app=polling-telegraf-s spec.containers[*].imagespec.initContainers[*].image或{{1}以外的其他字段}(仅是现有公差的补充)

我不确定这是否是解决我的问题的好方法,但是我花了最后几天研究它,结果并不令人鼓舞。
任何对正确方向的帮助,提示和建议,将不胜感激。

编辑:
来自spec.activeDeadlineSeconds的Yaml是:

spec.tolerations

,我想将kubectl get pod --namespace tick -l app=polling-telegraf-s -o yaml的值从true更改为false。

2 个答案:

答案 0 :(得分:0)

您可以使用yaml快速编辑广告连播kubectl edit pods <pod-name>

您必须记住,在安排pod时,某些字段不允许编辑,这在您的错误消息中已提及。

我认为您应该首先删除pod并应用新的yaml文件。

答案 1 :(得分:0)

您可以使用命令kubectl edit [resource] [UID]编辑kubernetes资源yaml。例如,要更改广告连播的Yaml,您可以运行kubectl edit $POD_UID

但是,这不适用于您的情况,因为您正在编辑mount,并且需要重新启动pod。从这个意义上说,最好的方法就是您已经做过的事情。首先通过运行kubectl get pod $POD_UID -o yaml从api中提取yaml,然后编辑其内容以再次部署它。但是,如错误所示,不允许您编辑Yaml的某些部分。因此,您必须删除那些部分。

仅保留日志已指向的部分:spec.containers[*].image, spec.initContainers[*].image, spec.activeDeadlineSeconds or spec.tolerations

否则,这是您必须删除的部分:

metadata:
  creationTimestamp: 2019-11-01T13:22:50Z
  generateName:
  ownerReferences:
  - apiVersion: apps/v1
    blockOwnerDeletion: true
    controller: true
    kind: ReplicaSet
    name:
    uid: 947fb7b7-f1ab-11e9-adfb-42010a8001b2
  resourceVersion: "103002009"
  selfLink:
  uid: b3f96ba4-fcaa-11e9-adfb-42010a8001b2
spec:
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    volumeMounts:
    - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
      name: default-token-ff27n
      readOnly: true
  nodeName:
  priority: 0
  schedulerName: default-scheduler
  securityContext: {}
  serviceAccount: default
  serviceAccountName: default
  terminationGracePeriodSeconds: 30
  tolerations:
  - effect: NoExecute
    key: node.kubernetes.io/not-ready
    operator: Exists
    tolerationSeconds: 300
  - effect: NoExecute
    key: node.kubernetes.io/unreachable
    operator: Exists
    tolerationSeconds: 300
  volumes:
  - name: default-token-ff27n
    secret:
      defaultMode: 420
      secretName: default-token-ff27n
status:
  conditions:
  - lastProbeTime: null
    lastTransitionTime: 2019-11-01T13:22:50Z
    status: "True"
    type: Initialized
  - lastProbeTime: null
    lastTransitionTime: 2019-11-01T13:22:55Z
    status: "True"
    type: Ready
  - lastProbeTime: null
    lastTransitionTime: null
    status: "True"
    type: ContainersReady
  - lastProbeTime: null
    lastTransitionTime: 2019-11-01T13:22:50Z
    status: "True"
    type: PodScheduled
  containerStatuses:
  - containerID:
    image:
    imageID:
    lastState: {}
    name: proxy
    ready: true
    restartCount: 0
    state:
      running:
        startedAt: 2019-11-01T13:22:55Z
  hostIP:
  phase: Running
  podIP:
  qosClass: Burstable
  startTime: 2019-11-01T13:22:50Z