Workstation Logo
পণ্য
এআই ল্যাবসOpenAI এজেন্টClaude এজেন্টGrok BotWorkstation CRM (WSL CRM)মার্কেটিংসব পণ্য
এআই সমাধান
এআই ওয়ার্কস্টেশনAI SME Packagesপ্রাইভেট এআইজিপিইউ ক্লাস্টারএজ এআইএন্টারপ্রাইজ এআই ল্যাবশিল্প অনুযায়ী এআই
সেবাসমূহ
Platform ModernisationDigital EngineeringData Foundations & AIAutonomous Operationsএআই পরামর্শDevOps অটোমেশনসাইবার নিরাপত্তাসফটওয়্যার ডেভেলপমেন্টএজেন্ট নির্মাণMLOps সেটআপ
আমাদের সম্পর্কে
অংশীদারগ্রাহক গল্প
প্রবন্ধ
ডকুমেন্টেশন
WSL ProxyRing PromoterWSL VaultJobshoutSysOps 24/7
ব্লগ
যোগাযোগ করুনLogin
Workstation

আধুনিক ব্যবসার জন্য AI ওয়ার্কস্টেশন, AI মাল্টি-এজেন্টিক সফটওয়্যার, GPU অবকাঠামো এবং বুদ্ধিমান এজেন্ট সমাধান।

যোগাযোগ করুন

AI সমাধান

এআই ওয়ার্কস্টেশনAI SME Packagesপ্রাইভেট এআইজিপিইউ ক্লাস্টারএজ এআইএন্টারপ্রাইজ এআই ল্যাবশিল্প অনুযায়ী এআই

পণ্য

সব পণ্যWSL CRM ও ERPমার্কেটিংOpenAI এজেন্টWSL ProxyRing PromoterWSL VaultJobshoutSysOps 24/7

কোম্পানি

আমাদের সম্পর্কেকেন Workstationঅংশীদারগ্রাহক গল্পমূল্যযোগাযোগ

রিসোর্স

প্রবন্ধডকুমেন্টেশনব্লগখুঁজুনসাইটম্যাপ
যুক্তরাজ্য অফিস
77-79 Marlowes, Hemel Hempstead HP1 1LFদিকনির্দেশ - M25 আউটার লন্ডন থেকে জংশন ২০ নিনকোম্পানি নং: 11641870সোম - শুক্র: সকাল ৯:০০ - সন্ধ্যা ৬:০০ GMT
+44 7515 356 146
বেলজিয়াম অফিস
Workstation SRL, Rue Vanderkindere 34, 1180 Uccle, BrusselsBE 0751.518.683সোম - শুক্র: সকাল ৯:০০ - সন্ধ্যা ৬:০০ CET
+32 492 45 67 46
ভারত অফিস
#159 Sector 9, Pocket 1, DDA Flats, 110077 Dwarka, New Delhi
+91 98881 98841

© 2026 Workstation AI। সর্বস্বত্ব সংরক্ষিত।

গোপনীয়তাকুকিসেবার শর্তাবলীওয়েবসাইট সাইটম্যাপ

Loading blog...

Home / Blog
FlutterMobileApp

Kubernetes এবং RKE2 সহ স্কেলিং পরিকাঠামো: একটি উত্পাদন গভীর ডুব

RKE2 ক্লাস্টার আর্কিটেকচার, অনুভূমিক এবং উল্লম্ব অটোস্কেলিং, উচ্চ প্রাপ্যতা, সংস্থান পরিচালনা এবং Prometheus/Grafana পর্যবেক্ষণযোগ্যতার জন্য একজন উত্পাদন প্রকৌশলীর গাইড

Balinder Walia২৭ মে, ২০২৫11 min read

উৎপাদনে Kubernetes ক্লাস্টার চালানো এক জিনিস। এমন একটি চালানো যা অপ্রত্যাশিত ট্র্যাফিক স্পাইকগুলিকে শোষণ করতে পারে, নিয়ন্ত্রণ-প্লেন ব্যর্থতা থেকে বাঁচতে পারে, ভাড়াটে বিচ্ছিন্নতা প্রয়োগ করতে পারে এবং আপনার অপারেশন টিমকে সিস্টেমের প্রতিটি স্তরে স্পষ্ট দৃশ্যমানতা দিতে পারে - এটি একটি সম্পূর্ণ ভিন্ন চ্যালেঞ্জ। RKE2, Rancher এর পরবর্তী প্রজন্মের Kubernetes ডিস্ট্রিবিউশন, বিশেষভাবে এমন পরিবেশের জন্য তৈরি করা হয়েছে যেখানে এই প্রয়োজনীয়তাগুলি আলোচনার অযোগ্য।

