মুছে ফেলা হলে কুবেরনেটস পোড পুনরায় তৈরি করা হয়


151

কমান্ড দিয়ে পোড শুরু করেছি

$ kubectl run busybox --image=busybox --restart=Never --tty -i --generator=run-pod/v1

কিছু ভুল হয়েছে, এবং এখন আমি এটি মুছতে পারি না Pod

আমি নীচে বর্ণিত পদ্ধতিগুলি ব্যবহার করার চেষ্টা করেছি তবে Podচালচিত্রগুলি পুনরায় তৈরি করা হচ্ছে।

$ kubectl delete pods  busybox-na3tm
pod "busybox-na3tm" deleted
$ kubectl get pods
NAME                                     READY     STATUS              RESTARTS   AGE
busybox-vlzh3                            0/1       ContainerCreating   0          14s

$ kubectl delete pod busybox-vlzh3 --grace-period=0


$ kubectl delete pods --all
pod "busybox-131cq" deleted
pod "busybox-136x9" deleted
pod "busybox-13f8a" deleted
pod "busybox-13svg" deleted
pod "busybox-1465m" deleted
pod "busybox-14uz1" deleted
pod "busybox-15raj" deleted
pod "busybox-160to" deleted
pod "busybox-16191" deleted


$ kubectl get pods --all-namespaces
NAMESPACE   NAME            READY     STATUS              RESTARTS   AGE
default     busybox-c9rnx   0/1       RunContainerError   0          23s

2
আপনি কি কোনওভাবে ভুল যুক্তি পেরিয়ে একটি প্রতিলিপি নিয়ন্ত্রণকারী তৈরি করতে পরিচালনা করেছেন? আপনি কি জন্য পেতে kubectl get all -o name?
গ্রাহাম ডাম্পলেটন

1
আপনি kubectl get eventsকি এই জিনিসগুলি তৈরি করছে তা পরীক্ষা করতে পারেন?
অনিরুধ রমনাথন

3
kubctl get rcকোনও প্রতিলিপি নিয়ন্ত্রণকারী তৈরি হয়েছিল কিনা তা দেখার চেষ্টা করুন । যদি তা হয় তবে তা মুছুন, তবে পোডগুলি মুছুন।
মিঃ

3
আপনি কুবেরনেটের কোন সংস্করণটি চালাচ্ছেন? আপনার কুবেরনেটসের সংস্করণটির উপর নির্ভর করে এটি? এটি অন্যরকম আচরণ করতে পারে। উদাহরণস্বরূপ 1.2 এর আগে এটি সর্বদা স্থাপনা তৈরি করে। kubectl get deployment
lwolf

19
যদি কেউ এখানে থেকে সমাপ্ত হয়: - মোতায়েন মোছা আমার জন্য সমস্যাটি সমাধান করেছে। kubectl delete deployment <deployment_name>। স্থাপনার নাম পেতে, করুনkubectl get deployments
ভাসানথ শ্রীরাম

উত্তর:


290

আপনাকে মোছার মোছা দরকার, যার ফলে পোডগুলি এবং প্রতিরূপ সেটগুলি মুছে ফেলা উচিত https://github.com/kubernetes/kubernetes/issues/24137

সমস্ত মোতায়েনের তালিকা করতে:

kubectl get deployments --all-namespaces

তারপরে মোতায়েন মুছতে:

kubectl delete -n NAMESPACE deployment DEPLOYMENT

যেখানে NAMESPACE হল সেই স্থানটির নাম স্থান এবং nameএটি ডিপ্লোয়েমেন্ট স্থাপনার।

কিছু ক্ষেত্রে এটি কোনও চাকরী বা ডেমনসেটের কারণেও চলতে পারে। নিম্নলিখিতটি দেখুন এবং তাদের উপযুক্ত মুছুন আদেশটি চালান।

kubectl get jobs

kubectl get daemonsets.app --all-namespaces

kubectl get daemonsets.extensions --all-namespaces

1
আপনি কীভাবে পরে ডিপ্লোয়মেন্টটি ফিরিয়ে আনবেন?
জামে

1
@ জামে আপনি kubectl createকমান্ডটি দিয়ে এটি আবার তৈরি করেন।
ইলিয়া গেরাসিমচুক

1
একটি স্থাপনা হতে হবে না। একটি কাজ হতে পারে। তাই নিশ্চিত করে দেখুনkubectl get jobs
বকি

কেবল মোতায়েনের জন্য নয়, একাধিক অবজেক্টের ধরণগুলি মুছতে চেষ্টা করুন:kubectl delete replicasets,subscriptions,deployments,jobs,services,pods --all -n <namespace>
নোম মানোস

19

