[英]helm upgrade --install: Error: Kubernetes cluster unreachable
[英]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"
}
當您嘗試像這樣更改服務時,有幾個可能的解決方法來解決此問題:
kubectl edit svc
手動更改服務類型
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.