এই নিবন্ধটি একটি প্রোডাকশন-গ্রেড RKE2 স্থাপনার সম্পূর্ণ জীবনচক্রের মাধ্যমে কাজ করে: প্রাথমিক ক্লাস্টার আর্কিটেকচার, পড এবং নোড স্তরে অটোস্কেলিং, উচ্চ-প্রাপ্যতা নিয়ন্ত্রণ প্লেন, রিসোর্স গভর্নেন্স, এবং Prometheus এবং Grafana এর সাথে পর্যবেক্ষণযোগ্যতা।

কেন RKE2?

RKE2 আপস্ট্রিম Kubernetes থেকে এবং এর পূর্বসূরি RKE1 থেকে তিনটি গুরুত্বপূর্ণ ক্ষেত্রে নিজেকে আলাদা করে। প্রথমত, এটি বক্সের বাইরে একটি CIS Kubernetes বেঞ্চমার্ক-কঠিন কনফিগারেশন সহ পাঠানো হয় — ভর্তি নিয়ন্ত্রক, অডিট লগিং, পড নিরাপত্তা, এবং TLS সেটিংস ম্যানুয়াল হস্তক্ষেপ ছাড়াই একটি CIS লেভেল 1 স্ক্যান পাস করার জন্য পূর্ব-কনফিগার করা হয়। দ্বিতীয়ত, এটি FIPS 140-2 অনুগত, এটি সরকারী এবং নিয়ন্ত্রিত-শিল্প স্থাপনার জন্য উপযুক্ত করে তোলে। তৃতীয়ত, এটি কনটেইনারকে সরাসরি এম্বেড করে এবং তার নিজস্ব CNI (খাল বা সিলিয়াম আপনার কনফিগারেশন পছন্দের উপর নির্ভর করে) দিয়ে জাহাজে করে, যা আপনাকে পরিচালনা করতে হবে এমন বাহ্যিক নির্ভরতার পৃষ্ঠের ক্ষেত্রফলকে হ্রাস করে।

RKE2ও এয়ার-গ্যাপ ফ্রেন্ডলি। ইনস্টলেশন বান্ডেলে সমস্ত প্রয়োজনীয় কন্টেইনার ইমেজ অন্তর্ভুক্ত রয়েছে, যা অন-প্রাঙ্গনে এবং প্রান্ত স্থাপনে অত্যন্ত গুরুত্বপূর্ণ যেখানে ক্লাস্টার নোড থেকে ইন্টারনেট অ্যাক্সেস সীমাবদ্ধ বা অসম্ভব।

ক্লাস্টার আর্কিটেকচার

একটি প্রোডাকশন RKE2 ক্লাস্টার সার্ভার নোড (যা কন্ট্রোল প্লেন এবং etcd চালায়) এবং এজেন্ট নোড (যা ওয়ার্কলোড চালায়) বিভক্ত। উচ্চ প্রাপ্যতার জন্য প্রস্তাবিত টপোলজি হল তিন বা পাঁচটি সার্ভার নোড এবং একটি পরিবর্তনশীল সংখ্যক এজেন্ট নোড যা নোড পুলে কাজের চাপ শ্রেণি দ্বারা সংগঠিত।

RKE2 ক্লাস্টার আর্কিটেকচারকন্ট্রোল প্লেন (HA)মাস্টার 1API সার্ভার লিডার সার্ভার লিডার XTAG207মাস্টার 2API সার্ভারetcd অনুগামীমাস্টার 3সময়সূচীetcd অনুগামী etcd অনুসরণকারী 4XPR X5

belওয়ার্কার নোডস (অটো-স্কেলযোগ্য পুল)কর্মী 1পড পড পডকন্টেইনারকর্মী 2 XTAG569 PodPod কন্টেইনারডওয়ার্কার 3পড পড পডকন্টেইনারওয়ার্কার Nস্কেলেবলচাহিদা X7TAG76X ... X7TAG75X X7TAG08X7XTAG08
# /etc/rancher/rke2/config.yaml (server node)
token: <shared-cluster-token>
tls-san:
  - 10.0.0.10          # VIP or load balancer address
  - k8s.internal.example.com
