다시는 Kubernetes 포드

그 과정에서 사용하는 고정 표시기, 우리는 사용할 수 docker restart {container_id}있지만,는 Kubernetes 컨테이너를 다시 시작 다시 시작 명령 (전혀하지 않았다  kubectl restart {podname}), 그리고 때로는 우리가 우리가 포드를 다시 시작해야 리드,하지만 좋은 방법, 버그 포드가 예기치 않게 종료 표시, 특히 어떠한 경우 YAML 파일에서, 그래서 포드를 다시 시작하려면 다음 몇 가지 방법을 요약.

0x01로 1

최신 YAML 파일.

이 YAML 파일 곳은 경우에 직접 사용할 수있는 kubectl replace --force -f xxxx.yamlAPI의 객체가 다시 시작의 목적을 달성하기 위해, 포드의 교체를 강제로. 도는 다음과 같습니다 :
의 image.png

방법 2는 0x02

배포 개체를 사용하여 어떤 YAML 파일이 없습니다 만.

  1. kubectl scale deployment esb-admin --replicas=0 -n {namespace}
  2. kubectl scale deployment esb-admin --replicas=1 -n {namespace}

포드 배포 오브젝트가 직접 조작의 목적지만 조작 ReplicaSet 객체되지 않으며, 목적은 포드의 템플릿 정의 및 조성물의 매수가 ReplicaSet 때문에. 이 명령은 0 ReplicaSet의 수를 확장 한 다음 1로 확장 할 수 있습니다 그래서, 다음, 포드가 다시 시작됩니다.

방법 3 0x03으로

YAML은 파일 만 배포를 사용하여 개체를하지 않았다.

명령을 사용하여 kubectl delete pod {podname} -n {namespace}
이 방법은 매우 간단하고 원유, 그리고는 Kubernetes는 포드 API 객체가 기대와 일치하지 않는, 그래서 다음 삭제 선언 API이기 때문에 직접 포드를 삭제하고, 자동으로 다시 만들 포드의 기대에 부합 남아 있지만합니다 객체 ReplicaSet가 포드를 많이 관리하는 경우 사용자가 사용할 수 있도록, 수동, 매우 귀찮은 것, 하나를 제거하는 kubectl delete replicaset {rs_name} -n {namespace}ReplicaSet을 삭제하는 명령을

방법 4를 0x04

어떤 YAML 파일, 포드는 객체를 직접하지 않습니다.

명령을 사용하여kubectl get pod {podname} -n {namespace} -o yaml | kubectl replace --force -f -

이 경우, 이후 직접 삭제하거나 규모를 0으로하지만, 위의 명령에 의해 다시 시작할 수 있습니다되지 않고, 거기에 더 YAML 파일입니다과 포드 개체를 시작합니다. 이 명령의 의미는 현재 실행의 YAML 문 포드를 얻고,에 출력 파이프를 리디렉션하는 것입니다  kubectl replace다시 시작의 목적을 달성하기 위해 명령의 표준 입력.

 

편집 :

https://segmentfault.com/a/1190000020675199?utm_source=tag-newest

추천

출처www.cnblogs.com/xiaoyongyang/p/11957726.html