এটি কোনও স্থাপনা, ডিমনসেট, স্টেটফুলসেট ... বা কী তা আবিষ্কার করার চেষ্টা করার পরিবর্তে (আমার ক্ষেত্রে এটি এমন একটি প্রতিলিপি নিয়ন্ত্রক ছিল যা নতুন পোডগুলিকে বিস্তৃত করে রেখেছিল :) এটি কী ছিল তা নির্ধারণ করার জন্য যে আমি চিত্রটি বিস্তৃত রেখেছি I এই আদেশ দিয়ে সমস্ত সংস্থান পেয়েছে:

kubectl get all

অবশ্যই আপনি সমস্ত নেমস্পেস থেকে সমস্ত সংস্থান পেতে পারেন:

kubectl get all --all-namespaces

অথবা আপনি পরিদর্শন করতে চাইলে নাম স্থানটি সংজ্ঞায়িত করুন:

kubectl get all -n NAMESPACE_NAME

একবার আমি দেখেছি যে প্রতিলিপিটি নিয়ন্ত্রণকারী আমার সমস্যার জন্য দায়ী, আমি এটি মুছে ফেলেছিলাম:

kubectl delete replicationcontroller/CONTROLLER_NAME


14

যদি আপনার পোডটির নামটির মতো নাম থাকে তবে name-xxx-yyyএটি একটি রেপ্লিকেশনস অ্যাপস দ্বারা নিয়ন্ত্রিত হতে পারে name-xxx, পোড মুছার আগে আপনার সেই প্রতিলিপিটি প্রথমে মুছে ফেলা উচিত

kubectl delete replicasets.apps name-xxx


1
ধন্যবাদ! আমার ক্ষেত্রে এটি একটি নির্দিষ্ট কাজ ছিল যা এটি পুনরায় তৈরি করছিল। সুতরাং:kubectl delete --all jobs -n <namespace>
ইক্লিয়ান

kubectl get replicasets.apps -n <namespace>(অথবা - সমস্ত নামস্থান) এর সাথে প্রতিরূপ সেটটি সন্ধান করুন
নোয়াম মানস

9

রাষ্ট্রীয় সেটগুলিও সন্ধান করুন

kubectl get sts --all-namespaces

একটি নেমস্পেসে সমস্ত রাষ্ট্রীয় সেট মুছতে to

kubectl --namespace <yournamespace> delete sts --all

একে একে মুছে ফেলতে

kubectl --namespace ag1 delete sts mssql1 
kubectl --namespace ag1 delete sts mssql2
kubectl --namespace ag1 delete sts mssql3

গিটলব-গিটালি আমার জন্য ছিল ধন্যবাদ! এটি এটি সমাধান।
কেভিন সি

6

কিছু ক্ষেত্রে শৃঙ্খলা মোছার পরেও পোডগুলি এখনও যায় না। সেক্ষেত্রে এগুলি মুছে ফেলতে বাধ্য করার জন্য আপনি নীচের আদেশটি চালাতে পারেন run

kubectl delete pods podname --grace-period=0 --force


কৌশলের ধরণে সেট করা থাকলে নিয়োগ, চাকরী বা অন্য কোনও ধরণের নিয়ামক দ্বারা পোড তৈরি হওয়ার পরে এটি সমস্যার সমাধান করবে না Recreate
এস কে ভেঙ্কট

5

এটি নেমস্পেসের সমস্ত শুঁটি, স্থাপনা, পরিষেবা এবং চাকরি সম্পর্কে তথ্য সরবরাহ করবে।

kubectl get pods,services, deployments, jobs

পোড হয় হয় স্থাপনা বা কাজ দ্বারা তৈরি করা যেতে পারে

kubectl delete job [job_name]
kubectl delete deployment [deployment_name]

আপনি যদি ডিপ্লোয়মেন্ট বা কাজ মুছে ফেলেন তবে পোড পুনরায় চালু করা বন্ধ করা যেতে পারে।


5

এখানে অনেক উত্তর একটি নির্দিষ্ট কে 8 এস অবজেক্ট মুছে ফেলতে বলে, তবে আপনি একের পরিবর্তে একাধিক অবজেক্ট মুছতে পারেন :

kubectl delete deployments,jobs,services,pods --all -n <namespace>

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

আমি যখন ওএলএম এবং এর সাবস্ক্রিপশনটি মুছলাম তখনই স্থাপনা, পরিষেবাদি এবং শুঁটি চলে গেল।

প্রথমে আপনার নেমস্পেসে সমস্ত কে 8 এস অবজেক্টের তালিকা করুন:

$ kubectl get all -n openshift-submariner

