K8s 일반적인 문제 해결 및 솔루션

1. k8s 클러스터에서 노드를 자주 다시 시작한 후 다음과 같은 문제가 발생할 수 있습니다.

1. 포드 정보를 확인할 때 다음 오류를 발견했습니다: open /run/flannel/subnet.env: no such file ordirectory

마스터 노드를 포함한 각 노드에 /run/flannel/subnet.env가 있는지 확인합니다. 내용은 다음과 유사해야 합니다.

FLANNEL_NETWORK=10.244.0.0/16
FLANNEL_SUBNET=10.244.0.1/24
FLANNEL_MTU=1450
FLANNEL_IPMASQ=true

이 파일이 없는 노드가 있는 경우 복사본을 만들어 다시 배포하면 이 오류가 보고되지 않습니다.

2. 서비스를 배포하고 서비스가 노출될 수 없으며 서비스 간 호출이 차단되는지 확인합니다.

먼저 ifconfig를 실행하여 다음 노드의 네트워크 상태를 확인합니다.
여기에 이미지 설명을 삽입하세요.
두 개의 게이트웨이가 있는 것을 확인할 수 있으며, 네트워크에 문제가 있는 경우 먼저 두 네트워크 세그먼트가 일치하는지 확인할 수 있습니다.

K8s 배포시 flannel 네트워크 플러그인이나 calico 플러그인을 사용하는데, 재시작이 자주 발생하거나 실행 시간이 길어지면 서비스 배포 후 서비스를 찾을 수 없는 경우 해결해 볼 수 있습니다. 다음과 같은 방법으로.

建议:在生产场景中,建议提前规划好k8s的网络,如果中途更换网络插件,产生的影响会比较大。

네트워크 플러그인을 재배포하십시오. 교체하지 않는 것이 좋습니다. 이전 플러그인을 계속 사용할 수 있습니다. 재배포만 하면 됩니다.

첫 번째 단계는 마스터 노드에서 플란넬을 삭제하는 것입니다.
kubectl delete -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
두 번째 단계는 노드 노드에 플란넬 네트워크가 남긴 파일을 정리하는 것입니다.
ifconfig cni0 down
ip link delete cni0
ifconfig flannel.1 down
ip link delete flannel.1
rm -rf /var/lib/cni/
rm -f /etc/cni/net.d/*

위 작업을 수행한 후 kubelet을 다시 시작 하고 이전에 배포한 모든 애플리케이션을 다시 시작하면 서비스를 검색할 수 있습니다. 그것도 약간의 트릭이군요. 어쨌든 문제는 해결되었습니다.

추천

출처blog.csdn.net/bacawa/article/details/129122366