cni: cilium
cluster-cidr: 10.42.0.0/16
service-cidr: 10.43.0.0/16
etcd-expose-metrics: true
kube-apiserver-arg:
  - "audit-log-path=/var/log/kubernetes/audit.log"
  - "audit-log-maxage=30"
  - "audit-log-maxsize=100"
# /etc/rancher/rke2/config.yaml (agent node)
server: https://10.0.0.10:9345
token: <shared-cluster-token>
node-label:
  - "workload-class=general"
  - "topology.kubernetes.io/zone=eu-west-1a"

আপনার প্রথম কন্ট্রোল-প্লেন নোডে সার্ভারটি ইনস্টল করুন, তারপর একই টোকেন এবং VIP ঠিকানা ব্যবহার করে অবশিষ্ট সার্ভার নোড এবং সমস্ত এজেন্ট নোডগুলিতে যোগদান করুন৷ RKE2 স্বয়ংক্রিয়ভাবে etcd নেতা নির্বাচন করে এবং কোরাম পরিচালনা করে।

# Install and start RKE2 server
curl -sfL https://get.rke2.io | INSTALL_RKE2_TYPE=server sh -
systemctl enable --now rke2-server.service

# Retrieve the node token for joining additional nodes
cat /var/lib/rancher/rke2/server/node-token

# Install and start RKE2 agent (on worker nodes)
curl -sfL https://get.rke2.io | INSTALL_RKE2_TYPE=agent sh -
systemctl enable --now rke2-agent.service

নোড পুল এবং ওয়ার্কলোড প্লেসমেন্ট

সমস্ত ওয়ার্কলোডের একই রিসোর্স প্রোফাইল নেই। স্টেটলেস ওয়েব পরিষেবাগুলির GPU অনুমান কাজ, মেমরি-ইনটেনসিভ অ্যানালিটিক্স ওয়ার্কলোড বা লেটেন্সি-সংবেদনশীল ডেটাবেস থেকে আলাদা প্রয়োজনীয়তা রয়েছে৷ এজেন্ট নোডগুলিকে স্বতন্ত্র লেবেল এবং দাগ দিয়ে পুলগুলিতে সংগঠিত করা Kubernetes প্রতিটি কাজের চাপ ক্লাসকে যথাযথ আকারের হার্ডওয়্যারে নির্ধারণ করতে দেয়।

# Label a node pool for memory-intensive workloads
kubectl label nodes worker-mem-{1..4} workload-class=memory-optimised
kubectl taint nodes worker-mem-{1..4} workload-class=memory-optimised:NoSchedule

# Label a separate pool for general compute
kubectl label nodes worker-gen-{1..8} workload-class=general
# Deployment targeting the memory-optimised pool
apiVersion: apps/v1
kind: Deployment
metadata:
  name: analytics-engine
spec:
  template:
    spec:
      nodeSelector:
        workload-class: memory-optimised
      tolerations:
        - key: workload-class
          operator: Equal
          value: memory-optimised
          effect: NoSchedule
      containers:
        - name: analytics
          image: registry.internal/analytics:v2.3.1
          resources:
            requests:
              memory: "8Gi"
              cpu: "2"
            limits:
              memory: "16Gi"
              cpu: "4"

অনুভূমিক পড অটোস্ক্যালার

অনুভূমিক পড অটোস্ক্যালার (HPA) পর্যবেক্ষণ করা মেট্রিক্সের উপর ভিত্তি করে একটি স্থাপনা বা স্টেটফুলসেটের রেপ্লিকা গণনা সামঞ্জস্য করে। CPU ব্যবহার হল ক্লাসিক ট্রিগার, কিন্তু আধুনিক HPA কনফিগারেশনগুলি আপনার অ্যাপ্লিকেশন দ্বারা প্রকাশিত কাস্টম মেট্রিক্স বা বার্তা সারির গভীরতার মতো উত্স থেকে বাহ্যিক মেট্রিক্সের উপরও স্কেল করতে পারে।

Kubernetes অটো-স্কেলিংএইচপিএ - পড স্কেলিংপডXTAG11615X Pod 5Xd পড+Podস্কেল প্রতিলিপিগুলি CPU/মেমরিক্লাস্টার অটোস্ক্যালারের উপর ভিত্তি করে - নোড স্কেলিংTAG28 নং 17TAG130X 3 পডনোড 23 পড+নোডমুলতুবি42X 42X ধারণক্ষমতা যোগ করার জন্যমেট্রিক্স সার্ভারCPU & মেমরি ব্যবহারকাস্টম মেট্রিক্সের মাধ্যমে Prometheusফিড ডেটা HPA এ & ক্লাস্টার অটোস্ক্যালার