NAME                                       READY   STATUS    RESTARTS   AGE
pod/submariner-operator-847f545595-jwv27   1/1     Running   0          8d  
NAME                                  TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
service/submariner-operator-metrics   ClusterIP   101.34.190.249   <none>        8383/TCP   8d
NAME                                  READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/submariner-operator   1/1     1            1           8d
NAME                                             DESIRED   CURRENT   READY   AGE
replicaset.apps/submariner-operator-847f545595   1         1         1       8d

ওএলএম এর সাথে তালিকাভুক্ত নয় get all, তাই আমি এটি বিশেষভাবে অনুসন্ধান করি:

$ kubectl get olm -n openshift-submariner

NAME                                                      AGE
operatorgroup.operators.coreos.com/openshift-submariner   8d
NAME                                                             DISPLAY      VERSION
clusterserviceversion.operators.coreos.com/submariner-operator   Submariner   0.0.1 

এখন ওএলএম, সাবস্ক্রিপশন, স্থাপনা, প্রতিলিপি-সেটগুলি সহ সমস্ত বস্তু মুছুন:

$ kubectl delete olm,svc,rs,rc,subs,deploy,jobs,pods --all -n openshift-submariner

operatorgroup.operators.coreos.com "openshift-submariner" deleted
clusterserviceversion.operators.coreos.com "submariner-operator" deleted
deployment.extensions "submariner-operator" deleted
subscription.operators.coreos.com "submariner" deleted
service "submariner-operator-metrics" deleted
replicaset.extensions "submariner-operator-847f545595" deleted
pod "submariner-operator-847f545595-jwv27" deleted

বস্তুগুলি আবার তালিকাবদ্ধ করুন - সমস্ত চলে গেছে:

$ kubectl get all -n openshift-submariner
No resources found.

$ kubectl get olm -n openshift-submariner
No resources found.

4

ম্যানুয়ালি পড মোছার পরেও যখন পডটি স্বয়ংক্রিয়ভাবে পুনরায় তৈরি হচ্ছে, তখন সেই পোডগুলি ডিপ্লোমেন্ট ব্যবহার করে তৈরি করা হয়েছে। আপনি যখন কোনও স্থাপনা তৈরি করেন, এটি স্বয়ংক্রিয়ভাবে রেপ্লিকাসেট এবং পডগুলি তৈরি করে। আপনি মোস্তাকী স্ক্রিপ্টে আপনার পোডের কতগুলি প্রতিলিপি উল্লেখ করেছেন তার উপর নির্ভর করে এটি প্রাথমিকভাবে এই সংখ্যাটি শুঁটি তৈরি করবে। আপনি যখন কোনও পোড ম্যানুয়ালি মুছে ফেলার চেষ্টা করবেন, এটি স্বয়ংক্রিয়ভাবে সেই পোড আবার তৈরি করবে।

হ্যাঁ, কখনও কখনও আপনাকে জোর দিয়ে শুঁটি মুছতে হবে। তবে এই ক্ষেত্রে ফোর্স কমান্ড কাজ করে না।


আমি একটি সতর্কতা পেয়েছি যখন আমি এটি চেষ্টা করি যে শুঁটি একটি জম্বি প্রক্রিয়া হিসাবে বেঁচে থাকতে পারে তাই আমি যা চাইতাম তা না ..
চ্যানোচ

4

এনএস অপসারণের পরিবর্তে আপনি প্রতিলিপি সরিয়ে দেওয়ার চেষ্টা করতে পারেন

kubectl get rs --all-namespaces

তারপরে রেপ্লিকাসেটটি মুছুন

kubectl delete rs your_app_name

2

একটি ইন্টারেক্টিভ টিউটোরিয়াল নেওয়ার পরে আমি একগুচ্ছ পোড, পরিষেবা, মোতায়েন দিয়ে শেষ করেছি:

me@pooh ~ > kubectl get pods,services
NAME                                       READY   STATUS    RESTARTS   AGE
pod/kubernetes-bootcamp-5c69669756-lzft5   1/1     Running   0          43s
pod/kubernetes-bootcamp-5c69669756-n947m   1/1     Running   0          43s
pod/kubernetes-bootcamp-5c69669756-s2jhl   1/1     Running   0          43s
pod/kubernetes-bootcamp-5c69669756-v8vd4   1/1     Running   0          43s

NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
service/kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   37s
me@pooh ~ > kubectl get deployments --all-namespaces
NAMESPACE     NAME                  DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
default       kubernetes-bootcamp   4         4         4            4           1h
docker        compose               1         1         1            1           1d
docker        compose-api           1         1         1            1           1d
kube-system   kube-dns              1         1         1            1           1d

সবকিছু পরিষ্কার করতে, ভাল delete --allকাজ করেছেন:

me@pooh ~ > kubectl delete pods,services,deployments --all
pod "kubernetes-bootcamp-5c69669756-lzft5" deleted
pod "kubernetes-bootcamp-5c69669756-n947m" deleted
pod "kubernetes-bootcamp-5c69669756-s2jhl" deleted
pod "kubernetes-bootcamp-5c69669756-v8vd4" deleted
service "kubernetes" deleted
deployment.extensions "kubernetes-bootcamp" deleted

এটি আমাকে একটি খালি কুবারনেটস গোষ্ঠীটি দিয়ে রেখেছিল (যা আমি মনে করি):

me@pooh ~ > kubectl get pods,services,deployments
NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
service/kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   8m

1

আপনার যদি এমন একটি কাজ থাকে যা চলমান অব্যাহত থাকে, আপনাকে কাজটি সন্ধান করতে হবে এবং এটি মুছতে হবে:

kubectl get job --all-namespaces | grep <name>

এবং

kubectl delete job <job-name>


1

kubectl get replicasetsবয়স বা সময়ের উপর নির্ভর করে আপনি পুরানো স্থাপনার জন্য চেক করতে পারেন

আপনি যদি একই চলমান অ্যাপ্লিকেশনের চলমান পড মুছতে চান তবে সময়ের ভিত্তিতে পুরানো স্থাপনাকে মুছুন

kubectl delete replicasets <Name of replicaset>

1

আমিও সমস্যার মুখোমুখি হয়েছি, মোতায়েন মোছার জন্য আমি নীচের কমান্ডটি ব্যবহার করেছি।

kubectl delete deployments DEPLOYMENT_NAME

তবে এখনও পোডগুলি পুনরায় তৈরি করা হচ্ছে, সুতরাং আমি নীচের কমান্ডটি ব্যবহার করে রেপ্লিকা সেটটি পরীক্ষা করলাম

kubectl get rs

তারপরে প্রতিলিপিটি 1 থেকে 0 এ সম্পাদনা করুন

kubectl edit rs REPICASET_NAME

1

জিজ্ঞাসা করা প্রশ্নের মূল কারণ হ'ল ডিপ্লোয়মেন্ট / জব / প্রতিলিপি strategy->typeনির্দিষ্ট বৈশিষ্ট্য যা শুঁটি নষ্ট হয়ে যাওয়ার পরে কী হবে তা নির্ধারণ করে (হয় স্পষ্টভাবে বা স্পষ্টভাবে)। আমার ক্ষেত্রে, এটি ছিল Recreate

@ যাযাবরের জবাব অনুসারে , ডিভাইস / চাকুরী / প্রতিলিপি মুছে ফেলা হ'ল মারাত্মক কম্বোসের সাথে পরীক্ষা নিরীক্ষা করার আগে কোনও অল্প বয়স্ক ব্যবহারকারী হিসাবে জড়িত হওয়া সহজ সমাধান।

ডিবাগিংয়ে ঝাঁপ দেওয়ার আগে দৃশ্যের ক্রিয়াগুলি পিছনে বুঝতে নিম্নলিখিত কমান্ডগুলি ব্যবহার করে দেখুন:

kubectl get all -A -o name
kubectl get events -A | grep <pod-name>

1

আমার ক্ষেত্রে আমি যেমন YAML ফাইলের মাধ্যমে মোতায়েন করেছি kubectl apply -f deployment.yamlএবং সমাধানটি মনে হচ্ছে এটির মাধ্যমে মুছবেkubectl delete -f deployment.yaml


0

আমি একটি অনুরূপ সমস্যা ভোগ করেছি: স্থাপনা ( kubectl delete deploy <name>) মোছার পরে , পোডগুলি "চলমান" রাখে এবং যেখানে মুছে ফেলার পরে স্বয়ংক্রিয়ভাবে পুনরায় তৈরি হয় ( kubectl delete po <name>)।

দেখা গেছে যে সম্পর্কিত প্রতিলিপি সেটটি কোনও কারণে স্বয়ংক্রিয়ভাবে মোছা হয়নি, এবং ( kubectl delete rs <name>) মুছে ফেলার পরে, পোডগুলি মুছা সম্ভব হয়েছিল।


0

রাষ্ট্রীয় সেট (বা পরিষেবা, চাকুরী ইত্যাদি) রয়েছে এমন মোতায়েনের সাথে আপনি এই আদেশটি ব্যবহার করতে পারেন:

এই কমান্ডটি সুনির্দিষ্টভাবে চলমান যে কোনও কিছুকে সমাপ্ত করে <NAMESPACE>

kubectl -n <NAMESPACE> delete replicasets,deployments,jobs,service,pods,statefulsets --all

এবং জোরালো

kubectl -n <NAMESPACE> delete replicasets,deployments,jobs,service,pods,statefulsets --all --cascade=true --grace-period=0 --force
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.