Istio 自动注入 sidecar 不成功及k8s安装istio后pod无法创建解决方案
環境
- Kubernetes v1.15.6 源碼安裝
- Istio v1.2.5 Helm 安裝
Istio v1.2.5 Helm 安裝
- Istio Helm安裝
問題
安裝完后,做官方 bookinfo 實驗 kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml 出現 sidecar 自動注入不成功。
解決方法
- 第一種可能:
安裝 Istio 時,配置了 enableNamespacesByDefault: false
sidecarInjectorWebhook:enabled: true# 變量為true,就會為所有命名空間開啟自動注入功能。如果賦值為false,則只有標簽為istio-injection的命名空間才會開啟自動注入功能enableNamespacesByDefault: falserewriteAppHTTPProbe: false 解決方法: # 設置標簽 $ kubectl label namespace default istio-injection=enabled# 查看 $ kubectl get namespace -L istio-injectionNAME STATUS AGE ISTIO-INJECTION default Active 374d enabled- 第二種可能:
安裝 Istio 時,設置 autoInject: disabled
proxy:includeIPRanges: 192.168.16.0/20,192.168.32.0/20# 是否開啟自動注入功能,取值enabled則該pods只要沒有被注解為sidecar.istio.io/inject: "false",就會自動注入。如果取值為disabled,則需要為pod設置注解sidecar.istio.io/inject: "true"才會進行注入autoInject: disabled- 解決方法:
- 第一個方法:設置 autoInject: enabled
- 第二個方法:在 Pod 或者 Deployment 聲明 sidecar.istio.io/inject: "true"
-
第三種可能:
-
第四種可能: 如果自動注入時,報如下錯誤信息: Error creating: Internal error occurred: failed calling webhook "sidecar-injector.istio.io": Post https://istio-sidecar-injector.istio-system.svc:443/inject?timeout=30s: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) 原因: Master 節點沒安裝 flanneld、docker、kube-proxy,會導致 Master 節點訪問不了集群內部的 Service(istio-sidecar-injector),導致自動注入失敗。 解決方法: Master 安裝 flanneld、docker、kube-proxy,并且針對 Master 節點上的 node 設置 SchedulingDisabled
-
第五種可能: 沒有配置
Aggregation(一定要安裝
metrics-server,收集監控數據。提供
HPA伸縮數據)
解決方法:- 第一個方法:在 Master 節點安裝 kube-proxy 服務(推薦直接把 master 節點安裝一個 node,并設置成不可調度)
- 第二個方法:kube-apiserver 配置中啟用 --enable-aggregator-routing=true (允許在不修改 Kubernetes 核心代碼的同時擴展 Kubernetes API)
k8s安裝istio后pod無法創建
報錯:istio-sidecar-injector.istio-system.svc:443 Client.Timeout
# 設置標簽 kubectl label namespace default istio-injection=disabled kubectl label namespace dmgeo istio-injection=disabled kubectl label namespace dmgeo-lib istio-injection=disabled kubectl label namespace dmgeo-ync-branch istio-injection=disabled kubectl label namespace dmgeo-ync-trunk istio-injection=disabled kubectl label namespace kuboard istio-injection=disabled kubectl label namespace kube-public istio-injection=disabled kubectl label namespace kube-public istio-injection=disabled# 查看標簽 kubectl get namespace -L istio-injection參考鏈接
- https://kubernetes.io/docs/tasks/access-kubernetes-api/configure-aggregation-layer/
- https://www.okcode.net/article/62009
- https://cloud.tencent.com/developer/article/1638611
總結
以上是生活随笔為你收集整理的Istio 自动注入 sidecar 不成功及k8s安装istio后pod无法创建解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【视频】详解Scala中的类及与Java
- 下一篇: JavaFX Button和Scene点