簡體   English   中英

Kubectl apply 命令用於更新現有服務資源

[英]Kubectl apply command for updating existing service resource

目前我使用的是 Kubernetes 版本 1.11.+。 以前我總是對我的雲構建腳本使用以下命令:

- name: 'gcr.io/cloud-builders/kubectl'
  id: 'deploy'
  args:
  - 'apply'
  - '-f'
  - 'k8s'
  - '--recursive'
  env:
  - 'CLOUDSDK_COMPUTE_ZONE=${_REGION}'
  - 'CLOUDSDK_CONTAINER_CLUSTER=${_CLUSTER_NAME}'

命令按預期工作,當時我使用的是 k8s 版本 1.10.+。 但是最近我收到以下錯誤:

  • spec.clusterIP:無效值:“”:字段不可變
  • metadata.resourceVersion:無效值:“”:必須為更新指定

所以我想知道這是否是服務資源的預期行為?

這是我的服務的 YAML 配置:

apiVersion: v1
kind: Service
metadata:
  name: {name}
  namespace: {namespace}
  annotations:
    beta.cloud.google.com/backend-config: '{"default": "{backend-config-name}"}'
spec:
  ports:
   - port: {port-num}
     targetPort: {port-num}
  selector:
    app: {label}
    environment: {env}
type: NodePort

手動運行kubectl apply -f somefile.yaml時,我有時會遇到此錯誤。 我認為當有人通過 Kubernetes 儀表板更改規范而不是通過kubectl apply應用新更改時,就會發生這種情況。

為了修復它,我運行kubectl edit services/servicename ,它在我的默認編輯器中打開了 yaml 規范。 然后刪除字段metadata.resourceVersionspec.clusterIP ,點擊保存並再次運行kubectl apply -f somefile.yaml

您需要在服務 yaml 文件中設置 spec.clusterIP,並將其值替換為服務中的 clusterIP 地址,如下所示:

spec:
  clusterIP:

您的問題在下面的github 上有討論,還有一個解決方法可以幫助您繞過這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM