本文說明如何在 Kubernetes 上以分散式設定部署 XProf,並為工作站和匯總工具分別部署。

必要條件
- Kubernetes 叢集。在本教學課程中,我們將使用 minikube 進行最簡單的設定。
- XProf 的 Docker 映像檔。如需建構 XProf Docker 映像檔的操作說明,請參閱這篇文章。
Kubernetes 設定
下列 YAML 設定檔定義 XProf 工作站和匯總工具的 Kubernetes 部署作業和服務。
匯總工具部署作業會執行單一副本,接收使用者要求,並使用循環配置程序將剖析工作分配給工作站副本。--worker_service_address 旗標會將匯總工具設定為將要求傳送至工作站服務。
工作站部署作業會執行多個副本,每個副本都會透過 --grpc_port 旗標公開 gRPC 連接埠,以監聽來自匯總器的處理工作。
集結網站
首先,請建立 agg.yaml 檔案並貼上內容:
apiVersion: apps/v1
kind: Deployment
metadata:
name: xprof-aggregator-deployment
labels:
app: xprof-aggregator-app
spec:
replicas: 1
selector:
matchLabels:
app: xprof-aggregator-app
template:
metadata:
labels:
app: xprof-aggregator-app
spec:
containers:
- name: aggregator-container
image: xprof:2.21.3
imagePullPolicy: Never
env:
- name: GRPC_LB_POLICY
value: "round_robin"
- name: GRPC_DNS_RESOLVER
value: "native"
args:
- "--port=10000"
- "--worker_service_address=dns:///xprof-worker-service.default.svc.cluster.local:8891"
- "-gp=50051"
- "--hide_capture_profile_button"
ports:
- containerPort: 10000
---
apiVersion: v1
kind: Service
metadata:
name: xprof-agg-service
labels:
app: xprof-aggregator-app
spec:
selector:
app: xprof-aggregator-app
type: NodePort
ports:
- protocol: TCP
port: 80
targetPort: 10000
nodePort: 30001
工作站
我們為工作人員建立 worker.yaml 檔案:
apiVersion: apps/v1
kind: Deployment
metadata:
name: xprof-worker-deployment
labels:
app: xprof-worker-app
spec:
replicas: 4
selector:
matchLabels:
app: xprof-worker-app
template:
metadata:
labels:
app: xprof-worker-app
spec:
containers:
- name: worker-container
image: xprof:2.21.3
imagePullPolicy: Never
args:
- "--port=9999"
- "-gp=8891"
- "--hide_capture_profile_button"
ports:
- containerPort: 8891
---
apiVersion: v1
kind: Service
metadata:
name: xprof-worker-service
labels:
app: xprof-worker-app
spec:
selector:
app: xprof-worker-app
clusterIP: None
ports:
- protocol: TCP
port: 80
targetPort: 8891
設定 Minikube
如要部署設定,請執行下列指令:
kubectl apply -f worker.yaml
kubectl apply -f agg.yaml
您應該可以檢查已部署的物件:
kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 13h
xprof-agg-service NodePort 10.96.13.172 <none> 8080:30001/TCP 13h
xprof-worker-service ClusterIP None <none> 80/TCP 13h
現在,讓我們連線至匯總工具:
minikube service xprof-agg-service --url
http://127.0.0.1:50609
❗ Because you are using a Docker driver on darwin, the terminal needs to be open to run it.
現在您可以在瀏覽器中存取:
