Tài liệu này mô tả cách triển khai XProf trong một chế độ thiết lập phân tán trên Kubernetes, sử dụng các quy trình triển khai riêng biệt cho các worker và một trình tổng hợp.

Điều kiện tiên quyết
- Một cụm Kubernetes. Để thiết lập tối thiểu trong hướng dẫn này, chúng ta sẽ sử dụng minikube.
- Hình ảnh Docker của XProf. Hãy xem bài viết Tạo một hình ảnh Docker XProf để biết hướng dẫn về cách tạo một hình ảnh.
Cấu hình Kubernetes
Các cấu hình YAML sau đây xác định các dịch vụ và hoạt động triển khai Kubernetes cho các worker XProf và một trình tổng hợp.
Việc triển khai trình tổng hợp chạy một bản sao duy nhất nhận các yêu cầu của người dùng và phân phối các tác vụ lập hồ sơ cho các bản sao worker bằng chính sách luân phiên.
Cờ --worker_service_address định cấu hình trình tổng hợp để gửi yêu cầu đến dịch vụ worker.
Việc triển khai worker chạy nhiều bản sao, mỗi bản sao hiển thị một cổng gRPC thông qua cờ --grpc_port để theo dõi các tác vụ xử lý từ trình tổng hợp.
Trang web tổng hợp
Trước tiên, hãy tạo tệp agg.yaml rồi dán nội dung sau vào:
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
Đối với worker, chúng ta tạo tệp 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
Thiết lập Minikube
Cách triển khai quá trình thiết lập chạy:
kubectl apply -f worker.yaml
kubectl apply -f agg.yaml
Bạn có thể kiểm tra các đối tượng đã triển khai:
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
Bây giờ, hãy kết nối với đơn vị tập hợp của chúng ta:
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.
Giờ đây, bạn có thể truy cập vào trang này trong trình duyệt:
