环境

  • 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"
  • 第三种可能:

kube-apiserver --enable-admission-plugins` 没有配置 `MutatingAdmissionWebhook,ValidatingAdmissionWebhook
解决方法:
$ 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)

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无法创建解决方案相关推荐

  1. istio-不能自动注入sidecar的解决方法

    参考:https://github.com/opsnull/follow-me-install-kubernetes-cluster 使用二进制文件安装kubernetes,安装istio后,isti ...

  2. stio简介及基于阿里云ACK安装Istio

    Istio就是Service Mesh的落地实现. ​ 1. Istio的功能 负载均衡,服务发现 故障恢复,指标收集和监控 A/B测试,灰度发布 限流,访问控制和端到端认证 2. Istio的架构 ...

  3. Istio入门:架构原理及在k8s部署

    1. 简介 在本教程中,我们将介绍服务网格的基础知识,并了解它如何实现分布式系统架构. 我们将主要关注Istio,它是服务网格的一种具体实现.在此过程中,我们将介绍Istio的核心架构. 2. 什么是 ...

  4. Istio 中的 Sidecar 注入及透明流量劫持过程详解

    图片来源:上海五角场 by Jimmy Song 本文基于 Istio 1.5.1 版本,将为大家介绍以下内容: 什么是 sidecar 模式和它的优势在哪里. Istio 中是如何做 sidecar ...

  5. 让OpenShift Serivce Mesh自动对服务注入sidecar

    和Istio稍有不同,OpenShift Service Mesh缺省不会自动对服务注入sidecar容器.以istio的helloworld为例,在执行以下命令后,每个Pod只运行了一个容器,并没有 ...

  6. 【云原生】Kubernetes(k8s)Istio Gateway 介绍与实战操作

    文章目录 一.概述 二.Istio 架构 三.通过 istioctl 部署 Istio 1)安装istioctl 工具 2)通过istioctl安装istio 3)检查 四.Istio Gateway ...

  7. k8s安装部署Istio

    全栈工程师开发手册 (作者:栾鹏) 架构系列文章 Istio简介 Istio 官方推荐使用 Helm 来安装,Istio 中的很多组件都可以选择安装或开启,因此 Helm chart 也是组合式的,下 ...

  8. 微服务学习笔记 K8S、ISTIO、微服务、容器不得不说的故事

    微服务运行在容器内:容器依靠K8S进行编排.服务发现.负载均衡等:Istio和K8S进行融合,在利用K8S的一些功能的基础上(服务注册),对K8S进行功能的扩展,追加了一些服务治理功能(熔断.限流.动 ...

  9. es5直接引入html文件,ES6+转ES5(webpack+babel、指定多个js文件、自动注入)

    接续上篇ES6+转ES5,本篇将使用webpack和babel将多个不同目录下指定的多个ES6+语法的js文件编译为ES5,并将编译后的文件配置注入对应的html文件. 一.新建项目,目录如下 二.执 ...

最新文章

  1. python中的日期与时间
  2. j2ee html5,HTML5+J2EE实现文件异步上传
  3. 怎么把json数据转化为数组_RESTful API 返回统一JSON数据格式是怎么实现的?
  4. 20201010《近代数学》第1节课 笔记
  5. Unity3D如何有效地组织代码?(转)
  6. php取key的value值,获取数组中key和value的值
  7. Python基础-程序控制结构
  8. java tlv协议_看懂通信协议:自定义通信协议设计之TLV编码应用
  9. 甘肃计算机报名准考证打印,2019年9月甘肃计算机等考准考证打印入口已开通
  10. android 定时重启手机,有必要定时重启手机吗? 重启后手机会更流畅吗?
  11. 1小时场景生活圈来了!苏宁双十一引领零售体验革命
  12. 外壳防护等级/IP防护等级说明
  13. MATLAB adf检验和kpss检验结果说明
  14. 油猴插件的介绍和安装详解脚本的介绍和添加举例
  15. 对 mysql_init 未定义的引用_解析:以mysql_开始的未定义引用错误
  16. Java:输入年月日,输出这一天是这一年的第几天。
  17. Elastalert的报警功能拓展:分组报警
  18. 筹码集中度的判断方法
  19. CCNP-IGP综合:多域多协议修改AD和Rou-map标签的区别
  20. 无刷三相直流电机电动工具驱动方案设计

热门文章

  1. unity随笔(1)-材质、对象
  2. tensorflow随笔-读取图像文件数据(2)-TFRecord
  3. 【Python】Python语言学习:设计模式、单例模式
  4. 【NLP】Transformer自注意机制代码实现
  5. 【Python基础】Matplotlib 实操干货,38个案例带你从入门到进阶!
  6. 【小白学PyTorch】11.MobileNet详解及PyTorch实现
  7. Hyper-V 的导入和导出
  8. 分享让人折服的优秀代码基因
  9. redhat6.4执行二进制程序报错:/lib/ld-linux.so.2: bad ELF interpreter: No such file or directory...
  10. mysql 连接数的最大数