我在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[*].image
,spec.initContainers[*].image
或{{1}以外的其他字段}(仅是现有公差的补充)
我不确定这是否是解决我的问题的好方法,但是我花了最后几天研究它,结果并不令人鼓舞。
任何对正确方向的帮助,提示和建议,将不胜感激。
编辑:
来自spec.activeDeadlineSeconds
的Yaml是:
spec.tolerations
,我想将kubectl get pod --namespace tick -l app=polling-telegraf-s -o yaml
的值从true更改为false。
答案 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