Bu belgede, Kubernetes'te dağıtılmış bir kurulumda XProf'un nasıl dağıtılacağı açıklanmaktadır. Bu işlemde, çalışanlar ve toplayıcı için ayrı dağıtımlar kullanılır.

Ön koşullar
- Kubernetes kümesi. Bu eğitimde minimum kurulum için minikube kullanıyoruz.
- XProf'un Docker görüntüsü. Nasıl oluşturulacağıyla ilgili talimatlar için XProf Docker görüntüsü oluşturma başlıklı makaleyi inceleyin.
Kubernetes Yapılandırması
Aşağıdaki YAML yapılandırmaları, XProf çalışanları ve bir toplayıcı için Kubernetes dağıtımlarını ve hizmetlerini tanımlar.
Toplayıcı dağıtımı, kullanıcı isteklerini alan ve profil oluşturma görevlerini sırayla dağıtma politikası kullanarak çalışan kopyalarına dağıtan tek bir kopya çalıştırır.
--worker_service_address işareti, toplayıcıyı istekleri çalışan hizmetine gönderecek şekilde yapılandırır.
Çalışan dağıtımı, her biri toplayıcıdan gelen işleme görevlerini dinlemek için --grpc_port işareti aracılığıyla bir gRPC bağlantı noktası sunan birden fazla replika çalıştırır.
Toplayıcı
Öncelikle agg.yaml dosyası oluşturup içeriğini yapıştıralım:
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
Çalışan
Çalışan için worker.yaml dosyası oluştururuz:
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 kurulumu
Kurulumumuzu dağıtmak için şu komutu çalıştırın:
kubectl apply -f worker.yaml
kubectl apply -f agg.yaml
Dağıtılan nesneleri inceleyebilmeniz gerekir:
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
Şimdi toplayıcımıza bağlanalım:
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.
Artık tarayıcınızdan erişebilirsiniz:
