自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

深入解析 Istioctl:如何正確更新 Istio 配置?

開發(fā) 前端
在 istioctl install -f xx.yaml 執(zhí)行之后會直接解析 xx.yaml 里的 IstioOperator 生成所有的 manifest 資源,在這個過程中也會生成一個 ConfigMap,所有的配置都是存放在其中的。

安裝 Istio

最近這段時間一直在做服務(wù)網(wǎng)格(Istio)相關(guān)的工作,背景是我們準(zhǔn)備自建 Istio,首先第一件事情就是要安裝。

我這里直接使用官網(wǎng)推薦的 istioctl 進(jìn)行安裝:

$ cat <<EOF > ./my-config.yaml
apiVersion: install.istio.io/v1alpha1  
kind: IstioOperator  
metadata:  
  namespace: istio-1-18-5  
spec:  
  profile: minimal  
  revision: istio-1-18-5  
  meshConfig:  
    accessLogFile: /dev/stdout
EOF
$ istioctl install -f my-config.yaml -n istio-1-18-5

這里我使用的 profile 是 minimal,它只會安裝核心的控制面,具體差異見下圖:

圖片圖片

輸出以下內(nèi)容時代表安裝成功:

This will install the Istio 1.18.5 minimal profile with ["Istio core" "Istiod"] components into the cluster. Proceed? (y/N) y
? Istio core installed                                                                                                                                   
? Istiod installed                                                                         
? Installation complete

之后我們便可以在指定的 namespace 下查詢到控制面的 Pod:

k get pod -n istio-1-18-5
NAME                                   READY   STATUS    RESTARTS   AGE
istiod-istio-1-18-5-6cb9898585-64jtg   1/1     Running   0          22h

然后只需要將需要注入 sidecar 的 namespace 中開啟相關(guān)的配置即可,比如我這里將 test 這個 namespace 開啟 sidecar 注入:

apiVersion: v1
kind: Namespace
metadata:
  labels:
    istio.io/rev: istio-1-18-5
    kubernetes.io/metadata.name: test

最主要的就是加上 istio.io/rev: istio-1-18-5 的標(biāo)簽,標(biāo)簽的值就是我們在安裝 istio 時指定的值:revision: istio-1-18-5。

此時只要我們在這個 namespace 下部署一個 Pod 就會為這個 Pod 掛載一個 sidecar。

圖片圖片

更新配置的坑

圖片圖片

圖片圖片

默認(rèn)情況下 Istio 會將應(yīng)用 Pod 的暴露出來的 metrics 和 sidecar 的指標(biāo)合并在一起,然后暴露為 :15020/stats/prometheus 這個 endpoint。

而我們自己在 Pod 上定義的注解則是被覆蓋掉了:

圖片圖片

但我們是將應(yīng)用和 sidecar 的指標(biāo)分開采集的,所以我們不需要這個自動合并。

圖片圖片

會單獨(dú)配置 15090 端口的采集任務(wù)

所以我需要將這個功能關(guān)閉,安裝文檔的說明只需要在控制面中將 enablePrometheusMerge 修改為 false 即可。

安裝好 Istio 控制面之后會創(chuàng)建一個 IstioOperator 的 CRD 資源:

k get IstioOperator -A
NAMESPACE      NAME                           REVISION       STATUS   AGE
istio-1-18-5   installed-state-istio-1-18-5   istio-1-18-5            27h

所有控制面的配置都可以在這里面修改,所以我想當(dāng)然的在這里加入了 enablePrometheusMerge: false 的配置。

圖片圖片

加上之后我重啟了 Pod 發(fā)現(xiàn)依然還是 Istio 的注解:

圖片圖片

也就是說這個配置并沒有生效,即便是我把控制面也重啟了也沒有效果。

按照原理來說,這些配置應(yīng)該是控制面下發(fā)給數(shù)據(jù)面的,大膽猜測下也就是控制面沒有拿到最新的配置。

但是我卸載控制面,再安裝的時候就指定這個配置確是生效的,也就是說配置沒問題,只是我在安裝完成后再修改就沒法同步。

之后我在 stackoverflow 上找到了類似的問題:

圖片圖片

簡單來說安裝好 istio 之后我們也可以繼續(xù)使用 istioctl install -f xx.yaml 進(jìn)行更新。

原理

后來我仔細(xì)看了下 istioctl 這個命令的 help 文檔,發(fā)現(xiàn)其實(shí)已經(jīng)在描述里寫清楚了:

圖片圖片

甚至還有個別名就叫 apply 這就和 kubectl apply 的命令非常類似了,也更容易理解了,任何的修改只需要 apply 執(zhí)行一次就可以了。

不過我也在好奇,既然創(chuàng)建的是一個 IstioOperator 的 CRD,理論上是需要一個 Operator 來讀取這里的數(shù)據(jù)然后再創(chuàng)建一個控制面,同步配置之類的操作。

但當(dāng)我安裝好 Istio 之后并沒看到有一個 Operator 的 Pod 在運(yùn)行,所以就比較好奇 install 這個命令是如何實(shí)現(xiàn)配置同步的。

經(jīng)過對 istioctl 的 debug 找到了具體的原因:

圖片圖片

圖片圖片

在 istioctl install -f xx.yaml 執(zhí)行之后會直接解析 xx.yaml 里的 IstioOperator 生成所有的 manifest 資源,在這個過程中也會生成一個 ConfigMap,所有的配置都是存放在其中的。

所以其實(shí)我手動修改這個 ConfigMap 也可以動態(tài)更新控制面的配置,之前我只是修改了 CRD,我以為還有一個 Operator 來監(jiān)聽這里的變化然后同步數(shù)據(jù);實(shí)際上并不存在這個邏輯,而是直接應(yīng)用的 manifest。

參考鏈接:

  • https://istio.io/v1.18/docs/setup/install/istioctl
  • https://istio.io/latest/docs/ops/integrations/prometheus/#option-1-metrics-merging
  • https://stackoverflow.com/questions/70076326/how-to-update-istio-configuration-after-installation

責(zé)任編輯:武曉燕 來源: crossoverJie
相關(guān)推薦

2024-08-08 11:13:05

2025-03-27 05:25:00

2010-09-25 15:30:10

虛擬化

2024-12-06 10:43:27

2009-12-03 13:10:06

2009-12-02 13:07:27

PHP XMLRead

2010-05-21 18:33:02

2016-05-18 17:15:17

互動出版網(wǎng)

2009-12-14 15:37:35

Ruby on Rai

2010-01-07 16:50:54

Linux配置PHP環(huán)

2020-08-12 11:05:32

Vue 源碼應(yīng)用

2010-09-27 09:33:29

2010-10-09 11:20:13

2016-10-31 19:41:29

Java垃圾回收

2010-02-23 10:51:32

WCF Address

2010-03-22 15:28:19

Cisco交換機(jī)配置

2011-08-08 11:24:05

網(wǎng)絡(luò)配置Windows XP

2022-08-02 09:56:47

入口文件代碼

2013-11-26 16:32:47

Android關(guān)機(jī)移動編程

2010-09-17 15:44:21

網(wǎng)絡(luò)協(xié)議
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號