本文介紹診斷工具asmctl常用命令。
相容性說明
ASM不保證相容社區Istio社區診斷工具Istioctl,但是ASM提供診斷工具asmctl,該工具當前支援Istioctl部分命令。
診斷工具asmctl支援在以下版本的ACK叢集和ASM中使用:
v1.8.6.49-gda24841c-aliyun及以上版本的ASM標準版。
v1.20.4-aluyun-1及以上版本的ACK Pro託管版叢集。
目前,不保證在v1.8.6.49-gda24841c-aliyun以下ASM標準版中使用asmctl時,所有命令的可用性。
使用限制
asmctl支援的命令與社區提供的Istioctl工具的1.9版本相相容。由於Service MeshASM的託管特性,asmctl當前僅支援部分Istioctl命令,當前不支援的命令及其原因如下:
命令 | 當前不支援原因 |
dashboard系列命令中,除dashboard envoy以外的命令 | Service Mesh控制面由ASM託管,不支援通過命令列工具對控制面核心組件及Service Mesh自建可觀測性。 |
create-remote-secret | Service Mesh控制面由ASM託管,不支援自行為控制面建立Secret訪問遠程Kubernetes叢集。 |
istiod | Service Mesh控制面由ASM託管,不支援通過命令列工具管理控制面核心組件。 |
metrics | Service Mesh控制面由ASM託管,不支援通過命令列工具對控制面核心組件及Service Mesh自建可觀測性。 |
precheck | Service Mesh控制面由ASM託管,asmctl無需提供Istio相容性檢查相關功能。 |
proxy-status | Service Mesh控制面由ASM託管,當前不支援通過命令列工具自行查詢控制面狀態,您可以在Service Mesh控制台概覽頁面查看網格狀態。 |
uninstall、install | Service Mesh控制面由ASM託管,不支援自行安裝、卸載控制面。 |
version | 當前不支援查看版本資訊,可以通過Service Mesh控制台查看網格基礎資訊。 |
wait | Service Mesh控制面由ASM託管,當前開發進度下不支援通過命令列工具自行查詢控制面狀態。 |
manifest、operator、profile、upgrade、verify-install | Service Mesh控制面由ASM託管,asmctl不提供通過命令在使用者側叢集中再次安裝istio的能力。 |
kube-inject、kube-uninject、workload、add-to-mesh系列命令、remove-from-mesh命令 | asmctl還處於開發早期階段,目前暫時不開放會對叢集進行實質性更改的命令。 |
asmctl命令概覽
命令 | 描述 | 連結 |
asmctl analyze | 分析叢集的控制面配置並輸出分析結果。 | |
asmctl bug-report | 選擇性地收集ASM執行個體與使用者側叢集中的資訊與日誌,並壓縮到一個壓縮包,協助您對常見問題進行診斷。 | |
asmctl dashboard | 訪問與社區Istio相容的Web UI。 | |
asmctl dashboard envoy | 為指定容器組的Sidecar開啟Envoy管理面板。 | |
asmctl experimental | 這些命令還在開發中,屬於實驗性命令。 | |
asmctl experimental authz | 提供與Service Mesh授權策略有關的功能。 | |
asmctl experimental authz check | 檢查指定容器組的Sidecar配置,並輸出應用在該容器組Sidecar上的所有授權策略。 | |
asmctl experimental config | 提供與Service Mesh預設設定有關的功能。 | |
asmctl experimental config list | 列出Service Mesh中可配置的預設設定資訊。 | |
asmctl experimental describe | 輸出有關指定Kubernetes資源以及與其相關的Service Mesh配置的描述性資訊。 | |
asmctl experimental describe pod | 根據指定的容器組,分析與它相關的Kubernetes服務、目標規則和虛擬服務等,並最終輸出與該容器組相關的描述性資訊。 | |
asmctl experimental describe service | 根據指定的Kubernetes服務,結合分析與之相關的容器組、目標規則和虛擬服務等,並最終輸出與該Kubernetes服務相關的描述性資訊。 | |
asmctl experimental injector | 負責與Sidecar注入情況以及Sidecar注入器資訊有關的功能。 | |
asmctl experimental injector list | 列出每個命名空間中容器組Sidecar的注入情況,並輸出ASM使用的Sidecar注入器的概要資訊。 | |
asmctl proxy-config | 負責擷取容器組中Sidecar的配置資訊。 | |
asmctl proxy-config bootstrap | 負責擷取指定容器組中Sidecar Envoy的bootstrap配置資訊。 | |
asmctl proxy-config cluster | 負責擷取指定容器組中Sidecar Envoy的cluster配置資訊。 | |
asmctl proxy-config endpoint | 負責擷取指定容器組中Sidecar Envoy的Endpoint配置資訊。 | |
asmctl proxy-config listener | 負責擷取指定容器組中Sidecar Envoy的Listener配置資訊。 | |
asmctl proxy-config log | 負責擷取Sidecar Envoy的日誌等級資訊,並且支援選擇性地更新日誌。 | |
asmctl proxy-config route | 負責擷取指定容器組中Sidecar Envoy的Route配置資訊。 | |
asmctl proxy-config secret | 負責擷取指定容器組中Sidecar Envoy的Secret配置資訊。 | |
asmctl validate | 負責驗證Service Mesh規則與策略檔案的正確性。 |
asmctl analyze
analyze命令分析叢集的控制面配置並輸出分析結果。
asmctl analyze <file>... [flags]
選項 | 選項縮寫 | 描述 |
--all-namespaces | -A | 分析所有的命名空間。 |
--asmconfig <string> | -m | 設定ASM執行個體的kubeconfig檔案路徑,預設為$HOME/.kube/asmconfig。 |
--color | 無 | 是否以帶顏色的格式輸出分析結果,預設為 |
--context <string> | 無 | 設定預設使用的kubeconfig context名稱,預設為空白。 |
--failure-threshold <Level> | 無 | 設定分析時在何種等級下會返回非0的錯誤碼。可用的值包括: |
--istioNamespace <string> | -i | 設定Istio所在命名空間名稱,預設為 |
--kubeconfig <string> | -c | 設定使用者側叢集的kubeconfig檔案路徑,預設為空白。 |
--list-analyzers | -L | 列出analyze命令當前執行的所有分析手段。 |
--meshConfigFile <string> | 無 | 在分析時使用給定的網格設定檔來覆蓋當前的網格配置,預設為空白。 |
--namespace <string> | -n | 指定生效的命名空間,預設為空白。 |
--output <string> | -o | 設定輸出的格式,可用的值包括: |
--output-threshold <Level> | 無 | 設定分析時在何種等級下會輸出訊息。可用的值包括: |
--recursive | -R | 在指定了分析目錄時,遞迴地處理目錄中的所有檔案,而不是僅分析目錄中的第一層檔案。 |
--suppress <stringArray> | -S | 設定停止報告某個特定資源的某個訊息碼。該項以 |
--timeout <duration> | 無 | 設定命令返回逾時錯誤的時間,執行分析超過逾時時間後會返回timeout錯誤而不再返回分析結果,預設為 |
--use-kube | -k | 是否基於當前的ASM執行個體與使用者側叢集進行分析,如果只是想要分析檔案本身,則需將此項設定為 |
--verbose | -v | 設定輸出詳細的分析過程。 |
以下為asmctl analyze命令樣本:
# 分析當前的使用者側叢集和ASM執行個體的控制面配置資訊。
asmctl analyze
# 分析當前的使用者側叢集和ASM執行個體,模擬分析在應用a.yaml、b.yaml與my-app-config目錄中的設定檔後產生的效果。
asmctl analyze a.yaml b.yaml my-app-config/
# 分析當前的使用者側叢集和ASM執行個體,模擬分析在應用了a.yaml、b.yaml與my-app-config目錄中的設定檔後產生的效果,同時指定了需要分析的使用者側叢集與和ASM執行個體的kubeconfig檔案。
asmctl analyze a.yaml b.yaml my-app-config/ -c ~/.kube/ackconfig1 -m ~/.kube/asmconfig1
# 分析當前的使用者側叢集和ASM執行個體,模擬分析在應用了my-app-config目錄中的設定檔後產生的效果,其中my-app-config目錄中的所有設定檔都會被遞迴地分析。
asmctl analyze --recursive my-istio-config/
# 僅分析當前a.yaml、b.yaml與my-app-config目錄中的YAML檔案應用後的效果,而不考慮當前使用的使用者側叢集和ASM執行個體的任何資源配置
asmctl analyze --use-kube=false a.yaml b.yaml my-app-config/
# 分析當前的使用者側叢集和ASM執行個體,但對於testing命名空間下的mypod這一pod、忽略針對其產生的"PodMissingProxy"的分析結果輸出。。
asmctl analyze -S "IST0103=Pod mypod.testing"
# 分析當前的使用者側叢集和ASM執行個體,但對於testing命名空間下的所有Pod、忽略針對其產生的"PodMissingProxy"的分析結果輸出。
# 同時對於default命名空間下的foobar這一deployment資源、忽略針對其產生的"MissplacedAnnotation"的分析結果輸出。
asmctl analyze -S "IST0103=Pod *.testing" -S "IST0107=Deployment foobar.default"
# 列出當前asmctl analyze指令執行的所有分析手段。
asmctl analyze -L
asmctl bug-report
bug-report
命令選擇性地收集ASM執行個體與使用者側叢集中的資訊與日誌,並壓縮到一個壓縮包,從而可以對常見問題進行診斷。收集的資訊包括:
Sidecar的配置資訊與狀態資訊。
Sidecar產生的日誌資訊。
使用者側叢集資源資訊。
調用
analyze
命令得出的分析結果。
asmctl bug-report [flags]
選項 | 選項縮寫 | 描述 |
--asmconfig <string> | -m | ASM執行個體的kubeconfig檔案路徑,預設為 |
--context <string> | 無 | 設定預設使用的kubeconfig context名稱,預設為空白。 |
--dir <string> | 無 | 為bug-report命令中產生的臨時輸出檔案設定一個目錄,預設為空白。 |
--dry-run | 無 | 控制是否實際進行日誌的收集和儲存,設定 |
--duration <duration> | 無 | 從目前時間計算,往前收集多長一段時間的日誌資訊。預設為無窮大( |
--end-time <string> | 無 | 要包含在命令輸出中的日誌的時間跨度的結束時間。預設為現在時間。 |
--exclude <stringSlice> | 無 | 匹配應該從所有Sidecar日誌中排除的容器組的Sidecar日誌。該項在 |
--filename <string> | -f | 指定一個包含bug-report配置資訊的YAML檔案。該檔案中指定的選項內容將覆蓋在命令列選項中指定的內容,預設為空白。 |
--full-secrets | 無 | 控制是否收集Secret資訊,設定 |
--ignore-errs <stringSlice> | 無 | 一系列以逗號分隔的glob匹配模式,這些模式用來匹配忽略的日誌錯誤(error)資訊字串。在計算日誌重要性時,匹配該項給出模式的錯誤將忽略不計。 |
--include <stringSlice> | 無 | 匹配應該在命令輸出中包含的容器組的Sidecar日誌,更多資訊,請參見下文的自訂過濾bug-report命令收集的Sidecar日誌。預設為空白。 |
--istio-namespace <string> | -i | 控制面組件安裝的命名空間,預設為 |
--kubeconfig <string> | -c | 設定使用者側叢集的kubeconfig檔案路徑,預設為空白。 |
--namespace <string> | -n | 指定生效的命名空間,預設為空白。 |
--start-time <string> | 無 | 包含在命令輸出中的日誌的時間跨度的開始時間。預設為空白,即從最早的日誌開始收集。 |
--timeout <duration> | 無 | 能夠容忍擷取日誌所花的最長時間。當收集日誌時間逾時時,僅目前已經收集的日誌會儲存至命令輸出,預設為 |
自訂過濾bug-report命令收集的Sidecar日誌
Sidecar的日誌收集可以通過以下的選項使用方式進行過濾:
--include|--exclude
ns1,ns2.../dep1,dep2.../pod1,pod2.../cntr1,cntr.../lbl1=val1,lbl2=val2.../ann1=val1,ann2=val2
在include/exclude
選項後給出的字串即為日誌的過濾條件,其中ns
指命名空間Namespace,dep
指部署Deployment,pod
指容器組Pod,cntr
指容器Container,lbl
指標籤Label,ann
指註解Annotation。
上述過濾條件表示必須匹配 (ns1 OR ns2) AND (dep1 OR dep2) AND (cntr1 OR cntr2)……
,若且唯若一個容器組的Sidecar匹配至少一個include
選項給出的過濾條件,並且不匹配所有exclude
選項中給出的過濾條件時,其日誌會被包含在最終命令輸出的壓縮包中。
所有的過濾條件都是可選的、可被忽略,例如可以使用ns1//pod1
過濾條件,僅僅針對命名空間Namespace與容器組Pod進行過濾。
除標籤label及註解annotation之外的所有類型的過濾名稱都支援使用glob匹配模式,例如可以使用n*//p*/l=v*
的過濾條件,該條件能夠匹配所有在以n為開頭的命名空間中,含有鍵名稱為l的標籤、而該標籤對應的值以v開頭,且自身名稱以p開頭的容器組。
asmctl dashboard
訪問與社區istio相容的Web UI。目前asmctl僅對Envoy提供了dashboard
命令。
asmctl dashboard [flags]
您也可以使用:
asmctl dash [flags]
asmctl d [flags]
選項 | 選項縮寫 | 描述 |
--address <string> | 無 | Web UI的監聽地址,只接受IP地址或localhost。如果該項為localhost,asmctl將會嘗試綁定127.0.0.1(IPV4)或是::1(IPV6)兩個地址,如果這兩個地址都無法綁定則命令執行失敗。預設為 |
--browser | 無 | 設定是否開啟瀏覽器。當 |
--context <string> | 無 | 設定預設使用的kubeconfig context名稱,預設為空白。 |
--kubeconfig <string> | -c | 設定使用者側叢集的kubeconfig檔案路徑,預設為空白。 |
--namespace <string> | -n | 指定生效的命名空間,預設為空白。 |
--port <int> | -p | Web UI監聽的本地連接埠,預設為空白。 |
asmctl dashboard envoy
為指定容器組的Sidecar開啟Envoy管理面板。
asmctl dashboard envoy [<type>/]<name>[.<namespace>] [flags]
選項 | 選項縮寫 | 描述 |
--address <string> | 無 | Web UI的監聽地址,只接受IP地址或localhost。如果該項為localhost,asmctl將會嘗試綁定127.0.0.1(IPV4)或是::1(IPV6)兩個地址,如果這兩個地址都無法綁定則命令執行失敗。預設為 |
--browser | 無 | 設定是否開啟瀏覽器。當 |
--context <string> | 無 | 設定預設使用的kubeconfig context名稱,預設為空白。 |
--kubeconfig <string> | -c | 設定使用者側叢集的kubeconfig檔案路徑,預設為空白。 |
--namespace <string> | -n | 指定生效的命名空間,預設為空白。 |
--port <int> | -p | Web UI監聽的本地連接埠(預設為 |
--selector <string> | -l | 容器組標籤選取器(預設為空白,使用標籤選取器時不能提供容器組名稱。) |
以下為asmctl dashboard envoy命令樣本:
# 通過容器組名稱和命名空間名稱指定容器組,並開啟Sidecar的Envoy管理面板。
asmctl dashboard envoy productpage-123-456.default
# 通過部署名稱及容器組名稱指定容器組,並開啟Sidecar的Envoy管理面板。
asmctl dashboard envoy deployment/productpage-v1
# 使用Dashboard指令的縮寫形式。
asmctl dash envoy productpage-123-456.default
asmctl d envoy productpage-123-456.default
asmctl experimental
asmctl experimental表示這些命令還在開發中,屬於實驗性命令。asmctl當前相容社區Istioctl 1.9版本,與當前ASM和社區Istio的相容性情況保持一致。因此,asmctl也保留與Istioctl 1.9版本形式一致的實驗性命令。
選項 | 選項縮寫 | 描述 |
--asmconfig <string> | -m | 設定ASM執行個體的kubeconfig檔案路徑,預設為 |
--context <string> | 無 | 設定預設使用的kubeconfig context名稱,預設為空白。 |
--istioNamespace <string> | -i | 設定Istio所在命名空間名稱,預設為 |
--kubeconfig <string> | -c | 設定使用者側叢集的kubeconfig檔案路徑,預設為空白。 |
--namespace <string> | -n | 指定生效的命名空間,預設為空白。 |
asmctl experimental authz
authz系列命令提供與Service Mesh授權策略有關的功能。
選項 | 選項縮寫 | 描述 |
--context <string> | 無 | 設定預設使用的kubeconfig context名稱,預設為空白。 |
--istioNamespace <string> | -i | 設定Istio所在命名空間名稱,預設為 |
--kubeconfig <string> | -c | 設定使用者側叢集的kubeconfig檔案路徑,預設為空白。 |
--namespace <string> | -n | 指定生效的命名空間,預設為空白。 |
asmctl experimental authz check
authz check命令檢查指定容器組的Sidecar配置,並輸出應用在該容器組Sidecar上的所有授權策略(AuthorizationPolicy)。該命令可用於方便地檢查最終在多個授權策略合并後應用在某一具體Sidecar上的具體授權策略。
該命令同時支援使用-f選項來直接讀取一個Sidecar配置的拷貝檔案並輸出該檔案中配置規定的授權策略。
asmctl experimental authz check [<type>/]<name>[.<namespace>] [flags]
選項 | 選項縮寫 | 描述 |
--context <string> | 無 | 設定預設使用的kubeconfig context名稱,預設為空白。 |
--file <string> | -f | 指定被檢查的Envoy配置轉儲檔案,檔案為JSON格式,預設為空白。 |
--istioNamespace <string> | -i | 設定Istio所在命名空間名稱,預設為 |
--kubeconfig <string> | -c | 設定使用者側叢集的kubeconfig檔案路徑,預設為空白。 |
--namespace <string> | -n | 指定生效的命名空間,預設為空白。 |
以下為asmctl experimental authz check命令樣本:
# 檢查容器組httpbin-88ddbcfdd-nt5jb上應用的授權策略。
asmctl x authz check httpbin-88ddbcfdd-nt5jb
# 檢查在部署productpage-v1上應用的授權策略。
asmctl proxy-status deployment/productpage-v1
# 從Envoy配置轉儲檔案httpbin_config_dump.json中檢查應用到的授權策略。
asmctl x authz check -f httpbin_config_dump.json
asmctl experimental config
config系列命令提供與Service Mesh預設設定有關的功能。
選項 | 選項縮寫 | 描述 |
--context <string> | 無 | 設定預設使用的kubeconfig context名稱,預設為空白。 |
--istioNamespace <string> | -i | 設定Istio所在命名空間名稱,預設為 |
--kubeconfig <string> | -c | 設定使用者側叢集的kubeconfig檔案路徑,預設為空白。 |
asmctl experimental config list
config list命令列出Service Mesh中可配置的預設設定資訊。
asmctl experimental config list [flags]
選項 | 選項縮寫 | 描述 |
--context <string> | 無 | 設定預設使用的kubeconfig context名稱,預設為空白。 |
--istioNamespace <string> | -i | 設定Istio所在命名空間名稱,預設為 |
--kubeconfig <string> | -c | 設定使用者側叢集的kubeconfig檔案路徑,預設為空白。 |
--namespace <string> | -n | 指定生效的命名空間,預設為空白。 |
asmctl experimental describe
describe系列命令輸出有關指定Kubernetes資源以及與其相關的Service Mesh配置的描述性資訊。
asmctl experimental describe [command] [flags]
您也可以使用:
asmctl experimental des [command] [flags]
選項 | 選項縮寫 | 描述 |
--asmconfig <string> | -m | ASM執行個體的kubeconfig檔案路徑,預設為 |
--context <string> | 無 | 設定預設使用的kubeconfig context名稱,預設為空白。 |
--istioNamespace <string> | -i | 設定Istio所在命名空間名稱,預設為 |
--kubeconfig <string> | -c | 設定使用者側叢集的kubeconfig檔案路徑,預設為空白。 |
--namespace <string> | -n | 指定生效的命名空間,預設為空白。 |
asmctl experimental describe pod
describe pod命令根據指定的容器組,分析與它相關的Kubernetes服務、目標規則和虛擬服務等,並最終輸出與該容器組相關的描述性資訊。
asmctl experimental describe pod <pod> [flags]
選項 | 選項縮寫 | 描述 |
--context <string> | 無 | 設定預設使用的kubeconfig context名稱,預設為空白。 |
--ignoreUnmeshed | 無 | 對於分析時發現的未加入網格的容器組,設定是否輸出警告資訊,預設為 |
--istioNamespace <string> | -i | 設定Istio所在命名空間名稱,預設為 |
--kubeconfig <string> | -c | 設定使用者側叢集的kubeconfig檔案路徑,預設為空白。 |
--asmconfig <string> | -m | ASM執行個體的kubeconfig檔案路徑,預設為 |
--namespace <string> | -n | 指定生效的命名空間,預設為空白。 |
以下為asmctl experimental describe pod命令樣本:
# 輸出與容器組productpage-v1-c7765c886-7zzd4相關的描述性資訊。
asmctl experimental describe pod productpage-v1-c7765c886-7zzd4
asmctl experimental describe service
describe service命令根據指定的Kubernetes服務,結合分析與它相關的容器組、目標規則和虛擬服務等,並最終輸出與該Kubernetes服務相關的描述性資訊。
asmctl experimental describe service <svc> [flags]
您也可以使用:
asmctl experimental describe svc <svc> [flags]
選項 | 選項縮寫 | 描述 |
--context <string> | 無 | 設定預設使用的kubeconfig context名稱,預設為空白。 |
--ignoreUnmeshed | 無 | 對於分析時發現的未加入網格的容器組,設定是否輸出警告資訊,預設為 |
--istioNamespace <string> | -i | 設定Istio所在命名空間名稱,預設為 |
--kubeconfig <string> | -c | 設定使用者側叢集的kubeconfig檔案路徑,預設為空白。 |
--asmconfig <string> | -m | ASM執行個體的kubeconfig檔案路徑,預設為 |
--namespace <string> | -n | 指定生效的命名空間,預設為空白。 |
以下為asmctl experimental describe service命令樣本:
# 輸出Kubernetes服務productpage相關的描述性資訊。
asmctl experimental describe service productpage
asmctl experimental injector
injector系列命令負責與Sidecar注入情況以及Sidecar注入器資訊有關的功能。
asmctl experimental injector [command] [flags]
選項 | 選項縮寫 | 描述 |
--context <string> | 無 | 設定預設使用的kubeconfig context名稱,預設為空白。 |
--istioNamespace <string> | -i | 設定Istio所在命名空間名稱,預設為 |
--kubeconfig <string> | -c | 設定使用者側叢集的kubeconfig檔案路徑,預設為空白。 |
--namespace <string> | -n | 指定生效的命名空間,預設為空白。 |
asmctl experimental injector list
injector list命令列出每個命名空間中容器組Sidecar的注入情況,並輸出ASM使用的Sidecar注入器的概要資訊。
asmctl experimental injector list [flags]
選項 | 選項縮寫 | 描述 |
--context <string> | 無 | 設定預設使用的kubeconfig context名稱,預設為空白。 |
--istioNamespace <string> | -i | 設定Istio所在命名空間名稱,預設為 |
--kubeconfig <string> | -c | 設定使用者側叢集的kubeconfig檔案路徑,預設為空白。 |
--namespace <string> | -n | 指定生效的命名空間,預設為空白。 |
以下為asmctl experimental injector list命令樣本:
# 列出每個命名空間中容器組Sidecar的注入情況,並輸出ASM使用的Sidecar注入器的概要資訊。
asmctl experimental injector list
asmctl proxy-config
proxy-config系列命令負責擷取容器組中Sidecar的配置資訊。
選項 | 選項縮寫 | 描述 |
--context <string> | 無 | 設定預設使用的kubeconfig context名稱,預設為空白。 |
--istioNamespace <string> | -i | 設定Istio所在命名空間名稱,預設為 |
--kubeconfig <string> | -c | 設定使用者側叢集的kubeconfig檔案路徑,預設為空白。 |
--namespace <string> | -n | 指定生效的命名空間,預設為空白。 |
--output <string> | -o | 設定命令輸出格式,可選 |
asmctl proxy-config bootstrap
proxy-config bootstrap命令負責擷取指定容器組中Sidecar Envoy的bootstrap配置資訊。
asmctl proxy-config bootstrap [<type>/]<name>[.<namespace>] [flags]
您也可以使用:
asmctl proxy-config b [<type>/]<name>[.<namespace>] [flags]
選項 | 選項縮寫 | 描述 |
--context <string> | 無 | 設定預設使用的kubeconfig context名稱,預設為空白。 |
--file <string> | -f | Envoy配置轉儲檔案,JSON格式,預設為空白。 |
--istioNamespace <string> | -i | 設定Istio所在命名空間名稱,預設為 |
--kubeconfig <string> | -c | 設定使用者側叢集的kubeconfig檔案路徑,預設為空白。 |
--namespace <string> | -n | 指定生效的命名空間,預設為空白。 |
--output <string> | -o | 設定命令輸出格式,可選 |
以下為asmctl proxy-config bootstrap命令樣本:
# 從指定的容器組中擷取Sidecar Envoy的bootstrap配置資訊。
asmctl proxy-config bootstrap <pod-name[.namespace]>
# 不使用Kubernetes API,直接從檔案中分析得到Sidecar Envoy bootstrap配置資訊。
ssh <user@hostname> 'curl localhost:15000/config_dump' > envoy-config.json
asmctl proxy-config bootstrap --file envoy-config.json
asmctl proxy-config cluster
proxy-config cluster命令負責擷取指定容器組中Sidecar Envoy的叢集配置資訊。
asmctl proxy-config cluster [<type>/]<name>[.<namespace>] [flags]
您也可以使用:
asmctl proxy-config clusters [<type>/]<name>[.<namespace>] [flags]
asmctl proxy-config c [<type>/]<name>[.<namespace>] [flags]
選項 | 選項縮寫 | 描述 |
--context <string> | 無 | 設定預設使用的kubeconfig context名稱,預設為空白。 |
--direction <string> | 無 | 通過 |
--file <string> | -f | Envoy配置轉儲檔案,JSON格式,預設為空白。 |
--fqdn <string> | 無 | 通過 |
--istioNamespace <string> | -i | 設定Istio所在命名空間名稱,預設為 |
--kubeconfig <string> | -c | 設定使用者側叢集的kubeconfig檔案路徑,預設為空白。 |
--namespace <string> | -n | 指定生效的命名空間,預設為空白。 |
--output <string> | -o | 設定命令輸出格式,可選 |
--port <int> | 無 | 通過 |
--subset <string> | 無 | 通過 |
以下為asmctl proxy-config cluster命令樣本:
# 從指定的容器組中擷取Sidecar Envoy的cluster配置資訊。
asmctl proxy-config clusters <pod-name[.namespace]>
# 從指定的容器組中擷取Sidecar Envoy的cluster配置資訊,篩選連接埠為9080的部分輸出。
asmctl proxy-config clusters <pod-name[.namespace]> --port 9080
# 擷取FQDN為details.default.svc.cluster.local的入站叢集的完整轉儲。
asmctl proxy-config clusters <pod-name[.namespace]> --fqdn details.default.svc.cluster.local --direction inbound -o json
# 不使用Kubernetes API,僅使用檔案擷取cluster配置資訊。
ssh <user@hostname> 'curl localhost:15000/config_dump' > envoy-config.json
asmctl proxy-config clusters --file envoy-config.json
asmctl proxy-config endpoint
proxy-config endpoint命令負責擷取指定容器組中Sidecar Envoy的Endpoint配置資訊。
asmctl proxy-config endpoint [<type>/]<name>[.<namespace>] [flags]
您也可以使用:
asmctl proxy-config endpoints [<type>/]<name>[.<namespace>] [flags]
asmctl proxy-config ep [<type>/]<name>[.<namespace>] [flags]
選項 | 選項縮寫 | 描述 |
--address <string> | 無 | 通過 |
--cluster <string> | 無 | 通過 |
--context <string> | 無 | 設定預設使用的kubeconfig context名稱,預設為空白。 |
--file <string> | -f | Envoy配置轉儲檔案,JSON格式,預設為空白。 |
--istioNamespace <string> | -i | 設定Istio所在命名空間名稱,預設為 |
--kubeconfig <string> | -c | 設定使用者側叢集的kubeconfig檔案路徑,預設為空白。 |
--namespace <string> | -n | 指定生效的命名空間,預設為空白。 |
--output <string> | -o | 命令輸出格式,可選 |
--port <int> | 無 | 通過 |
--status <string> | 無 | 通過 |
以下為asmctl proxy-config endpoint命令樣本:
# 從指定的容器組中擷取Sidecar Envoy的Endpoint配置資訊。
asmctl proxy-config endpoint <pod-name[.namespace]>
# 從指定的容器組中擷取Sidecar Envoy的Endpoint配置資訊,篩選其中連接埠為9080的部分。
asmctl proxy-config endpoint <pod-name[.namespace]> --port 9080
# 從指定的容器組中擷取Sidecar Envoy的Endpoint配置資訊,篩選其中地址為172.17.0.2的部分。
asmctl proxy-config endpoint <pod-name[.namespace]> --address 172.17.0.2 -o json
# 從指定的容器組中擷取Sidecar Envoy的Endpoint配置資訊,篩選叢集名稱為outbound|9411||zipkin.istio-system.svc.cluster.local的部分。
asmctl proxy-config endpoint <pod-name[.namespace]> --cluster "outbound|9411||zipkin.istio-system.svc.cluster.local" -o json
# 從指定的容器組中擷取Sidecar Envoy的Endpoint配置資訊,篩選其中狀態為healthy的部分。
asmctl proxy-config endpoint <pod-name[.namespace]> --status healthy -ojson
# 不使用Kubernetes API,僅使用檔案擷取Endpoint配置資訊。
ssh <user@hostname> 'curl localhost:15000/clusters?format=json' > envoy-clusters.json
asmctl proxy-config endpoints --file envoy-clusters.json
asmctl proxy-config listener
proxy-config listener命令負責擷取指定容器組中Sidecar Envoy的Listener配置資訊。
asmctl proxy-config listener [<type>/]<name>[.<namespace>] [flags]
您也可以使用:
asmctl proxy-config listeners [<type>/]<name>[.<namespace>] [flags]
asmctl proxy-config l [<type>/]<name>[.<namespace>] [flags]
選項 | 選項縮寫 | 描述 |
--address <string> | 無 | 通過 |
--context <string> | 無 | 設定預設使用的kubeconfig context名稱,預設為空白。 |
--file <string> | -f | Envoy配置轉儲檔案,JSON格式,預設為空白。 |
--istioNamespace <string> | -i | 設定Istio所在命名空間名稱,預設為 |
--kubeconfig <string> | -c | 設定使用者側叢集的kubeconfig檔案路徑,預設為空白。 |
--namespace <string> | -n | 指定生效的命名空間,預設為空白。 |
--output <string> | -o | 命令輸出格式,可選 |
--port <int> | 無 | 通過 |
--type <string> | 無 | 通過 |
--verbose | 無 | 輸出更多資訊,預設為 |
以下為asmctl proxy-config listener命令樣本:
# 從指定的容器組中擷取Sidecar Envoy的Listener配置資訊。
asmctl proxy-config listeners <pod-name[.namespace]>
# 從指定的容器組中擷取Sidecar Envoy的Listener配置資訊,篩選其中連接埠為9080的部分。
asmctl proxy-config listeners <pod-name[.namespace]> --port 9080
# 使用萬用字元地址0.0.0.0 從指定的容器組中擷取Sidecar Envoy的Listenerr配置資訊。
asmctl proxy-config listeners <pod-name[.namespace]> --type HTTP --address 0.0.0.0 -o json
# 不使用Kubernetes API,僅使用檔案擷取Listener配置資訊。
ssh <user@hostname> 'curl localhost:15000/config_dump' > envoy-config.json
asmctl proxy-config listeners --file envoy-config.json
asmctl proxy-config log
proxy-config log命令負責擷取Sidecar Envoy的日誌等級資訊,並且也可以選擇性地更新日誌等級資訊。
asmctl proxy-config log [<type>/]<name>[.<namespace>] [flags]
您也可以使用:
asmctl proxy-config o [<type>/]<name>[.<namespace>] [flags]
選項 | 選項縮寫 | 描述 |
--context <string> | 無 | 設定預設使用的kubeconfig context名稱,預設為空白。 |
--istioNamespace <string> | -i | 設定Istio所在命名空間名稱,預設為 |
--kubeconfig <string> | -c | 設定使用者側叢集的kubeconfig檔案路徑,預設為空白。 |
--level <string> | 無 | 要輸出的以逗號分隔的每個logger的最低訊息層級,形式為 |
--namespace <string> | -n | 指定生效的命名空間,預設為空白。 |
--output <string> | -o | 設定命令輸出格式,可選 |
--reset | -r | 將日誌等級重設為預設值( |
--selector <string> | -l | 標籤選取器,預設為空白。 |
以下為asmctl proxy-config log命令樣本:
# 從指定的容器組中擷取Sidecar Envoy的日誌等級資訊。
asmctl proxy-config log <pod-name[.namespace]>
# 更新Sidecar Envoy中所有logger的日誌訊息等級。
asmctl proxy-config log <pod-name[.namespace]> --level none
# 為Sidecar Envoy中指定的logger的日誌訊息等級進行更新。
asmctl proxy-config log <pod-name[.namespace]> --level http:debug,redis:debug
# 將Sidecar Envoy中所有logger的日誌訊息等級重設為預設值warning。
asmctl proxy-config log <pod-name[.namespace]> -r
asmctl proxy-config route
proxy-config route命令負責擷取指定容器組中Sidecar Envoy的Route配置資訊。
asmctl proxy-config route [<type>/]<name>[.<namespace>] [flags]
您也可以使用:
asmctl proxy-config routes [<type>/]<name>[.<namespace>] [flags]
asmctl proxy-config r [<type>/]<name>[.<namespace>] [flags]
選項 | 選項縮寫 | 描述 |
--context <string> | 無 | 設定預設使用的kubeconfig context名稱,預設為空白。 |
--file <string> | -f | Envoy配置轉儲檔案,JSON格式,預設為空白。 |
--istioNamespace <string> | -i | 設定Istio所在命名空間名稱,預設為 |
--kubeconfig <string> | -c | 設定使用者側叢集的kubeconfig檔案路徑,預設為空白。 |
--name <string> | 無 | 通過 |
--namespace <string> | -n | 指定生效的命名空間,預設為空白。 |
--output <string> | -o | 設定命令輸出格式,可選 |
--verbose | 無 | 輸出更多資訊,預設為 |
以下為asmctl proxy-config route命令樣本:
# 從指定的容器組中擷取Sidecar Envoy的Route配置資訊。
asmctl proxy-config routes <pod-name[.namespace]>
# 擷取指定Sidecar Envoy的route 9080的配置資訊。
asmctl proxy-config route <pod-name[.namespace]> --port 9080
# 擷取指定Sidecar Envoy的route 9080的配置資訊並獲得完整轉儲。
asmctl proxy-config route <pod-name[.namespace]> --name 9080 -o json
# 不使用Kubernetes API,僅使用檔案擷取Route配置資訊。
ssh <user@hostname> 'curl localhost:15000/config_dump' > envoy-config.json
asmctl proxy-config listeners --file envoy-config.json
asmctl proxy-config secret
proxy-config secret命令負責擷取指定容器組中Sidecar Envoy的Secret配置資訊。
asmctl proxy-config secret [<type>/]<name>[.<namespace>] [flags]
也可以使用:
asmctl proxy-config secrets [<type>/]<name>[.<namespace>] [flags]
asmctl proxy-config s [<type>/]<name>[.<namespace>] [flags]
選項 | 選項縮寫 | 描述 |
--context <string> | 無 | 設定預設使用的kubeconfig context名稱,預設為空白。 |
--file <string> | -f | Envoy配置轉儲檔案,JSON格式,預設為空白。 |
--istioNamespace <string> | -i | 設定Istio所在命名空間名稱,預設為 |
--kubeconfig <string> | -c | 設定使用者側叢集的kubeconfig檔案路徑,預設為空白。 |
--namespace <string> | -n | 指定生效的命名空間,預設為空白。 |
--output <string> | -o | 設定命令輸出格式,可選 |
以下為asmctl proxy-config secret命令樣本:
# 從指定的容器組中擷取Sidecar Envoy的Secret配置資訊。
asmctl proxy-config secret <pod-name[.namespace]>
# 不使用Kubernetes API,僅使用檔案擷取Secret配置資訊。
ssh <user@hostname> 'curl localhost:15000/config_dump' > envoy-config.json
asmctl proxy-config listeners --file envoy-config.json
asmctl validate
validate命令負責驗證Service Mesh規則與策略檔案的正確性。
asmctl validate -f FILENAME [options] [flags]
您也可以使用:
asmctl v -f FILENAME [options] [flags]
選項 | 選項縮寫 | 描述 |
--context <string> | 無 | 設定預設使用的kubeconfig context名稱,預設為空白。 |
--file <string> | -f | 需要驗證的Service Mesh規格與策略檔案名稱。 |
--istioNamespace <string> | -i | 設定Istio所在命名空間名稱,預設為 |
--namespace <string> | -n | 指定生效的命名空間,預設為空白。 |
以下為asmctl validate命令樣本:
# 驗證bookinfo-gateway.yaml的正確性。
asmctl validate -f samples/bookinfo/networking/bookinfo-gateway.yaml
# 使用縮短的語法驗證bookinfo-gateway.yaml的正確性。
asmctl v -f samples/bookinfo/networking/bookinfo-gateway.yaml
# 驗證當前default命名空間下所有部署的正確性。
asmctl get deployments -o yaml | asmctl validate -f -
# 驗證當前default命名空間下所有服務的正確性。
asmctl get services -o yaml | asmctl validate -f -