Istio 自动注入 sidecar 不成功及k8s安装istio后pod无法创建解决方案
環(huán)境
- Kubernetes v1.15.6 源碼安裝
- Istio v1.2.5 Helm 安裝
Istio v1.2.5 Helm 安裝
- Istio Helm安裝
問(wèn)題
安裝完后,做官方 bookinfo 實(shí)驗(yàn) kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml 出現(xiàn) sidecar 自動(dòng)注入不成功。
解決方法
- 第一種可能:
安裝 Istio 時(shí),配置了 enableNamespacesByDefault: false
sidecarInjectorWebhook:enabled: true# 變量為true,就會(huì)為所有命名空間開(kāi)啟自動(dòng)注入功能。如果賦值為false,則只有標(biāo)簽為istio-injection的命名空間才會(huì)開(kāi)啟自動(dòng)注入功能enableNamespacesByDefault: falserewriteAppHTTPProbe: false 解決方法: # 設(shè)置標(biāo)簽 $ kubectl label namespace default istio-injection=enabled# 查看 $ kubectl get namespace -L istio-injectionNAME STATUS AGE ISTIO-INJECTION default Active 374d enabled- 第二種可能:
安裝 Istio 時(shí),設(shè)置 autoInject: disabled
proxy:includeIPRanges: 192.168.16.0/20,192.168.32.0/20# 是否開(kāi)啟自動(dòng)注入功能,取值enabled則該pods只要沒(méi)有被注解為sidecar.istio.io/inject: "false",就會(huì)自動(dòng)注入。如果取值為disabled,則需要為pod設(shè)置注解sidecar.istio.io/inject: "true"才會(huì)進(jìn)行注入autoInject: disabled- 解決方法:
- 第一個(gè)方法:設(shè)置 autoInject: enabled
- 第二個(gè)方法:在 Pod 或者 Deployment 聲明 sidecar.istio.io/inject: "true"
-
第三種可能:
-
第四種可能: 如果自動(dòng)注入時(shí),報(bào)如下錯(cuò)誤信息: 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 節(jié)點(diǎn)沒(méi)安裝 flanneld、docker、kube-proxy,會(huì)導(dǎo)致 Master 節(jié)點(diǎn)訪(fǎng)問(wèn)不了集群內(nèi)部的 Service(istio-sidecar-injector),導(dǎo)致自動(dòng)注入失敗。 解決方法: Master 安裝 flanneld、docker、kube-proxy,并且針對(duì) Master 節(jié)點(diǎn)上的 node 設(shè)置 SchedulingDisabled
-
第五種可能: 沒(méi)有配置
Aggregation(一定要安裝
metrics-server,收集監(jiān)控?cái)?shù)據(jù)。提供
HPA伸縮數(shù)據(jù))
解決方法:- 第一個(gè)方法:在 Master 節(jié)點(diǎn)安裝 kube-proxy 服務(wù)(推薦直接把 master 節(jié)點(diǎn)安裝一個(gè) node,并設(shè)置成不可調(diào)度)
- 第二個(gè)方法:kube-apiserver 配置中啟用 --enable-aggregator-routing=true (允許在不修改 Kubernetes 核心代碼的同時(shí)擴(kuò)展 Kubernetes API)
k8s安裝istio后pod無(wú)法創(chuàng)建
報(bào)錯(cuò):istio-sidecar-injector.istio-system.svc:443 Client.Timeout
# 設(shè)置標(biāo)簽 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# 查看標(biāo)簽 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
總結(jié)
以上是生活随笔為你收集整理的Istio 自动注入 sidecar 不成功及k8s安装istio后pod无法创建解决方案的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【视频】详解Scala中的类及与Java
- 下一篇: HDFS底层原理系列讲解之fsimage