সমস্ত কুবারনেট নেমস্পেসে সমস্ত পোড মুছে ফেলার জন্য আদেশ


154

দস্তাবেজগুলির দিকে তাকানোর পরে, 'একটি' পড মুছতে একটি এপিআই কল রয়েছে, তবে সমস্ত নেমস্পেসে সমস্ত পোডকে মেরে ফেলার উপায় আছে কি?

উত্তর:


281

আপনি যা বলেছিলেন ঠিক তেমন করার কোনও আদেশ নেই।

এখানে কয়েকটি ঘনিষ্ঠ মিল রয়েছে।

আপনি এই কমান্ডের সাহায্যে একক নেমস্পেসে সমস্ত শুঁটি মুছতে পারেন:

kubectl delete --all pods --namespace=foo

আপনি নেমস্পেসের সমস্ত মোতায়েনও মুছতে পারেন যা নাম স্থানের সাথে সংযুক্ত স্থাপনার সাথে যুক্ত সমস্ত শুঁটি মুছে ফেলবে

kubectl delete --all deployments --namespace=foo

আপনি এই আদেশের সাহায্যে সমস্ত নেমস্পেসে এবং প্রতিটি নেমস্পেসের প্রতিটি অবজেক্ট (তবে নামবিহীন স্পেস নয়, যেমন নোড এবং কিছু ইভেন্ট নয়) মুছতে পারেন:

kubectl delete --all namespaces

তবে, পরবর্তী কমান্ড সম্ভবত আপনি কিছু করতে চান না কারণ এটি কিউব-সিস্টেমের নেমস্পেসের জিনিসগুলি মুছে ফেলবে, যা আপনার ক্লাস্টারটি ব্যবহারযোগ্য নয়।

এই কমান্ডটি কুয়েব-সিস্টেম ব্যতীত সমস্ত নেমস্পেস মুছে ফেলবে, যা কার্যকর হতে পারে:

for each in $(kubectl get ns -o jsonpath="{.items[*].metadata.name}" | grep -v kube-system);
do
  kubectl delete ns $each
done

1
কে 8 এস-এর বর্তমান সংস্করণ সহ, "কুবেটেল মুছে ফেলুন - সমস্ত নামস্থান" কমান্ডটি সিস্টেমের জিনিসগুলি আর মুছে ফেলবে না ... এটি যেমন: নেমস্পেসগুলি "ডিফল্ট" নিষিদ্ধ: এই নেমস্পেসটি মুছতে পারে না
কাই ওয়েহনার

এটি কি ডিপ্লোয়মেন্টটি মুছবে বা কেবল শুঁটি?
সিনাইস্টেটিক

1
kubectl delete pods --all --all-namespacesকখনও কখনও কাজ করে বলে মনে হয় (এটি কিছু পরিবেশে কাজ করার কারণ এবং অন্যদের মধ্যে নয়) নিশ্চিত নয়। এটি আমার ঘাঁটি হোস্ট থেকে ভাল কাজ করে তবে ল্যাপটপ থেকে নয়। উভয়ই চলমান দেবিয়ান এবং উভয়ই কুবেক্টেলের একই সংস্করণ (ক্লাস্টার সংস্করণ 1.13) চালাচ্ছেন
প্যাট্রিক ডব্লিউ

@ কাইওয়াহনার যদি আমি ভুল না করে থাকি তবে কে-এস সিস্টেম-সম্পর্কিত জিনিসগুলি kube-systemনেমস্পেসে রয়েছে। বার্তার উদাহরণে, আমি defaultনেমস্পেসটি দেখতে পাচ্ছি । আপনি kube-systemযে আদেশটি সংযুক্ত করেছেন তা মুছে ফেলা হবে?
জর্জ টেরেস

79
kubectl delete daemonsets,replicasets,services,deployments,pods,rc --all

তাদের থেকে পরিত্রাণ পেতে খুব সমস্যাযুক্ত প্রতিলিপি নিয়ন্ত্রণকারীদেরও।


4
এটা ভুল. এটি কেবলমাত্র বর্তমান নেমস্পেসে মুছে দেয়।
28:38

-ন পতাকাটি যুক্ত করুন, তবে দুঃখিত যে এটি একবারে একটি পডের জন্য এবং একসাথে সব নয়
গ্রোনক

1
আপনি ingইনগ্রেশনগুলি মুছতেও নিখোঁজ রয়েছেন
ড্রুস্কা

2
আপনি পাশাপাশি "স্টেটফুলসেট" যুক্ত করতে চাইতে পারেন (যদি প্রযোজ্য হয়)। অন্যথায় এটি কমান্ডের উপরে চলে যাওয়ার পরেও নতুন পোড কাঁটাচামচ রাখবে!
বুচ

15

আপনার কেবল এটি করা দরকার sed:

kubectl get pods --no-headers=true --all-namespaces |sed -r 's/(\S+)\s+(\S+).*/kubectl --namespace \1 delete pod \2/e'

