阿里雲提供了鏈路追蹤服務,為分布式應用的開發人員提供了完整的調用鏈路還原、調用請求量統計、鏈路拓撲等,以快速分析和診斷分布式應用架構下的效能瓶頸,提高微服務時代下的開發診斷效率。您可以為叢集安裝ALB Ingress Controller組件並開啟Xtrace功能,查看鏈路追蹤資料。
前提條件
已為叢集安裝ALB Ingress Controller組件,且組件版本為2.11.1及以上。
建立叢集時,請在組件配置頁面的Ingress欄位右側,選擇ALB Ingress。具體操作,請參見建立Kubernetes託管版叢集、建立Kubernetes專有版叢集或建立ACK Serverless叢集。
對於已有叢集,關於如何安裝和升級ALB Ingress Controller組件,請參見管理組件。
若需要在ACK專有版叢集中通過ALB Ingress訪問服務,在部署服務前需要為ALB Ingress Controller授權。具體操作,請參見為ACK專有叢集授予ALB Ingress Controller存取權限。
已通過kubectl工具串連ACK叢集。具體操作,請參見擷取叢集KubeConfig並通過kubectl工具串連叢集。
已開通Managed Service for OpenTelemetry
為Albconfig開啟鏈路追蹤
步驟一:為叢集啟用Log Service組件Logtail
啟用Log Service功能後,叢集會自動建立Log ServiceProject。具體操作,請參見步驟一:啟用Log Service組件Logtail。
步驟二:擷取Log Service Project的ID,以備後續使用
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇叢集資訊。
在叢集資訊頁面,單擊叢集資源頁簽,複製儲存Log Service Project右側的ID。
步驟三:建立Albconfig
通過Albconfig建立ALB執行個體和監聽,並為ALB執行個體開啟Log Service,訪問日誌;同時,配置Albconfig中監聽XTrace的相關配置,開啟Xtrace並配置採樣演算法及採樣率。
拷貝以下內容到alb-test.yaml,用於建立Albconfig。
apiVersion: alibabacloud.com/v1 kind: AlbConfig metadata: name: alb-demo spec: config: name: alb-test addressType: Intranet zoneMappings: # 指定的交換器必須在ALB當前所支援的可用性區域內,且與叢集處於同一VPC。為保障業務高可用,請至少選擇2個或以上不同可用性區域的交換器。 - vSwitchId: vsw-2vc82nndnoo********** # 請根據實際情況,設定ALB交換器ID。 - vSwitchId: vsw-2vc30f5mlhs********** accessLogConfig: logProject: "k8s-log-xz92lvykqj1siwvif****" # 以實際擷取的Log ServiceProject為準。 logStore: alb_xz92lvykqj1siwvif**** # logStore命名需要以alb_開頭。若指定的logStore不存在,系統則會自動建立。 listeners: - port: 80 protocol: HTTP logConfig: accessLogRecordCustomizedHeadersEnabled: false accessLogTracingConfig: # Xtrace相關配置參數。 tracingEnabled: true # 監聽Xtrace開關。預設取值為false,如需開啟Xtrace,請將該參數取值為true。 tracingSample: 9999 # 監聽Xtrace採樣率。取值範圍:1~10000,僅在tracingEnabled開關為true時生效。 tracingType: Zipkin # 監聽Xtrace採樣演算法。取值為Zipkin,僅在tracingEnabled開關為true時生效。
說明建立交換器具體操作,請參見建立和管理交換器。
只有為執行個體開啟Log Service訪問日誌功能,才可以修改Xtrace配置。
執行以下命令,建立Albconfig。
kubectl apply -f alb-test.yaml
預期輸出:
albconfig.alibabacloud.com/alb-demo created
步驟四:建立IngressClass
建立並拷貝以下內容到alb.yaml檔案中,用於建立IngressClass。
apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: name: alb spec: controller: ingress.k8s.alibabacloud/alb parameters: apiGroup: alibabacloud.com kind: AlbConfig name: alb-demo
執行以下命令,建立IngressClass。
kubectl apply -f alb.yaml
預期輸出:
ingressclass.networking.k8s.io/alb created
步驟五:部署服務並配置Ingress的轉寄規則
建立並拷貝以下內容到cafe-service.yaml檔案中,用於部署名稱為coffee的Deployment,以及名稱為coffee的Service。
apiVersion: apps/v1 kind: Deployment metadata: name: coffee spec: replicas: 2 selector: matchLabels: app: coffee template: metadata: labels: app: coffee spec: containers: - name: coffee image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginxdemos:latest ports: - containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: coffee-svc spec: ports: - port: 80 targetPort: 80 protocol: TCP selector: app: coffee type: NodePort
執行以下命令,部署Deployment和Service。
kubectl apply -f cafe-service.yaml
預期輸出:
deployment.apps/coffee created service/coffee-svc created
建立並拷貝以下內容到cafe-ingress.yaml檔案中,用於配置Ingress規則,實現對外暴露服務。
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: cafe-ingress spec: ingressClassName: alb rules: - host: demo.domain.ingress.top http: paths: # 配置Context Path - path: /coffee pathType: ImplementationSpecific backend: service: name: coffee-svc port: number: 80
執行以下命令,配置coffee服務對外暴露的網域名稱和路徑。
kubectl apply -f cafe-ingress.yaml
預期輸出:
ingress.networking.k8s.io/cafe-ingress created
步驟六:佈建網域名解析
如果您在建立Ingress時配置了spec.rules.host
欄位為您的自有網域名稱,您需要將您的網域名稱添加CNAME記錄解析到ALB DNS名稱。後續通過你的自有網域名稱訪問服務。具體操作,請參見(可選)步驟五:佈建網域名解析。
步驟七:訪問服務
訪問服務產生有Xtrace ID的請求。
執行以下命令,擷取ALB執行個體地址(ADDRESS)。
kubectl get ing
預期輸出:
NAME CLASS HOSTS ADDRESS PORTS AGE cafe-ingress alb demo.domain.ingress.top alb-u53i28ewt580*****.cn-<Region>.alb.aliyuncs.com 80 16m
執行以下命令,訪問服務。
curl -H Host:demo.domain.ingress.top http://alb-u53i28ewt580*****.cn-<Region>.alb.aliyuncs.com/coffee
預期輸出一個標題為
Hello World
的HTML頁面。
驗證鏈結路追蹤效果
查看SLS訪問日誌中訪問對應ALB執行個體的請求,確認已標記XTrace資料。
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇叢集資訊。
在叢集資訊頁面,單擊叢集資源頁簽,然後單擊Log Service Project右側的連結,跳轉至Log Service控制台,然後在左側導覽列,單擊名稱以
alb_
開頭的LogStore(例如本樣本的alb_xz92lvykqj1siwvif****),然後在當前頁面搜尋xtrace
。
在應用列表頁面頂部選擇目標地區,然後單擊目標應用程式名稱。
在應用詳情頁面左側導覽列中單擊介面調用,然後單擊調用鏈路頁簽,查看鏈路資料。
調用鏈路頁簽列出了該應用耗時最長的至多100個調用鏈路。關於更多鏈路資料,請參見介面調用。
相關文檔
如需使用Nginx Ingress實現鏈路追蹤,請參見使用Nginx-Ingress-tracing實現鏈路追蹤。
如果在使用ALB過程中遇到相關報錯或問題,請優先查閱文檔解決。詳細資料,請參見ALB Ingress異常問題排查、ALB Ingress FAQ。