প্রথমে, নিশ্চিত করুন যে মেট্রিক্স সার্ভার চলছে — RKE2 এটিকে ডিফল্টরূপে বান্ডিল করে না।

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: api-server-hpa
  namespace: production
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: api-server
  minReplicas: 3
  maxReplicas: 20
  metrics:
    - type: Resource
      resource:
        name: cpu
        target:
          type: Utilization
          averageUtilization: 65
    - type: Resource
      resource:
        name: memory
        target:
          type: Utilization
          averageUtilization: 70
  behavior:
    scaleDown:
      stabilizationWindowSeconds: 300  # wait 5 minutes before scaling down
      policies:
        - type: Percent
          value: 25
          periodSeconds: 60
    scaleUp:
      stabilizationWindowSeconds: 0
      policies:
        - type: Percent
          value: 100
          periodSeconds: 30

behaviorব্লক স্থিতিশীলতার জন্য গুরুত্বপূর্ণ। একটি স্কেল-ডাউন স্ট্যাবিলাইজেশন উইন্ডো ছাড়া, একটি সংক্ষিপ্ত ট্র্যাফিক ড্রপ অকালে পডগুলিকে সরিয়ে দেবে, যখন লোড ফেরত আসে তখন আপনাকে আন্ডার-প্রভিশন করা হয়। অ্যাসিমেট্রিক নীতি — আক্রমনাত্মক স্কেল-আপ, রক্ষণশীল স্কেল-ডাউন — বেশিরভাগ উত্পাদন কাজের চাপের জন্য সঠিক ডিফল্ট।

উল্লম্ব পড অটোস্ক্যালার

ভার্টিকাল পড অটোস্ক্যালার (VPA) CPU এবং মেমরির অনুরোধগুলিকে পর্যবেক্ষণ করা ব্যবহারের উপর ভিত্তি করে পৃথক পডগুলিতে ডান আকার দেয়। এটি একটি সাধারণ সমস্যার সমাধান করে: বিকাশকারীরা অনুমানের উপর ভিত্তি করে প্রাথমিক রিসোর্স অনুরোধগুলি সেট করে এবং সেই মানগুলি কখনই আপডেট হয় না, যা হয় অযথা অত্যধিক প্রভিশনিং বা লোডের নিচে OOMKilled পডের দিকে পরিচালিত করে।

apiVersion: autoscaling.k8s.io/v1
kind: VerticalPodAutoscaler
metadata:
  name: worker-vpa
  namespace: production
spec:
  targetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: background-worker
  updatePolicy:
    updateMode: "Auto"     # or "Off" to only view recommendations
  resourcePolicy:
    containerPolicies:
      - containerName: worker
        minAllowed:
          cpu: 100m
          memory: 256Mi
        maxAllowed:
          cpu: 4
          memory: 8Gi
        controlledResources: ["cpu", "memory"]

মনে রাখবেন যেAutoমোডে VPA নতুন রিসোর্স মান প্রয়োগ করতে পডগুলিকে উচ্ছেদ করবে এবং পুনরায় চালু করবে। পরিষেবাগুলির জন্য যেখানে ইন-ফ্লাইট অনুরোধগুলিকে বাধা দেওয়া যায় না,Offমোডে VPA চালান যা আপনি ম্যানুয়ালি বা GitOps ওয়ার্কফ্লো রক্ষণাবেক্ষণ উইন্ডোর সময় প্রয়োগ করার জন্য সুপারিশগুলি তৈরি করতে পারেন৷

গুরুত্বপূর্ণ:HPA এবং VPA একই সাথে একই স্থাপনায় একই সংস্থান (CPU বা মেমরি) পরিচালনা করা উচিত নয়৷ CPU-চালিত অনুভূমিক স্কেলিং-এর জন্য HPA এবং মেমরির ডান-আকারের জন্যOffমোডে VPA ব্যবহার করুন, অথবা ইভেন্ট-চালিত স্কেলিং-এর জন্যKEDAব্যবহার করুন যেখানে সূক্ষ্ম নিয়ন্ত্রণের প্রয়োজন হয়৷

ক্লাস্টার অটোস্ক্যালার