ব্যাখ্যা করে:

  1. kubectl get pods --all-namespacesসমস্ত নেমস্পেসে সমস্ত পডের তালিকা পেতে কমান্ডটি ব্যবহার করুন ।
  2. --no-headers=trueশিরোনামগুলি আড়াল করার জন্য বিকল্পটি ব্যবহার করুন।
  3. প্রথম দুটি শব্দ আনার জন্য sকমান্ডটি ব্যবহার করুন sed, যা যথাক্রমে প্রতিনিধিত্ব করে namespaceএবং pod's nameএরপরে একত্রিত হনdelete কমান্ড তাদের ব্যবহার করে।
  4. চূড়ান্ত deleteকমান্ড ঠিক মত হল: kubectl --namespace kube-system delete pod heapster-eq3yw
  5. উপরের সমবেত কমান্ডটি কার্যকর করতে কমান্ডের eসংশোধক ব্যবহার করুন s, যা প্রকৃত deleteকাজ করবে।

kube-systemনেমস্পেসে শুঁটি মুছে ফেলা এড়াতে , কমান্ডের আগে নেমস্পেস grep -v kube-systemবাদ দিতে কেবল যুক্ত করতে হবে ।kube-systemsed


আপনি --all-namespacesযদি kube-systemনেমস্পেসে
শুঁটি

মাত্র কয়েকটি পোড মুছতে কমান্ড হবে? উদাহরণ: আমার 20 টি পোড স্পিন ছিল এবং এখন কেবল 1 রাখার ইচ্ছা আছে
জেসন

10

আপনি কেবল চালাতে পারেন

kubectl delete all --all --all-namespaces
  • প্রথমটির allঅর্থ সাধারণ সংস্থানীয় ধরণের (শুঁটি, প্রতিলিপি, স্থাপনা, ...)

    • kubectl get all == kubectl get pods,rs,deployments, ...
  • দ্বিতীয় --allঅর্থ নির্বাচিত ধরণের সমস্ত সংস্থান নির্বাচন করা


নোট allএতে অন্তর্ভুক্ত নেই:

  • অ-নেমস্পিড রিসোর্সড (উদাঃ, ক্লাস্টাররোবিলিং, ক্লাস্টারোলেস, ...)
  • configmaps
  • rolebindings
  • ভূমিকা
  • অন্ধিসন্ধি
  • ...

পুরোপুরি পরিষ্কার করার জন্য,

  • আপনি অন্যান্য সরঞ্জামগুলি ব্যবহার করতে পারেন (যেমন, হেলম, কাস্টমাইজ, ...)
  • আপনি একটি নেমস্পেস ব্যবহার করতে পারেন।
  • আপনি যখন সংস্থান তৈরি করেন তখন আপনি লেবেল ব্যবহার করতে পারেন।

2

এখানে একটি ওয়ান-লাইনার যা নাম অনুসারে ফিল্টার করার জন্য গ্রেপ দিয়ে বাড়ানো যেতে পারে।

kubectl get pods -o jsonpath="{.items[*].metadata.name}" | \
tr " " "\n" | \
xargs -i -P 0 kubectl delete pods {}

1
kubectl delete po,ing,svc,pv,pvc,sc,ep,rc,deploy,replicaset,daemonset --all -A

সতর্ক হোন! যেহেতু পিভি নামকরণের গতি নয় , উপরের কমান্ডটি সমস্ত পিভিগুলি ক্লাস্টার-প্রশস্ত করে ফেলবে।
আহমদ আহমদী

0

আপনার যদি ইতিমধ্যে পুনরায় তৈরি করা শুঁটি থাকে তবে প্রথমে সমস্ত মোতায়েন মোছার জন্য ভাবেন

kubectl delete -n *NAMESPACE deployment *DEPLOYMENT

কেবল NAMSPACE এবং সংশ্লিষ্ট ব্যক্তিকে ডিপ্লোয়মেন্টটি প্রতিস্থাপন করুন, আপনি নিম্নলিখিত কমান্ডের মাধ্যমে সমস্ত মোতায়েনের তথ্য পেতে পারেন

kubectl get deployments --all-namespaces

0

কুবেক্টল বাল্ক (ক্রুতে বাল্ক-অ্যাকশন) প্লাগইন আপনার জন্য কার্যকর হতে পারে, এটি আপনাকে নির্বাচিত সংস্থাগুলিতে বাল্ক ক্রিয়াকলাপ দেয়। এটি শুঁটি মুছে ফেলার জন্য আদেশ

 ' kubectl bulk pods -n namespace delete '

আপনি এই বিবরণ পরীক্ষা করতে পারে


0

নেমস্পেসে সমস্ত মুছতে আমি পাইথন কোড তৈরি করি

delall.py

import json,sys,os;

obj=json.load(sys.stdin);
for item in obj["items"]:
        os.system("kubectl delete " + item["kind"] + "/" +item["metadata"]["name"] + " -n yournamespace")

এবং তারপর

kubectl get all -n kong -o json | python delall.py

0

কে 8 এস সম্পূর্ণরূপে নেমস্পেসের মৌলিক উপর কাজ করে। আপনি যদি নির্দিষ্ট নামের জায়গার সাথে সম্পর্কিত সমস্ত সংস্থান প্রকাশ করতে চান।

আপনি নীচে উল্লিখিত ব্যবহার করতে পারেন:

kubectl মুছে ফেলুন নেমস্পেস k8sdemo- অ্যাপ্লিকেশন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.