istio-禁用/允許sidecar設置


一、在namespace設置自動注入:

給 default 命名空間設置標簽:istio-injection=enabled:

$ kubectl label namespace default istio-injection=enabled
$ kubectl get namespace -L istio-injection
NAME           STATUS    AGE       ISTIO-INJECTION
default        Active    1h        enabled
istio-system   Active    1h
kube-public    Active    1h
kube-system    Active    1h

這樣就會在 Pod 創建時觸發 Sidecar 的注入過程了。刪掉運行的 Pod,會產生一個新的 Pod,新 Pod 會被注入 Sidecar。原有的 Pod 只有一個容器,而被注入 Sidecar 的 Pod 會有兩個容器:

$ kubectl delete pod sleep-776b7bcdcd-7hpnk
$ kubectl get pod
NAME                     READY     STATUS        RESTARTS   AGE
sleep-776b7bcdcd-7hpnk   1/1       Terminating   0          1m
sleep-776b7bcdcd-bhn9m   2/2       Running       0          7s

查看被注入的 Pod 的細節。不難發現多出了一個 istio-proxy 容器及其對應的存儲卷。注意用正確的 Pod 名稱來執行下面的命令:

$ kubectl describe pod sleep-776b7bcdcd-bhn9m

禁用 default 命名空間的自動注入功能,然后檢查新建 Pod 是不是就不帶有 Sidecar 容器了:

$ kubectl label namespace default istio-injection-
$ kubectl delete pod sleep-776b7bcdcd-bhn9m
$ kubectl get pod
NAME                     READY     STATUS        RESTARTS   AGE
sleep-776b7bcdcd-bhn9m   2/2       Terminating   0          2m
sleep-776b7bcdcd-gmvnr   1/1       Running       0          2s

二、在annotations中設置是否允許自動注入:

disabled - Sidecar 注入器缺省不會向 Pod 進行注入。在 Pod 模板中加入 sidecar.istio.io/inject 注解並賦值為 true 才能啟用注入。

enabled - Sidecar 注入器缺省會對 Pod 進行注入。在 Pod 模板中加入 sidecar.istio.io/inject 注解並賦值為 false 就會阻止對這一 Pod 的注入。

下面的例子用 sidecar.istio.io/inject 注解來禁用 Sidecar 注入:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: ignored
spec:
  template:
    metadata:
      annotations:
        sidecar.istio.io/inject: "false"
    spec:
      containers:
      - name: ignored
        image: tutum/curl
        command: ["/bin/sleep","infinity"]

  

 

參考:
https://istio.io/zh/docs/setup/kubernetes/sidecar-injection/
https://istio.io/docs/setup/kubernetes/sidecar-injection/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM