Node Affinity এবং Pod Affinity/Anti-Affinity হল Kubernetes এবং OpenShift-এ Pods এবং Nodes এর মধ্যে সম্পর্কের নিয়ন্ত্রণের জন্য ব্যবহৃত কৌশল। এই কৌশলগুলি Pods কে বিভিন্ন Nodes-এ স্থাপন করার সময় সিদ্ধান্ত নিতে সহায়তা করে, যা ক্লাস্টারের কার্যক্ষমতা এবং স্থায়িত্ব উন্নত করে। নিচে এই ধারণাগুলির ব্যাখ্যা, বৈশিষ্ট্য এবং উদাহরণ আলোচনা করা হলো।
Node Affinity
সংজ্ঞা
Node Affinity হল একটি নির্দিষ্ট নীতি যা Pods কে নির্দিষ্ট Nodes-এ চালানোর অনুমতি দেয় বা বাধা দেয়। এটি কিভাবে Pods Nodes এর সাথে সম্পর্ক স্থাপন করবে তা নিয়ন্ত্রণ করে।
প্রকারভেদ
- Required During Scheduling (Hard Affinity): যদি একটি Pod নির্দিষ্ট Node-এ না চলে, তবে এটি কখনও সিডিউল হবে না।
- Preferred During Scheduling (Soft Affinity): এটি একটি প্রেফারেন্স দেয়, কিন্তু এটি কঠোর নয়। Pod নির্দিষ্ট Node-এ চলে গেলে এটি সিডিউল হবে, নাহলে অন্য Node-এ চলতে পারে।
উদাহরণ YAML কনফিগারেশন
apiVersion: v1
kind: Pod
metadata:
name: example-pod
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: disktype
operator: In
values:
- ssd
containers:
- name: example-container
image: nginx
Pod Affinity
সংজ্ঞা
Pod Affinity হল একটি কৌশল যা Pods কে নির্দিষ্ট Pods এর সাথে একই Node বা নিকটবর্তী Nodes-এ চালানোর অনুমতি দেয়। এটি নিশ্চিত করে যে নির্দিষ্ট Pods একত্রে স্থাপন করা হয়।
প্রকারভেদ
- Hard Affinity: Pods কে নির্দিষ্ট Pods এর সাথে সিডিউল করার জন্য বাধ্য করে।
- Soft Affinity: Pods কে নির্দিষ্ট Pods এর সাথে সিডিউল করার জন্য একটি প্রেফারেন্স দেয়, কিন্তু বাধ্যতামূলক নয়।
উদাহরণ YAML কনফিগারেশন
apiVersion: v1
kind: Pod
metadata:
name: example-pod
spec:
affinity:
podAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
labelSelector:
matchExpressions:
- key: app
operator: In
values:
- frontend
topologyKey: "kubernetes.io/hostname"
containers:
- name: example-container
image: nginx
Pod Anti-Affinity
সংজ্ঞা
Pod Anti-Affinity হল একটি কৌশল যা Pods কে নির্দিষ্ট Pods এর সাথে একই Node-এ চালানোর অনুমতি দেয় না। এটি নিশ্চিত করে যে নির্দিষ্ট Pods একত্রে স্থাপন করা হবে না।
উদাহরণ YAML কনফিগারেশন
apiVersion: v1
kind: Pod
metadata:
name: example-pod
spec:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
labelSelector:
matchExpressions:
- key: app
operator: In
values:
- backend
topologyKey: "kubernetes.io/hostname"
containers:
- name: example-container
image: nginx
সারসংক্ষেপ
Node Affinity এবং Pod Affinity/Anti-Affinity হল Kubernetes এবং OpenShift-এ Pods এবং Nodes এর মধ্যে সম্পর্ক নিয়ন্ত্রণের জন্য গুরুত্বপূর্ণ কৌশল।
- Node Affinity: Pods কে নির্দিষ্ট Nodes-এ চালানোর অনুমতি দেয় বা বাধা দেয়।
- Pod Affinity: Pods কে নির্দিষ্ট Pods এর সাথে একই Node বা নিকটবর্তী Nodes-এ চালানোর জন্য অনুমতি দেয়।
- Pod Anti-Affinity: Pods কে নির্দিষ্ট Pods এর সাথে একই Node-এ চলতে নিষেধ করে।
এই কৌশলগুলি ব্যবহার করে আপনি ক্লাস্টারের কার্যক্ষমতা এবং স্থায়িত্ব উন্নত করতে পারেন, বিশেষ করে বৃহৎ এবং জটিল অ্যাপ্লিকেশন পরিবেশে।
Read more