设为首页 加入收藏

TOP

istio sidecar自动注入过程分析(一)
2019-09-17 17:22:34 】 浏览:48
Tags:istio sidecar 自动 注入 过程 分析

istio sidecar自动注入过程分析

istio通过mutating webhook admission controller机制实现sidecar的自动注入.istio sidecard在每个服务创建pod时都会被自动注入.

sidecar自动注入检查

检查kube-apiserver

webhook支持需要Kubernets1.9或者更高的版本,使用以下命令查看

[root@test1 ~]# kubectl api-versions | grep admissionregistration
admissionregistration.k8s.io/v1beta1

同时检查kube-apiserver有没加入参数MutatingAdmissionWebhookValidatingAdmissionWebhook

如果kubernetes是二进制安装,在master结点没有安装kube-proxy的情况下,需要在kube-apiserver加入参数enable-aggregator-routing=true.

检查sidecar-injector的configmap

在sidecar-injector的configmap中设置policy=enabled字段来查看是否启用自动注入

[root@test1 ~]# kubectl describe cm istio-sidecar-injector -n istio-system
Name:         istio-sidecar-injector
Namespace:    istio-system
Labels:       app=istio
              chart=istio-1.0.3
              heritage=Tiller
              istio=sidecar-injector
              release=istio
...
Data
====
config:
----
policy: enabled

检查namespace标签

为需要自动注入的namespace打上标签istio-injection: enabled

[root@test1 ~]# kubectl get namespace -L istio-injection
NAME           STATUS    AGE       ISTIO-INJECTION
default        Active    3d        enabled
istio-system   Active    3d        
kube-public    Active    3d        
kube-system    Active    3d 

kubectl label namespace default istio-injection=enabled

sidecar自动注入过程

webhook过程

查看sidecar的webhook

[root@test1 ~]# kubectl get MutatingWebhookConfiguration -n istio-system
NAME                     CREATED AT
istio-sidecar-injector   2018-11-12T09:14:44Z

[root@test1 ~]# kubectl describe MutatingWebhookConfiguration istio-sidecar-injector -n istio-system
Name:         istio-sidecar-injector
Namespace:    
Labels:       app=istio-sidecar-injector
              chart=sidecarInjectorWebhook-1.0.3
              heritage=Tiller
              release=istio
... ...
Webhooks:
Client Config:
    ... ...
    Service:
      Name:        istio-sidecar-injector
      Namespace:   istio-system
      Path:        /inject
  Failure Policy:  Fail
  Name:            sidecar-injector.istio.io
  Namespace Selector:
    Match Labels:
      Istio - Injection:  enabled
  Rules:
    API Groups:
      
    API Versions:
      v1
    Operations:
      CREATE
    Resources:
      pods

由上面可以看出创建pod时会调用sidecar的webhook,接着向istio-sidecar-injector的服务发送inject注册(post https://istio-sidecar-injector.istio-system.svc:443/inject?timeout=30s).

查看istio-sidecar-injector的日志

[root@test-1 ~]# kubectl get pods -n istio-system | grep istio-sidecar
istio-sidecar-injector-d96cd9459-lbf66      1/1       Running       0          13d

[root@test-1 ~]# kubectl logs istio-sidecar-injector-d96cd9459-lbf66 -n istio-system
2018-11-09T06:40:53.895979Z info  AdmissionReview for Kind=/v1, Kind=Pod Namespace=default Name= () UID=67d96021-e3ea-11e8-a721-00163e0c1d10 Rfc6902PatchOperation=CREATE UserInfo={system:unsecured  [system:masters system:authenticated] map[]}
2018-11-09T06:40:53.897821Z info  AdmissionResponse: patch=[{"op":"add","path":"/spec/initContainers","value":[{"name":"istio-init","image":"docker.io/istio/proxy_init:1.0.0","args":["-p","15001","-u","1337","-m","REDIRECT","-i","10.0.0.1/24","-x","","-b","80,","-d",&
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇给定数据利用神经网络算法模型进.. 下一篇系统架构设计师-软件水平考试(高..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目