天天看點

部署 istio-1.11.0 失敗 validation istiod 未找到

背景: 版本: istio-1.11.0,使用 istio operator 進行安裝,全程根據官方文檔進行 link

部署 istio operator

istio operator init
           

建立 IstioOperator

$: kubectl apply -f - <<EOF
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
metadata:
  namespace: istio-system
  name: example-istiocontrolplane
spec:
  profile: demo
EOF
           

這時檢視 pod 的狀态都是正常的,但是檢視 iop 的狀态卻是錯誤的,而且這時無法建立 istio 的任何資源,比如:dr、vs 等等

[root networking]# kubectl get pod -n istio-system
NAME                                    READY   STATUS    RESTARTS   AGE
istio-egressgateway-f55b8c8fd-dwgtz     1/1     Running   0          17m
istio-ingressgateway-75cd9dc88b-wngvr   1/1     Running   0          17m
istiod-d746f686f-hxf6p                  1/1     Running   0          17m
           
[root networking]# kubectl get iop -A
NAMESPACE      NAME                        REVISION   STATUS   AGE
istio-system   example-istiocontrolplane              ERROR    9m11
           

直接檢視 istio operator 或者 example-istiocontrolplane 都可以看出原因都是因為一下原因,從圖中可以看出很多配置因為找不到 istiod 而建立失敗。

failed to update resource with server-side apply for obj EnvoyFilter/istio-system/tcp-stats-filter-1.11: Internal error occurred: failed calling webhook "validation.istio.io": Post https://istiod.istio-system.svc:443/validate?timeout=30s: service "istiod" not found
           
部署 istio-1.11.0 失敗 validation istiod 未找到

着手修複,兩個辦法

  • 一個是繞過 istiod 驗證,
  • 另一個就是一點點 debug 确認問題并修複了

因為急需使用我這裡使用了 1,但是我個人不推薦使用 1,繞過 istiod 驗證會導緻所有配置的下發都不會驗證,比如說你的 yaml 不符合規範這類最簡單的問題都不會驗證,如果大家有時間盡量不要使用方法 1

直接删除驗證配置即可,删除前儲存一份副本以防萬一…

kubectl get validatingwebhookconfiguration istiod-istio-system -o yaml > temp.yaml
kubectl delete validatingwebhookconfiguration istiod-istio-system
           

然後等待 istio-operator 去同步 iop,如果等不及直接删除 istio-operator,再次重新開機就會将 iop 的狀态同步為健康的。

[root networking]# kubectl get iop -A
NAMESPACE      NAME                        REVISION   STATUS    AGE
istio-system   example-istiocontrolplane              HEALTHY   27m
           

這是方式不推薦,有時間的話我會 debug 看一下如何修複,更新部落格。

繼續閱讀