Istio 注入原理

举报
叶康铭 发表于 2021/03/25 23:01:51 2021/03/25
5.8k+ 0 0
【摘要】 Istio通过注入边车使得本身的应用获取了一些高级能力,是如何完成边车的注入的呢? 注入方式 手动注入 - 针对具体的一个资源对象 工作原理: 通过改写yaml文件植入Istio-proxy容器,以及init-container用于修改iptables规则。 配置方法:istioctl kube-inject [app.yaml] -o [inject....

Istio通过注入边车使得本身的应用获取了一些高级能力,是如何完成边车的注入的呢?

注入方式

手动注入 - 针对具体的一个资源对象

工作原理: 通过改写yaml文件植入Istio-proxy容器,以及init-container用于修改iptables规则。
配置方法:istioctl kube-inject [app.yaml] -o [inject.yaml] | kubectl apply -f -

自动注入 - 针对命名空间内的所有资源对象

工作原理: 通过webhook机制监听apiserver提交的请求从而自动的修改对应的资源对象。
配置方法:kubectl label namespace <namespace> istio-injection=enabled在这里插入图片描述
通过webhook配置见到如果命名空间如果有对应的标签就会被选中执行自动注入
kubectl get mutatingwebhookconfiguration istio-sidecar-injector -o yaml
在这里插入图片描述

手动注入

原始的资源定义清单

apiVersion: v1
kind: Namespace
metadata:
  name: demo
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels: app: nginx-deployment
  name: nginx-deployment
  namespace: demo
spec:
  replicas: 2
  selector: matchLabels: app: nginx-deployment
  strategy: rollingUpdate: maxSurge: 25% maxUnavailable: 25% type: RollingUpdate
  template: metadata: labels: app: nginx-deployment spec: containers: - image: 'nginx:latest' name: nginx-deployment

  
 

运行手动注入命令生成新的资源定义清单

istioctl kube-inject -f nginx-deployment.yaml -o nginx-deployment-inject.yaml

  
 

此时会发现新增了一个proxy的容器以及init容器。
在这里插入图片描述
通过应用注入后的资源定义清单完成注入

kubectl apply -f nginx-deployment-inject.yaml

  
 

注入前后对比

注入前 只有应用的容器
在这里插入图片描述

注入后 多出一个容器
在这里插入图片描述

注入前 应用只监听自身的套接字
在这里插入图片描述

注入后 Nginx 应用 与 Istio-Proxy 共享网络命名空间
在这里插入图片描述
在这里插入图片描述

文章来源: blog.csdn.net,作者:叶康铭,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/m0_38030719/article/details/108702826

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。