এই ডকুমেন্টটি বর্ণনা করে যে কীভাবে Kubernetes-এ একটি বিতরণকৃত সেটআপে XProf স্থাপন করা যায়, কর্মীদের জন্য পৃথক স্থাপনা এবং একটি সমষ্টিগত ব্যবহার করে।

পূর্বশর্ত
- একটি Kubernetes ক্লাস্টার। এই টিউটোরিয়ালে একটি ন্যূনতম সেটআপের জন্য আমরা minikube ব্যবহার করছি।
- XProf এর একটি ডকার ছবি। XProf ডকার ছবি তৈরির নির্দেশাবলীর জন্য একটি XProf ডকার ছবি তৈরি করা দেখুন।
কুবারনেটস কনফিগারেশন
নিম্নলিখিত 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 এর জন্য আমরা 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
মিনিকিউব সেটআপ
আমাদের সেটআপ রান স্থাপন করতে:
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.
এখন আপনি আপনার ব্রাউজারে এটি অ্যাক্সেস করতে পারবেন:
