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"
- 第一个方法:设置
第三种可能:
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)
- 第一个方法:在 Master 节点安装
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无法创建解决方案相关推荐
- istio-不能自动注入sidecar的解决方法
参考:https://github.com/opsnull/follow-me-install-kubernetes-cluster 使用二进制文件安装kubernetes,安装istio后,isti ...
- stio简介及基于阿里云ACK安装Istio
Istio就是Service Mesh的落地实现. 1. Istio的功能 负载均衡,服务发现 故障恢复,指标收集和监控 A/B测试,灰度发布 限流,访问控制和端到端认证 2. Istio的架构 ...
- Istio入门:架构原理及在k8s部署
1. 简介 在本教程中,我们将介绍服务网格的基础知识,并了解它如何实现分布式系统架构. 我们将主要关注Istio,它是服务网格的一种具体实现.在此过程中,我们将介绍Istio的核心架构. 2. 什么是 ...
- Istio 中的 Sidecar 注入及透明流量劫持过程详解
图片来源:上海五角场 by Jimmy Song 本文基于 Istio 1.5.1 版本,将为大家介绍以下内容: 什么是 sidecar 模式和它的优势在哪里. Istio 中是如何做 sidecar ...
- 让OpenShift Serivce Mesh自动对服务注入sidecar
和Istio稍有不同,OpenShift Service Mesh缺省不会自动对服务注入sidecar容器.以istio的helloworld为例,在执行以下命令后,每个Pod只运行了一个容器,并没有 ...
- 【云原生】Kubernetes(k8s)Istio Gateway 介绍与实战操作
文章目录 一.概述 二.Istio 架构 三.通过 istioctl 部署 Istio 1)安装istioctl 工具 2)通过istioctl安装istio 3)检查 四.Istio Gateway ...
- k8s安装部署Istio
全栈工程师开发手册 (作者:栾鹏) 架构系列文章 Istio简介 Istio 官方推荐使用 Helm 来安装,Istio 中的很多组件都可以选择安装或开启,因此 Helm chart 也是组合式的,下 ...
- 微服务学习笔记 K8S、ISTIO、微服务、容器不得不说的故事
微服务运行在容器内:容器依靠K8S进行编排.服务发现.负载均衡等:Istio和K8S进行融合,在利用K8S的一些功能的基础上(服务注册),对K8S进行功能的扩展,追加了一些服务治理功能(熔断.限流.动 ...
- es5直接引入html文件,ES6+转ES5(webpack+babel、指定多个js文件、自动注入)
接续上篇ES6+转ES5,本篇将使用webpack和babel将多个不同目录下指定的多个ES6+语法的js文件编译为ES5,并将编译后的文件配置注入对应的html文件. 一.新建项目,目录如下 二.执 ...
最新文章
- python中的日期与时间
- j2ee html5,HTML5+J2EE实现文件异步上传
- 怎么把json数据转化为数组_RESTful API 返回统一JSON数据格式是怎么实现的?
- 20201010《近代数学》第1节课 笔记
- Unity3D如何有效地组织代码?(转)
- php取key的value值,获取数组中key和value的值
- Python基础-程序控制结构
- java tlv协议_看懂通信协议:自定义通信协议设计之TLV编码应用
- 甘肃计算机报名准考证打印,2019年9月甘肃计算机等考准考证打印入口已开通
- android 定时重启手机,有必要定时重启手机吗? 重启后手机会更流畅吗?
- 1小时场景生活圈来了!苏宁双十一引领零售体验革命
- 外壳防护等级/IP防护等级说明
- MATLAB adf检验和kpss检验结果说明
- 油猴插件的介绍和安装详解脚本的介绍和添加举例
- 对 mysql_init 未定义的引用_解析:以mysql_开始的未定义引用错误
- Java:输入年月日,输出这一天是这一年的第几天。
- Elastalert的报警功能拓展:分组报警
- 筹码集中度的判断方法
- CCNP-IGP综合:多域多协议修改AD和Rou-map标签的区别
- 无刷三相直流电机电动工具驱动方案设计
热门文章
- unity随笔(1)-材质、对象
- tensorflow随笔-读取图像文件数据(2)-TFRecord
- 【Python】Python语言学习:设计模式、单例模式
- 【NLP】Transformer自注意机制代码实现
- 【Python基础】Matplotlib 实操干货,38个案例带你从入门到进阶!
- 【小白学PyTorch】11.MobileNet详解及PyTorch实现
- Hyper-V 的导入和导出
- 分享让人折服的优秀代码基因
- redhat6.4执行二进制程序报错:/lib/ld-linux.so.2: bad ELF interpreter: No such file or directory...
- mysql 连接数的最大数