Kubernetes - 포드가 컨테이너에 남아 생성 상태
나는 쿠베르네테스가 아직 배울 것이 많은 모든 것에 익숙하지 않다.
두 노드 Kubernetes 클러스터를 생성하고 두 노드(마스터 및 작업자)가 작업을 수행할 준비가 되어 있습니다.
[monkey@k8s-dp1 nginx-test]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-dp1 Ready master 2h v1.9.1
k8s-dp2 Ready <none> 2h v1.9.1
또한, 모든 쿠버네티스 포드는 괜찮아 보입니다.
[monkey@k8s-dp1 nginx-test]# kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system etcd-k8s-dp1 1/1 Running 0 2h
kube-system kube-apiserver-k8s-dp1 1/1 Running 0 2h
kube-system kube-controller-manager-k8s-dp1 1/1 Running 0 2h
kube-system kube-dns-86cc76f8d-9jh2w 3/3 Running 0 2h
kube-system kube-proxy-65mtx 1/1 Running 1 2h
kube-system kube-proxy-wkkdm 1/1 Running 0 2h
kube-system kube-scheduler-k8s-dp1 1/1 Running 0 2h
kube-system weave-net-6sbbn 2/2 Running 0 2h
kube-system weave-net-hdv9b 2/2 Running 3 2h
그러나 클러스터에 새 배포를 생성하려고 하면 배포가 생성되지만 해당 포드가 적절한 실행 상태로 전환되지 않습니다(예:
[monkey@k8s-dp1 nginx-test]# kubectl apply -f https://k8s.io/docs/tasks/run-application/deployment.yaml
deployment "nginx-deployment" created
[monkey@k8s-dp1 nginx-test]# kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
default nginx-deployment-569477d6d8-f42pz 0/1 ContainerCreating 0 5s
default nginx-deployment-569477d6d8-spjqk 0/1 ContainerCreating 0 5s
kube-system etcd-k8s-dp1 1/1 Running 0 3h
kube-system kube-apiserver-k8s-dp1 1/1 Running 0 3h
kube-system kube-controller-manager-k8s-dp1 1/1 Running 0 3h
kube-system kube-dns-86cc76f8d-9jh2w 3/3 Running 0 3h
kube-system kube-proxy-65mtx 1/1 Running 1 2h
kube-system kube-proxy-wkkdm 1/1 Running 0 3h
kube-system kube-scheduler-k8s-dp1 1/1 Running 0 3h
kube-system weave-net-6sbbn 2/2 Running 0 2h
kube-system weave-net-hdv9b 2/2 Running 3 2h
문제가 무엇인지 파악하는 방법은 잘 모르겠지만 예를 들어 a를 실행하면 다음과 같은 의심스러운 이벤트가 표시됩니다.
<invalid> <invalid> 1 nginx-deployment-569477d6d8-f42pz.15087c66386edf5d Pod
Warning FailedCreatePodSandBox kubelet, k8s-dp2 Failed create pod sandbox.
하지만 나는 여기서 어디로 가야 할지 모르겠다. 나는 또한 nginx 도커 이미지 자체가 에 나타나지 않는다는 것을 알 수 있다.
문제에 대해 자세히 알아보려면 어떻게 해야 합니까? 내가 쿠버네티스 조직에서 뭔가 근본적인 것을 놓쳤나요?
--- 새로운 정보 ---
도움이 될 경우의 배경 정보를...
Kubernetes 노드가 Cent에서 실행 중입니다.윈도우즈 10 Hyper-v에서 호스팅되는 OS 7 VM
--- 새로운 정보 ---
실행 중에는 다음 경고가 표시됩니다.
Warning NetworkNotReady 1m kubelet, k8s-dp2 network is not ready: [runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized]
--- 새로운 정보 ---
업무 시간이 끝난 다음 날 밤 Kubernetes를 실행하는 Hyper-v VM의 전원을 끄고 오늘 아침 사무실로 돌아오면서 Kubernetes VM의 전원을 다시 켜서 약 15분 동안 다음 명령을 실행했습니다.
이러한 nginx 포드에 대해서는 어제와 동일하게 표시되었지만 지금은 명령어가 nginx 포드를 포함한 모든 포드를 표시하고 있습니다. 즉, 마스터 노드와 작업자 노드 VM을 모두 완전히 재부팅한 후 문제가 자동으로 해결되었습니다.
이제 다시 전체 재부팅을 다시 수행했는데 모든 포드가 실행 중으로 표시되어 좋습니다.
자세한 정보를 보려면 사용
Kubernetes 마스터 노드와 Kubernetes 작업자 노드를 실행하는 두 VM을 모두 전체 재부팅하면 포드가 모두 다음과 같이 표시됩니다(참고: 처음 재부팅한 후 문제의 포드가 상태로 전환되는 데 약 15-20분이 걸렸고 이후 재부팅 시 문제의 포드가 상대적으로 훨씬 빠른 3-5분이 소요되었습니다).
노력하다
를 사용하면 모든 이벤트가 표시됩니다. 경우에 따라 배포가 원격에서 도커 이미지를 계속 가져올 수 있으므로 상태는 계속 다음과 같이 표시됩니다.
나는 어제 같은 문제에 직면했다. ContainerCreating 상태에서 이러한 포드를 설명할 때 문제는 CNI, 실패 및 포드가 ContainerCreating 상태를 유지하는 것이었습니다. 그래서 나는 컨트롤 플레인에서 CNI를 삭제하고 재배치한다. 모든 포드는 1분 이내에 작동 상태로 변경됩니다.
디팟을 삭제할 수 있습니다. 디팟은 자동으로 다시 생성됩니다.
kubectl delete pod -n namespace podname
이 경우 배포 네임스페이스에 Secret 또는 Say ConfigMap이 누락되었기 때문입니다.
배포에서 명령을 실행하여 진행 중인 이벤트를 확인하거나 배포가 회전하는 포드에서 명령을 실행할 수 있습니다.
클러스터에 리소스가 부족할 수 있습니다. 실행 중인 포드에서 사용 중인 명령을 확인하여 포드 중 하나가 리소스를 모두 사용하는지 확인합니다.
이것이 충분히 도움이 되었으면 좋겠다.
동일한 문제가 있었지만 내 쪽의 문제는 클러스터가 이미지를 가져오는 데 너무 많은 시간이 걸린다는 것이었습니다. 빠른 클러스터 다시 시작이 프로세스를 더 빠르게 만드는 데 도움이 될 수 있습니다.
이 명령어가 ContainerCreating Status와 관련된 문제를 찾는 데 많은 도움이 되었다는 것을 공유합니다.
kubectl get events --sort-by=.metadata.creationTimestamp
오류:
kubectl -n 데모 포드 로그 kaniko-pod -- 서버에서 오류를 추적합니다(BadRequest): 포드의 컨테이너 "kaniko-demo"가 시작 대기 중입니다: 컨테이너 생성
kubectl apply -f /home/filename/filename/filename-rewayy/k3s/kubnetes-deployment-01.vilename/filename-filename-pod 변경되지 않은 포드/kaniko-pod 생성됨
'개발하자' 카테고리의 다른 글
Python: 상속된 부모 클래스 메서드 호출 실패 (0) | 2022.11.23 |
---|---|
Typescript에서 암시적으로 튜플 만들기 (0) | 2022.11.23 |
일반 유형을 사용하여 스크립트 래핑 함수를 입력합니다. (0) | 2022.11.22 |
더블 클릭 시 아나콘다 주피터 노트북에서 .ipynb를 엽니다(macOS). (0) | 2022.11.21 |
테라폼을 이전 버전으로 다운그레이드하는 방법은? (0) | 2022.11.21 |