পড অটোস্ক্যালার বিদ্যমান নোড ক্ষমতার মধ্যে কাজ করে। যখন সেই ক্ষমতা শেষ হয়ে যায় — পডগুলিPending-এ আটকে থাকে কারণ কোনও নোডে পর্যাপ্ত সংস্থান নেই — নতুন নোডগুলি সরবরাহ করার জন্য আপনার ক্লাস্টার অটোস্ক্যালার প্রয়োজন৷ বিপরীতভাবে, যখন নোডগুলি উল্লেখযোগ্যভাবে কম-ব্যবহার করা হয়, তখন ক্লাস্টার অটোস্ক্যালার পরিকাঠামোর খরচ কমাতে তাদের নিষ্কাশন এবং ডিকমিশন করতে পারে।

বেয়ার-মেটাল বা অন-প্রিমিসেস ডিপ্লোয়মেন্টে, ক্লাস্টার অটোস্ক্যালার আপনার অবকাঠামো প্রভিশনিং লেয়ারের সাথে একীভূত হয়। ক্লাউড স্থাপনার জন্য, প্রদানকারী যেমন AWS, GCP, এবং Azure নেটিভ নোড গ্রুপ ইন্টিগ্রেশন অফার করে। নিম্নলিখিত উদাহরণটি একটি AWS অটো স্কেলিং গ্রুপের মূল কনফিগারেশন দেখায়।

apiVersion: apps/v1
kind: Deployment
metadata:
  name: cluster-autoscaler
  namespace: kube-system
spec:
  template:
    spec:
      containers:
        - name: cluster-autoscaler
          image: registry.k8s.io/autoscaling/cluster-autoscaler:v1.29.0
          command:
            - ./cluster-autoscaler
            - --cloud-provider=aws
            - --nodes=2:10:k8s-general-worker-asg
            - --nodes=1:4:k8s-memory-worker-asg
            - --scale-down-delay-after-add=10m
            - --scale-down-unneeded-time=10m
            - --scale-down-utilization-threshold=0.5
            - --skip-nodes-with-local-storage=false
            - --expander=least-waste
          env:
            - name: AWS_REGION
              value: eu-west-1

--expander=least-wasteবিকল্পটি অটোস্কেলারকে সেই নোড গোষ্ঠীকে পছন্দ করতে বলে যেটিতে মুলতুবি থাকা পডকে সামঞ্জস্য করার পরে অব্যবহৃত সংস্থানের ক্ষুদ্রতম পরিমাণ থাকবে, যা খরচ কমিয়ে দেয়। বিকল্প সম্প্রসারণকারীদের মধ্যে রয়েছেrandom,most-pods, এবংpriority৷

উচ্চ প্রাপ্যতা নিয়ন্ত্রণ প্লেন

এমবেডেড etcd সহ একটি থ্রি-নোড কন্ট্রোল প্লেন হল ন্যূনতম কার্যকর HA টপোলজি। etcd-এর জন্য কোরাম প্রয়োজন — ক্লাস্টারের লেখাগুলি গ্রহণ করার জন্য বেশিরভাগ সদস্যকে অবশ্যই সুস্থ হতে হবে। তিন সদস্যের সাথে আপনি একটি ব্যর্থতা সহ্য করতে পারেন; পাঁচ সদস্যের সাথে আপনি দুইজনকে সহ্য করতে পারেন।

কন্ট্রোল-প্লেন নোডগুলি অবশ্যই একটি লোড ব্যালেন্সারের পিছনে বসতে হবে৷ ক্লাউড স্থাপনার জন্য, একটি TCP লোড ব্যালেন্সার টার্গেটিং পোর্ট 6443 (kube-apiserver) এবং 9345 (RKE2 রেজিস্ট্রেশন) ভাল কাজ করে। অন-প্রিমিসেস স্থাপনায় সাধারণত একটি ভার্চুয়াল আইপি ঠিকানা সহ Keepalived ব্যবহার করা হয়।

# keepalived.conf on control-plane nodes
vrrp_instance VI_1 {
    state MASTER        # BACKUP on the other two nodes
    interface eth0
    virtual_router_id 51
    priority 100        # 90 and 80 on the other two nodes
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass securepassword
    }
    virtual_ipaddress {
        10.0.0.10/24    # VIP used in tls-san and agent server address
    }
}

