내 작업자 노드에 NetworkUnavailable
오류가 표시되는 이유는 무엇입니까?
가상 프라이빗 클라우드 클래식 인프라 Satellite
마스터 또는 작업자 노드를 업데이트할 때 작업자 노드는 Node network unavailable
상태가 됩니다.
작업자 노드는 calico-node
팟 (Pod) 이 종료될 때마다 NetworkUnavailable
또는 Node network unavailable
상태가 될 수 있습니다. 이는 Calico 패치 업데이트 중에 발생할 수 있지만 애플리케이션 가용성에 영향을 주지 않아야 합니다.
Calico 가 업데이트되면 node.kubernetes.io/network-unavailable:NoSchedule
오염이 작업자 노드에 추가되고 Node network unavailable
조건이 True
가 됩니다. 이러한 두 조건 모두 Calico 가 다시 시작되면 지워지므로 일반적으로 몇 초만 소요됩니다.
이 경우 다음과 유사한 오류 메시지가 표시될 수 있습니다.
[Kubernetes] Node network unavailable is Triggered on kubernetes.node.name = 10.184.XXX.XXX
[Kubernetes] Node network unavailable is Triggered on kubernetes.node.name = 10.184.XXX.XXX
[Kubernetes] Node network unavailable is Triggered on kubernetes.node.name = 10.184.XXX.XXX
때때로 다시 시작하는 데 시간이 더 오래 걸릴 수 있습니다. 거의 모든 경우에 다시 시작은 작업자 노드 네트워크 문제를 방지할 수 있을 정도로 빠르게 수행됩니다. 그러나 Calico 다시 시작이 지연되어 네트워크 인터럽트가 발생할 수 있는 상황이 있습니다. 이러한 경우 노드 네트워크 사용 불가능 감염 및 조건은 Calico 및 노드가 수정될 때까지 새 앱이 새 노드에 배치되지 않도록 디자인됩니다. Calico 업데이트는 노드 문제가 있는 경우 전체 애플리케이션 영향을 최소화하기 위해 매우 제어된 방식으로 롤아웃됩니다.
IBM Cloud Monitoring 을 사용하여 Node network unavailable
상태 모니터
IBM Cloud Monitoring과 같은 애플리케이션을 모니터하는 서비스를 사용하여 작업자 노드가 Node network unavailable
상태가 되는 경우에 대한 경보를 구성하고 이 상황이 발생할 때마다 계수할 수 있습니다. 또한 임계값을 구성하고 루틴 Calico 패치 중에 작업자 노드가 Node network unavailable
상태에 있을 때 허용되도록 경보를 튜닝할 수
있습니다.
IBM Cloud Monitoring 경보를 설정할 때 다음 시나리오를 고려하십시오.
Node network unavailable
경보는calico-node
팟 (Pod) 이Running
상태를 달성하는 데 실패하고 해당 컨테이너 다시 시작 수가 계속해서 증가할 때 문제가 될 수 있습니다.- 작업자 노드는 오랜 시간 동안
Node network unavailable
상태로 유지됩니다.
작업자 업데이트 또는 대체 후에 calico-node
팟 (Pod) 이 여전히 Red Hat OpenShift VPC 클러스터에서 시작되지 않는 경우가 있습니다. calico_node
팟 (Pod) 이 Red Hat OpenShift VPC 클러스터에서 시작할 수 없는 상태가 될 수 있습니다. 이는 IKS 또는 클래식 클러스터에서 문제가 되지 않습니다. 이는 sysdig-admission-controller-webhook
가 설치되어 있고 작업자 업데이트 또는 대체를 수행하려고 할 때 발생할 수 있습니다. 이는 다음과 같은 이유로 발생
- VPN 클라이언트 팟 (Pod) 이 시작될 때 새 작업자로 이동됩니다.
- 새 작업자의
calico-node
가 시작되지만apiserver
호출을 작성하고 2초후에 제한시간이 초과되므로 고정됩니다. - 그런 다음
apiserver
호출은 VPN 클라이언트 팟 (Pod) 이 새 노드에서 시작하려고 시도했기 때문에 실패하는 웹훅을 호출하려고 시도합니다.calico-node
가 아직 시작되지 않았기 때문에 VPN 노드가 이를 성공적으로 수행할 수 없습니다.
요약하면, calico-node
팟 (Pod) 시작은 작동하는 웹훅에 따라 다르고, 웹훅은 VPN 클라이언트 팟 (Pod) 에 따라 다르며, VPN 클라이언트 팟 (Pod) 은 calico-node
시작에 따라 다릅니다. 시스템이 순환 종속성에 고정되어 있습니다. 성공적으로 배치된 calico-node
팟 (Pod) 에서 로그를 수집할 수 있는 경우 다음과 같은
오류가 표시될 수 있습니다.
2022-09-08 07:13:19.719 [WARNING][9] startup/utils.go 228: Failed to set NetworkUnavailable; will retry error=Patch "https://172.21.0.1:443/api/v1/nodes/10.242.64.17/status?timeout=2s": net/http: request canceled (Client.Timeout exceeded while awaiting headers)
calico-node
에 대한 임시 해결책
다음 방법 중 하나를 사용하여 문제를 해결하고 calico-node
팟 (Pod) 을 다시 실행할 수 있습니다.
- 시스템에서
sysdig-admission-controller-webhook
를 제거하십시오. sysdig-admission-controller-webhook
를 수정하고 제한시간을 2초미만으로 변경하십시오.sysdig-admission-controller-webhook
를 수정하여 적절한 네임스페이스로 범위를 지정하고calico-system
와 같은 시스템에 중요한 네임스페이스를 사용하지 마십시오.- 새 노드를 연결하지만 드레인하지는 마십시오. VPN팟 (Pod) 을 삭제하고 다른 작업자에서 시작될 때까지 기다리십시오. 노드의 연결을 해제하십시오.
이전 임시 해결책을 수행한 후 calico-node
팟 (Pod) 을 시작할 수 있습니다.