Kubectl error: the object has been modified; please apply your changes to the latest version and try again

前端 未结 4 1122
北恋
北恋 2021-01-03 19:34

I am getting below error while trying to apply patch :

core@dgoutam22-1-coreos-5760 ~ $ kubectl apply -f ads-central-configuration.yaml
Warning: kubectl appl         


        
相关标签:
4条回答
  • 2021-01-03 20:20

    I am able to reproduce the issue in my test environment. Steps to reproduce:

    1. Create a deployment from Kubernetes Engine > Workloads > Deploy
    2. Input your Application Name, Namespace, Labels
    3. Select cluster or create new cluster

    You are able to view the YAML file here and here is the sample:

    ---
    apiVersion: "apps/v1"
    kind: "Deployment"
    metadata:
      name: "nginx-1"
      namespace: "default"
      labels:
        app: "nginx-1"
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: "nginx-1"
      template:
        metadata:
          labels:
            app: "nginx-1"
        spec:
          containers:
          - name: "nginx"
            image: "nginx:latest"
    ---
    apiVersion: "autoscaling/v2beta1"
    kind: "HorizontalPodAutoscaler"
    metadata:
      name: "nginx-1-hpa"
      namespace: "default"
      labels:
        app: "nginx-1"
    spec:
      scaleTargetRef:
        kind: "Deployment"
        name: "nginx-1"
        apiVersion: "apps/v1"
      minReplicas: 1
      maxReplicas: 5
      metrics:
      - type: "Resource"
        resource:
          name: "cpu"
          targetAverageUtilization: 80
    

    After deployment if you go to Kubernetes Engine > Workloads > nginx-1 (click on it)

    a.) You will get Deployment details (Overview, Details, Revision history, events, YAML)
    b.) click on YAML and copy the content from YAML tab
    c.) create new YAML file and paste the content and save the file
    d.) Now if you run the command $kubectl apply -f newyamlfile.yaml, it will shows you the below error:

    Warning: kubectl apply should be used on resource created by either kubectl create --save-config or kubectl apply
    Error from server (Conflict): error when applying patch:
    {"metadata":{"annotations":{"kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"apps/v1\",\"kind\":\"Deployment\",\"metadata\":{\"annotations\":{\"deployment.kubernetes.io/revision\":\"1\"},\"creationTimestamp\":\"2019-09-17T21:34:39Z\",\"generation\":1,\"labels\":{\"app\":\"nginx-1\"},\"name\":\"nginx-1\",\"namespace\":\"default\",\"resourceVersion\":\"218884\",\"selfLink\":\"/apis/apps/v1/namespaces/default/deployments/nginx-1\",\"uid\":\"f41c5b6f-d992-11e9-9adc-42010a80023b\"},\"spec\":{\"progressDeadlineSeconds\":600,\"replicas\":3,\"revisionHistoryLimit\":10,\"selector\":{\"matchLabels\":{\"app\":\"nginx-1\"}},\"strategy\":{\"rollingUpdate\":{\"maxSurge\":\"25%\",\"maxUnavailable\":\"25%\"},\"type\":\"RollingUpdate\"},\"template\":{\"metadata\":{\"creationTimestamp\":null,\"labels\":{\"app\":\"nginx-1\"}},\"spec\":{\"containers\":[{\"image\":\"nginx:latest\",\"imagePullPolicy\":\"Always\",\"name\":\"nginx\",\"resources\":{},\"terminationMessagePath\":\"/dev/termination-log\",\"terminationMessagePolicy\":\"File\"}],\"dnsPolicy\":\"ClusterFirst\",\"restartPolicy\":\"Always\",\"schedulerName\":\"default-scheduler\",\"securityContext\":{},\"terminationGracePeriodSeconds\":30}}},\"status\":{\"availableReplicas\":3,\"conditions\":[{\"lastTransitionTime\":\"2019-09-17T21:34:47Z\",\"lastUpdateTime\":\"2019-09-17T21:34:47Z\",\"message\":\"Deployment has minimum availability.\",\"reason\":\"MinimumReplicasAvailable\",\"status\":\"True\",\"type\":\"Available\"},{\"lastTransitionTime\":\"2019-09-17T21:34:39Z\",\"lastUpdateTime\":\"2019-09-17T21:34:47Z\",\"message\":\"ReplicaSet \\\"nginx-1-7b4bb7fbf8\\\" has successfully progressed.\",\"reason\":\"NewReplicaSetAvailable\",\"status\":\"True\",\"type\":\"Progressing\"}],\"observedGeneration\":1,\"readyReplicas\":3,\"replicas\":3,\"updatedReplicas\":3}}\n"},"generation":1,"resourceVersion":"218884"},"spec":{"replicas":3},"status":{"availableReplicas":3,"observedGeneration":1,"readyReplicas":3,"replicas":3,"updatedReplicas":3}}
    to:
    Resource: "apps/v1, Resource=deployments", GroupVersionKind: "apps/v1, Kind=Deployment"
    Name: "nginx-1", Namespace: "default"
    Object: &{map["apiVersion":"apps/v1" "metadata":map["name":"nginx-1" "namespace":"default" "selfLink":"/apis/apps/v1/namespaces/default/deployments/nginx-1" "uid":"f41c5b6f-d992-11e9-9adc-42010a80023b" "generation":'\x02' "labels":map["app":"nginx-1"] "annotations":map["deployment.kubernetes.io/revision":"1"] "resourceVersion":"219951" "creationTimestamp":"2019-09-17T21:34:39Z"] "spec":map["replicas":'\x01' "selector":map["matchLabels":map["app":"nginx-1"]] "template":map["metadata":map["labels":map["app":"nginx-1"] "creationTimestamp":<nil>] "spec":map["containers":[map["imagePullPolicy":"Always" "name":"nginx" "image":"nginx:latest" "resources":map[] "terminationMessagePath":"/dev/termination-log" "terminationMessagePolicy":"File"]] "restartPolicy":"Always" "terminationGracePeriodSeconds":'\x1e' "dnsPolicy":"ClusterFirst" "securityContext":map[] "schedulerName":"default-scheduler"]] "strategy":map["type":"RollingUpdate" "rollingUpdate":map["maxUnavailable":"25%" "maxSurge":"25%"]] "revisionHistoryLimit":'\n' "progressDeadlineSeconds":'\u0258'] "status":map["observedGeneration":'\x02' "replicas":'\x01' "updatedReplicas":'\x01' "readyReplicas":'\x01' "availableReplicas":'\x01' "conditions":[map["message":"Deployment has minimum availability." "type":"Available" "status":"True" "lastUpdateTime":"2019-09-17T21:34:47Z" "lastTransitionTime":"2019-09-17T21:34:47Z" "reason":"MinimumReplicasAvailable"] map["lastTransitionTime":"2019-09-17T21:34:39Z" "reason":"NewReplicaSetAvailable" "message":"ReplicaSet \"nginx-1-7b4bb7fbf8\" has successfully progressed." "type":"Progressing" "status":"True" "lastUpdateTime":"2019-09-17T21:34:47Z"]]] "kind":"Deployment"]}
    for: "test.yaml": Operation cannot be fulfilled on deployments.apps "nginx-1": the object has been modified; please apply your changes to the latest version and try again
    

    To solve the problem, you need to find the exact yaml file and then edit it as per your requirement, after that you can run $kubectl apply -f nginx-1.yaml

    Hope this information finds you well.

    0 讨论(0)
  • 2021-01-03 20:21

    It seems likely that your yaml configurations were copy pasted from what was generated, and thus contains fields such as creationTimestamp, which don't belong in a declarative configuration file.

    Go through your yaml and clean it up. Remove things that are instance specific. Your final yaml should be simple enough that you can easily understand it.

    0 讨论(0)
  • 2021-01-03 20:26

    you may have been edited the same exported deployment file..

    1 - try to reexport it with:

    kubectl get deployment <DEPLOYMENT-NAME> -o yaml > deployment-file.yaml
    

    2 - make the needed modifications in "deployment-file.yaml"

    3 - apply the changes with:

    kubectl apply -f deployment-file.yaml
    

    OR:

    you may want to edit the deployment directly.. use :

    kubectl edit deployment <DEPLOYMENT-NAME> -o yaml

    change the default editor if you aren't familiar with VI editor : export EDITOR=nano

    0 讨论(0)
  • 2021-01-03 20:27

    Give attention to put the last resourceVersion in your update, you can get it running:

    kubectl get deployment <DEPLOYMENT-NAME> -o yaml | grep resourceVersion
    
    0 讨论(0)
提交回复
热议问题