যেকোন কন্ট্রোল-প্লেন অপারেশনের পর etcd সুস্থ কিনা তা যাচাই করুন। RKE2 বান্ডেলetcdctlএ/var/lib/rancher/rke2/bin/etcdctl।

ETCDCTL_API=3 /var/lib/rancher/rke2/bin/etcdctl \
  --endpoints=https://127.0.0.1:2379 \
  --cacert=/var/lib/rancher/rke2/server/tls/etcd/server-ca.crt \
  --cert=/var/lib/rancher/rke2/server/tls/etcd/client.crt \
  --key=/var/lib/rancher/rke2/server/tls/etcd/client.key \
  endpoint health --cluster

রিসোর্স কোটা এবং সীমা রেঞ্জ

৷

মাল্টি-টেন্যান্ট ক্লাস্টারে — যেখানে বিভিন্ন দল বা অ্যাপ্লিকেশন একই ভৌত অবকাঠামো ভাগ করে — রিসোর্সকোটাস এবং লিমিটেরাঞ্জগুলি হল অপরিহার্য রেলপথ। ResourceQuotas একটি নামস্থানের মধ্যে মোট সম্পদ খরচের উপর হার্ড ক্যাপ সেট করে। LimitRanges পৃথক কন্টেইনারগুলির জন্য ডিফল্ট এবং সর্বোচ্চ মান সেট করে, অসীম সম্পদের অনুরোধ করা থেকে একটি ভুল কনফিগার করা স্থাপনা প্রতিরোধ করে।

apiVersion: v1
kind: ResourceQuota
metadata:
  name: team-alpha-quota
  namespace: team-alpha
spec:
  hard:
    requests.cpu: "20"
    requests.memory: 40Gi
    limits.cpu: "40"
    limits.memory: 80Gi
    count/deployments.apps: "20"
    count/services: "15"
    persistentvolumeclaims: "10"
    requests.storage: 500Gi
apiVersion: v1
kind: LimitRange
metadata:
  name: team-alpha-limits
  namespace: team-alpha
spec:
  limits:
    - type: Container
      default:
        cpu: 500m
        memory: 512Mi
      defaultRequest:
        cpu: 100m
        memory: 128Mi
      max:
        cpu: "8"
        memory: 16Gi
    - type: PersistentVolumeClaim
      max:
        storage: 100Gi

LimitRanges প্রয়োগ করা নিশ্চিত করে যে ডেভেলপাররা যারা রিসোর্স অনুরোধগুলি নির্দিষ্ট করতে ভুলে যান তারা শূন্য CPU অনুরোধ করার পরিবর্তে এখনও বুদ্ধিমান ডিফল্ট পান, যার ফলে শিডিয়ুলার যে কোনও জায়গায় পড স্থাপন করতে পারে এবং একই নোডে অন্যান্য কাজের চাপকে ক্ষুধার্ত করে ফেলতে পারে।

Prometheus এবং Grafanaসহ

মনিটরিং একটি Kubernetes ক্লাস্টারে

পর্যবেক্ষণযোগ্যতার তিনটি স্তম্ভ রয়েছে: মেট্রিক্স, লগ এবং ট্রেস। Prometheus মেট্রিক্স সংগ্রহ পরিচালনা করে; Grafana ভিজ্যুয়ালাইজেশন পরিচালনা করে।kube-prometheus-stackHelm চার্ট পুরো স্ট্যাককে স্থাপন করে — Prometheus অপারেটর, অ্যালার্ট ম্যানেজার, Grafana, নোড রপ্তানিকারক, এবং পূর্ব-নির্মিত ড্যাশবোর্ডগুলির একটি বিস্তৃত সেট — একটি একক কমান্ডে।

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update

helm install kube-prometheus-stack prometheus-community/kube-prometheus-stack \
  --namespace monitoring \
  --create-namespace \
  --set prometheus.prometheusSpec.retention=30d \
  --set prometheus.prometheusSpec.storageSpec.volumeClaimTemplate.spec.storageClassName=longhorn \
  --set prometheus.prometheusSpec.storageSpec.volumeClaimTemplate.spec.resources.requests.storage=100Gi \
  --set grafana.adminPassword=<secure-password> \
  --set alertmanager.alertmanagerSpec.storage.volumeClaimTemplate.spec.resources.requests.storage=10Gi
সার্ভার কনফিগারেশনেetcd-expose-metrics: trueসেট করা থাকলে

