簡體   English   中英

掌舵升級時出現集群類型錯誤

[英]Getting cluster type error on helm upgrade

試圖做:

helm upgrade --namespace keycloak -f k8s/sandbox/values.yaml keycloak codecentric/keycloak

得到:

UPGRADE FAILED: cannot patch "keycloak-http" with kind Service: Service "keycloak-http" is invalid: [spec.ports[0].nodePort: Forbidden: may not be used when `type` is 'ClusterIP', spec.ports[1].nodePort: Forbidden: may not be used when `type` is 'ClusterIP']

但是,初始值NodePort,而不是 ClusterIP:

service:
  # Annotations for headless and HTTP Services
  annotations: {}
  # Additional labels for headless and HTTP Services
  labels: {}
  # key: value
  # The Service type
  type: NodePort

kubectl edit 還顯示類型:NodePort

spec:
  clusterIP: <SomeIP>
  externalTrafficPolicy: Cluster
  ports:
  - name: http
    nodePort: 31062
    port: 80
    protocol: TCP
    targetPort: http
  - name: https
    nodePort: 31258
    port: 8443
    protocol: TCP
    targetPort: https
  - name: http-management
    nodePort: 32113
    port: 9990
    protocol: TCP
    targetPort: http-management
  selector:
    app.kubernetes.io/instance: keycloak
    app.kubernetes.io/name: keycloak
  sessionAffinity: None
  type: NodePort

這是來自helm template的 keycloak-http 服務。 出於某種原因,它說 ClusterIp,但兩個初始值。yaml 說 NodePort 並且 kubectl edit service keycloak-http 說它是 NodePort:

# Source: keycloak/templates/service-http.yaml
apiVersion: v1
kind: Service
metadata:
  name: keycloak-http
  labels:
    helm.sh/chart: keycloak-10.1.0
    app.kubernetes.io/name: keycloak
    app.kubernetes.io/instance: keycloak
    app.kubernetes.io/version: "12.0.4"
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/component: http
spec:
  type: ClusterIP
  ports:
    - name: http
      port: 80
      targetPort: http
      protocol: TCP
    - name: https
      port: 8443
      targetPort: https
      protocol: TCP
    - name: http-management
      port: 9990
      targetPort: http-management
      protocol: TCP
  selector:
    app.kubernetes.io/name: keycloak
    app.kubernetes.io/instance: keycloak

有任何想法嗎?

請手動刪除服務並重新執行helm升級

我拉出存儲庫並嘗試將values.yaml更改為NodePort ,這對我來說很好。 打印的模板有NodePort而不是ClusterIP 這意味着您可能做錯了什么,或者可能使用了一些錯誤的值文件。

現在錯誤本身就在那里,因為您不能像那樣更改服務類型,並且 Kubernetes 不允許它,因為NodePort在服務模板中包含其他參數:

"ports": [
            {
                "name": "http",
                "nodePort": 30240,
                "port": 8888,
                "protocol": "TCP",
                "targetPort": "http"
            }

雖然這是 ClusterIP:

"ports": [
            {
                "name": "http",
                "port": 8888,
                "protocol": "TCP",
                "targetPort": "http"
            }

當您嘗試像這樣更改服務時,有幾個可能的解決方法來解決此問題:

  • 使用不同的發布名稱安裝新版本的 helm chart
  • 使用kubectl edit svc手動更改服務類型
  • 刪除現有版本並安裝具有相同版本名稱的圖表的新版本

暫無
暫無

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

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