前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Istio 自动注入 sidecar 不成功解决方案

Istio 自动注入 sidecar 不成功解决方案

作者头像
YP小站
发布2020-06-04 14:52:44
3.2K0
发布2020-06-04 14:52:44
举报
文章被收录于专栏:YP小站

环境

  • Kubernetes v1.15.6 源码安装
  • Istio v1.2.5 Helm 安装

Istio v1.2.5 Helm 安装

问题

安装完后,做官方 bookinfo 实验 kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml 出现 sidecar 自动注入不成功。

解决方法

  • 第一种可能:

安装 Istio 时,配置了 enableNamespacesByDefault: false

代码语言:javascript
复制
sidecarInjectorWebhook:
  enabled: true
  # 变量为true,就会为所有命名空间开启自动注入功能。如果赋值为false,则只有标签为istio-injection的命名空间才会开启自动注入功能
  enableNamespacesByDefault: false
  rewriteAppHTTPProbe: false

解决方法:

代码语言:javascript
复制
# 设置标签
$ kubectl label namespace default istio-injection=enabled

# 查看
$ kubectl get namespace -L istio-injection

NAME                   STATUS   AGE    ISTIO-INJECTION
default                Active   374d   enabled

  • 第二种可能:

安装 Istio 时,设置 autoInject: disabled

代码语言:javascript
复制
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"

  • 第三种可能:

kube-apiserver --enable-admission-plugins 没有配置 MutatingAdmissionWebhook,ValidatingAdmissionWebhook

解决方法:

代码语言:javascript
复制
$ vim kube-apiserver

--enable-admission-plugins=NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorag

  • 第四种可能: 如果自动注入时,报如下错误信息: 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)

参考链接

  • https://kubernetes.io/docs/tasks/access-kubernetes-api/configure-aggregation-layer/
  • https://www.okcode.net/article/62009

欢迎大家关注交流,定期分享自动化运维、DevOps、Kubernetes、Service Mesh和Cloud Native

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 YP小站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 环境
  • Istio v1.2.5 Helm 安装
  • 问题
  • 解决方法
  • 参考链接
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档