RKE2 etcd মেট্রিক্স প্রকাশ করে। একটি সার্ভিস মনিটর যোগ করুন যাতে Prometheus তাদের স্ক্র্যাপ করে।

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: rke2-etcd
  namespace: monitoring
  labels:
    release: kube-prometheus-stack
spec:
  namespaceSelector:
    matchNames: [kube-system]
  selector:
    matchLabels:
      app.kubernetes.io/name: rke2-etcd
  endpoints:
    - port: metrics
      scheme: https
      tlsConfig:
        caFile: /etc/prometheus/secrets/etcd-client-cert/ca.crt
        certFile: /etc/prometheus/secrets/etcd-client-cert/client.crt
        keyFile: /etc/prometheus/secrets/etcd-client-cert/client.key

প্রয়োজনীয় সতর্কতার নিয়ম

প্রাক-নির্মিত ড্যাশবোর্ডগুলি হল একটি সূচনা বিন্দু, কিন্তু আপনার পরিবেশের সাথে সংযুক্ত কাস্টম সতর্কতা বিধি যা ব্যবহারকারীদের কোনো সমস্যা লক্ষ্য করার আগে অন-কল ইঞ্জিনিয়ারদের কাজ করার অনুমতি দেয়৷

apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
  name: workload-alerts
  namespace: monitoring
  labels:
    release: kube-prometheus-stack
spec:
  groups:
    - name: pod-health
      rules:
        - alert: PodCrashLooping
          expr: rate(kube_pod_container_status_restarts_total[10m]) > 0.5
          for: 5m
          labels:
            severity: critical
          annotations:
            summary: "Pod {{ $labels.namespace }}/{{ $labels.pod }} is crash-looping"

        - alert: NodeMemoryPressure
          expr: |
            (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) < 0.1
          for: 2m
          labels:
            severity: warning
          annotations:
            summary: "Node {{ $labels.node }} memory below 10%"

        - alert: HPAMaxedOut
          expr: |
            kube_horizontalpodautoscaler_status_current_replicas
            == kube_horizontalpodautoscaler_spec_max_replicas
          for: 15m
          labels:
            severity: warning
          annotations:
            summary: "HPA {{ $labels.namespace }}/{{ $labels.horizontalpodautoscaler }} at maximum replicas"

HPAMaxedOutসতর্কতা অনুশীলনে বিশেষভাবে মূল্যবান। যখন একটি HPA একটি বর্ধিত সময়ের জন্য তার সর্বাধিক পিন করা হয় তার মানে ট্র্যাফিক আপনার বর্তমান সিলিং ছাড়িয়ে গেছে। আপনাকে হয় সর্বাধিক বাড়াতে হবে বা নোড পুলে ক্ষমতা যোগ করতে হবে — এবং আপনি পরবর্তী স্পাইকের আগে এটি সম্পর্কে জানতে চান, এটির সময় নয়।

উত্পাদনের সেরা অনুশীলনগুলি

৷

পড ব্যাহত বাজেট

একটি PodDisruptionBudget (PDB) সীমাবদ্ধ করে যে নোড ড্রেনের মতো স্বেচ্ছাসেবী বাধার সময় একটি স্থাপনায় কতগুলি পড একই সাথে অনুপলব্ধ হতে পারে। PDB ব্যতীত, রক্ষণাবেক্ষণের জন্য একটি নোড নিষ্কাশন করা একটি সম্পূর্ণ স্থাপনা অফলাইনে নিতে পারে।

apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
  name: api-server-pdb
  namespace: production
spec:
  minAvailable: 2       # or use maxUnavailable: 1
  selector:
    matchLabels:
      app: api-server

টপোলজি স্প্রেড সীমাবদ্ধতা

ডিফল্টরূপে, সময়সূচী সর্বোত্তম প্রচেষ্টার অ্যালগরিদম ব্যবহার করে নোড জুড়ে প্রতিলিপি ছড়িয়ে দেয়। টপোলজি স্প্রেড সীমাবদ্ধতা আপনাকে কঠিন গ্যারান্টি দেয় যে প্রতিলিপিগুলি প্রাপ্যতা অঞ্চল বা র্যাকগুলিতে বিতরণ করা হয়।

topologySpreadConstraints:
  - maxSkew: 1
    topologyKey: topology.kubernetes.io/zone
    whenUnsatisfiable: DoNotSchedule
    labelSelector:
      matchLabels:
        app: api-server

আপগ্রেড কৌশল

