helm安装istio_Istio 庖丁解牛二:sidecar injector

作者: 钟华,腾讯云容器团队高级工程师,热衷于容器、微服务、service mesh、istio、devops 等领域技术。

今天我们分析下 istio-sidecar-injector 组件:

8a81f33d42874e59715fbe5a47319fc9.png

用户空间的Pod要想加入mesh, 首先需要注入sidecar 容器, istio 提供了2种方式实现注入:

  • 自动注入: 利用 Kubernetes Dynamic Admission Webhooks 对 新建的pod 进行注入: initContainer + sidecar

  • 手动注入: 使用命令 istioctl kube-inject

「注入」本质上就是修改Pod的资源定义, 添加相应的sidecar容器定义, 内容包括2个新容器:

  • 名为 istio-init的initContainer: 通过配置iptables来劫持Pod中的流量

  • 名为 istio-proxy的sidecar容器: 两个进程pilot-agent和envoy, pilot-agent 进行初始化并启动envoy

e49cf83311a972f792e439c8c23c92d5.png


1. Dynamic Admission Control

kubernetes 的准入控制(Admission Control)有2种:

  • Built in Admission Control: 这些Admission模块可以选择性地编译进api server, 因此需要修改和重启kube-apiserver

  • Dynamic Admission Control: 可以部署在kube-apiserver之外, 同时无需修改或重启kube-apiserver.

其中, Dynamic Admission Control 包含2种形式:

  • Admission Webhooks: 该controller 提供http server, 被动接受kube-apiserver分发的准入请求.

  • Initializers: 该controller主动list and watch 关注的资源对象, 对watch到的未初始化对象进行相应的改造.

其中, Admission Webhooks 又包含2种准入控制:

  • ValidatingAdmissionWebhook

  • MutatingAdmissionWebhook

istio 使用了MutatingAdmissionWebhook来实现对用户Pod的注入, 首先需要保证以下条件满足:

  • 确保 kube-apiserver 启动参数 开启了 MutatingAdmissionWebhook

  • 给namespace 增加 label: kubectl labelnamespacedefaultistio-injection=enabled

  • 同时还要保证 kube-apiserver 的 aggregator layer 开启: --enable-aggregator-routing=true 且证书和api server连通性正确设置.

另外还需要一个配置对象, 来告诉kube-apiserver istio关心的资源对象类型, 以及webhook的服务地址. 如果使用helm安装istio, 配置对象已经添加好了, 查阅MutatingWebhookConfiguration:

% kubectl get mutatingWebhookConfiguration -oyaml

- apiVersion: admissionregistration.k8s.io/v1beta1

kind: MutatingWebhookConfiguration

metadata:

name: istio-sidecar-injector

webhooks:

- clientConfig:

service:

name: istio-sidecar-injector

namespace: istio-system

path: /inject

name: sidecar-injector.istio.io

namespaceSelector:

matchLabels:

istio-injection: enabled

rules:

- apiGroups:

- ""

apiVersions:

- v1

operations:

- CREATE

resources:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值