项目组在自动化更新service的yaml时,遇到如下报错
在这里插入图片描述
提示必须指定metadata.resourceVersion字段,查看k8s官网中更新service的示例如下:

$ curl -X PUT -H 'Content-Type: application/yaml' --data '
apiVersion: v1
kind: Service
metadata:
  name: deployment-example
  resourceVersion: "2205995"
spec:
  clusterIP: 10.183.250.161
  ports:
  - name: http
    nodePort: 32417
    port: 80
    protocol: TCP
    targetPort: 8080
  selector:
    app: nginx
  sessionAffinity: None
  type: LoadBalancer
' http://127.0.0.1:8001/api/v1/namespaces/default/services/deployment-example

因此更新的时候必须带上resourceVersion字段,另外该字段的值必须是当前正在运行的最新值,否则会提示如下错误,调接口会报409冲突。
在这里插入图片描述
如图,提示更换成最新的版本。注意,更新失败也会导致resourceVersion的值变化。
尝试更新deployment的yaml时发现,请求体中不论含不含resourceVersion字段均可以更新成功,为了避免错误,建议尽量不要带reourceVersion字段。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