RKE2 সিস্টেম আপগ্রেড কন্ট্রোলারের মাধ্যমে রোলিং আপগ্রেড সমর্থন করে। আপনি একটি পরিকল্পনা সংজ্ঞায়িত করেন যা সার্ভার বা এজেন্ট নোডকে লক্ষ্য করে এবং লক্ষ্য সংস্করণ নির্দিষ্ট করে; কন্ট্রোলার ক্রমানুসারে নোডগুলিকে ড্রেন, আপগ্রেড এবং আনকর্ডন করে।

apiVersion: upgrade.cattle.io/v1
kind: Plan
metadata:
  name: rke2-server-upgrade
  namespace: system-upgrade
spec:
  concurrency: 1
  cordon: true
  nodeSelector:
    matchExpressions:
      - { key: node-role.kubernetes.io/control-plane, operator: In, values: ["true"] }
  serviceAccountName: system-upgrade
  upgrade:
    image: rancher/rke2-upgrade
  version: v1.29.4+rke2r1

etcd ব্যাকআপ এবং

পুনরুদ্ধার করুন

RKE2 স্বয়ংক্রিয়ভাবে নির্ধারিত etcd স্ন্যাপশট নিতে পারে। কন্ট্রোল-প্লেন নোডগুলিতে স্থানীয় ডিস্কের পরিবর্তে - একটি S3 বালতি বা একটি দূরবর্তী NFS মাউন্ট - ক্লাস্টারের বাইরে টেকসই স্টোরেজে লেখা হয়েছে তা নিশ্চিত করুন।

# /etc/rancher/rke2/config.yaml additions for automated snapshots
etcd-snapshot-schedule-cron: "0 */6 * * *"    # every 6 hours
etcd-snapshot-retention: 10
etcd-snapshot-dir: /mnt/nfs/etcd-snapshots

# Manual snapshot
rke2 etcd-snapshot save --name pre-upgrade-$(date +%Y%m%d)

# Restore from snapshot (run on a single server node with cluster stopped)
rke2 server --cluster-reset --cluster-reset-restore-path=/path/to/snapshot.db

উপসংহার

RKE2 এর সাথে

স্কেলিং অবকাঠামো একটি একক কনফিগারেশন পরিবর্তন নয় - এটি ইন্টারলকিং ক্ষমতাগুলির একটি সিস্টেম যা অবশ্যই একসাথে ডিজাইন এবং পরিচালনা করতে হবে। অনুভূমিক পড অটোস্কেলিং কাজের চাপ স্তরে স্বল্পকালীন ট্র্যাফিক বিস্ফোরণ পরিচালনা করে। উল্লম্ব পড অটোস্কেলিং সময়ের সাথে সাথে সম্পদের অনুরোধকে সৎ রাখে। ক্লাস্টার অটোস্ক্যালার নিশ্চিত করে যে অন্তর্নিহিত নোডের ক্ষমতা আপনার পড অটোস্ক্যালারের সামগ্রিক চাহিদা ট্র্যাক করে। নোড পুল এবং টপোলজি সীমাবদ্ধতাগুলি সঠিক হার্ডওয়্যারের উপর কাজের বোঝা নিশ্চিত করে। রিসোর্স কোটা এবং সীমা রেঞ্জ ভাড়াটেদের একে অপরের থেকে রক্ষা করে। PodDisruptionবাজেট এবং টপোলজি স্প্রেড সীমাবদ্ধতা সহজলভ্যতা শক্ত করে। এবং Grafana-এর সাথে Prometheus আপনার দলকে বিভ্রাট হওয়ার আগে অবক্ষয় শনাক্ত করার দৃশ্যমানতা দেয়।

RKE2 সঠিকভাবে উৎপাদনে তার স্থান অর্জন করে কারণ এটি এই স্ট্যাকের একটি উল্লেখযোগ্য অংশকে প্রি-কঠিন এবং প্রাক-সমন্বিত করে। আপনার দায়িত্ব হ'ল নবগুলি বোঝা, সেগুলিকে আপনার কাজের চাপের বৈশিষ্ট্যগুলির সাথে সুর করা এবং অপারেশনাল শৃঙ্খলা তৈরি করা — রানবুক, সতর্কতা রাউটিং, আপগ্রেড ক্যাডেন্স, ব্যাকআপ বৈধতা — যা একটি ভাল-কনফিগার করা ক্লাস্টারকে সত্যিকারের নির্ভরযোগ্য প্ল্যাটফর্মে পরিণত করে।