私はもともと、CrashBackoffLoopでスタックしているように見えるジョブを実行しようとしていました。これがサービスファイルでした:
apiVersion: batch/v1
kind: Job
metadata:
name: es-setup-indexes
namespace: elk-test
spec:
template:
metadata:
name: es-setup-indexes
spec:
containers:
- name: es-setup-indexes
image: appropriate/curl
command: ['curl -H "Content-Type: application/json" -XPUT http://elasticsearch.elk-test.svc.cluster.local:9200/_template/filebeat -d@/etc/filebeat/filebeat.template.json']
volumeMounts:
- name: configmap-volume
mountPath: /etc/filebeat/filebeat.template.json
subPath: filebeat.template.json
restartPolicy: Never
volumes:
- name: configmap-volume
configMap:
name: elasticsearch-configmap-indexes
ジョブを削除しようとしましたが、次のコマンドを実行した場合にのみ機能します。
kubectl delete job es-setup-indexes --cascade=false
その後、実行中に気づきました:
kubectl get pods -w
大量のポッドがエラー状態になり、クリーンアップする方法がわかりません。 getpodsを実行したときの出力のほんの一部を次に示します。
es-setup-indexes-zvx9c 0/1 Error 0 20h
es-setup-indexes-zw23w 0/1 Error 0 15h
es-setup-indexes-zw57h 0/1 Error 0 21h
es-setup-indexes-zw6l9 0/1 Error 0 16h
es-setup-indexes-zw7fc 0/1 Error 0 22h
es-setup-indexes-zw9bw 0/1 Error 0 12h
es-setup-indexes-zw9ck 0/1 Error 0 1d
es-setup-indexes-zwf54 0/1 Error 0 18h
es-setup-indexes-zwlmg 0/1 Error 0 16h
es-setup-indexes-zwmsm 0/1 Error 0 21h
es-setup-indexes-zwp37 0/1 Error 0 22h
es-setup-indexes-zwzln 0/1 Error 0 22h
es-setup-indexes-zx4g3 0/1 Error 0 11h
es-setup-indexes-zx4hd 0/1 Error 0 21h
es-setup-indexes-zx512 0/1 Error 0 1d
es-setup-indexes-zx638 0/1 Error 0 17h
es-setup-indexes-zx64c 0/1 Error 0 21h
es-setup-indexes-zxczt 0/1 Error 0 15h
es-setup-indexes-zxdzf 0/1 Error 0 14h
es-setup-indexes-zxf56 0/1 Error 0 1d
es-setup-indexes-zxf9r 0/1 Error 0 16h
es-setup-indexes-zxg0m 0/1 Error 0 14h
es-setup-indexes-zxg71 0/1 Error 0 1d
es-setup-indexes-zxgwz 0/1 Error 0 19h
es-setup-indexes-zxkpm 0/1 Error 0 23h
es-setup-indexes-zxkvb 0/1 Error 0 15h
es-setup-indexes-zxpgg 0/1 Error 0 20h
es-setup-indexes-zxqh3 0/1 Error 0 1d
es-setup-indexes-zxr7f 0/1 Error 0 22h
es-setup-indexes-zxxbs 0/1 Error 0 13h
es-setup-indexes-zz7xr 0/1 Error 0 12h
es-setup-indexes-zzbjq 0/1 Error 0 13h
es-setup-indexes-zzc0z 0/1 Error 0 16h
es-setup-indexes-zzdb6 0/1 Error 0 1d
es-setup-indexes-zzjh2 0/1 Error 0 21h
es-setup-indexes-zzm77 0/1 Error 0 1d
es-setup-indexes-zzqt5 0/1 Error 0 12h
es-setup-indexes-zzr79 0/1 Error 0 16h
es-setup-indexes-zzsfx 0/1 Error 0 1d
es-setup-indexes-zzx1r 0/1 Error 0 21h
es-setup-indexes-zzx6j 0/1 Error 0 1d
kibana-kq51v 1/1 Running 0 10h
しかし、私が仕事を見ると、私はもうそれに関連するものは何も得られません:
$ kubectl get jobs --all-namespaces
NAMESPACE NAME DESIRED SUCCESSFUL AGE
kube-system configure-calico 1 1 46d
また、kubectlの応答が非常に遅いように見えることにも気づきました。ポッドが継続的に再起動しようとしているのか、壊れた状態にあるのかはわかりませんが、kubernetesでこのような別の問題が発生していないため、トラブルシューティングの方法を教えていただければ幸いです。
久部情報:
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"6", GitVersion:"v1.6.1", GitCommit:"b0b7a323cc5a4a2019b2e9520c21c7830b7f708e", GitTreeState:"clean", BuildDate:"2017-04-03T20:44:38Z", GoVersion:"go1.7.5", Compiler:"gc", Platform:"linux/AMD64"}
Server Version: version.Info{Major:"1", Minor:"6", GitVersion:"v1.6.1", GitCommit:"b0b7a323cc5a4a2019b2e9520c21c7830b7f708e", GitTreeState:"clean", BuildDate:"2017-04-03T20:33:27Z", GoVersion:"go1.7.5", Compiler:"gc", Platform:"linux/AMD64"}
ここにそれを修正する簡単な方法があります:)
kubectl get pods | grep Error | cut -d' ' -f 1 | xargs kubectl delete pod
編集:フラグを追加-a
古いバージョンのk8sを使用している場合
kubectl delete pods --field-selector status.phase=Failed -n <your-namespace>
...名前空間で失敗したポッドをクリーンアップします。
私は通常、このコマンドですべてのError
ポッドを削除します。 kubectl delete pod `kubectl get pods --namespace <yournamespace> | awk '$3 == "Error" {print $1}'` --namespace <yournamespace>
解決策は、コメントで述べた@ johnharris85のとおりでした。すべてのポッドを手動で削除する必要がありました。それを行うために、私は以下を実行しました:
kubectl get pods -w | tee all-pods.txt
これですべてのポッドがダンプされ、必要なものだけをフィルタリングして削除しました。
kubectl delete pod $(more all-pods.txt | grep es-setup-index | awk '{print $1}')
注:約9292個のポッドがありました。それらをすべて削除します。