멈춘 nfs 연결을 닫는 방법

멈춘 nfs 연결을 닫는 방법

외부 nfs 서버를 사용하여 홈 디렉터리를 kubernetes 컨테이너에 마운트합니다. 컨테이너가 제거될 때 nfs 연결이 "닫기 대기 중" 상태에서 멈추는 경우가 있습니다.

그 결과 컨테이너가 위치한 노드는 엄청난 iowait 시간 값을 생성하게 됩니다. 그러면 노드가 다시 시작될 때까지 모든 컨테이너가 nfs 디스크 성능의 영향을 받습니다.

문제가 있는 설치를 수동으로 제거할 수 있었지만 iowait가 다운되지 않았습니다.

문제 진단을 돕기 위해 iotop을 설치했지만 Python 오류가 발생합니다.

두 가지 질문:

  1. 재부팅하지 않고 이 문제를 해결할 수 있는 방법이 있습니까? 이 문제는 우리가 알지 못하는 너무 많은 고객에게 영향을 미치고 있습니까?

  2. 먼저 이런 일이 발생하는 이유와 해결 방법을 생각해 보세요. nfs 서버가 동기화를 위해 구성되었습니다. 비동기식으로 전환하면 이 문제가 해결됩니까?

나는 이것이 kubernetes 문제라고 생각하지 않지만 kubernetes/nfs의 한 가지 단점은 어쨌든 클라이언트 연결을 구성할 수 없다는 것입니다.

답변1

Kubernetes에서 NFS 마운트 문제(다시 시작하지 않고 I/O 대기 시간이 길어짐)를 해결하려면 NFS 마운트 지점을 강제로( umount -f) 또는 느리게( ) 마운트 해제 해 볼 수 있습니다 . umount -lNFS 서버 구성을 에서 로 전환하면 sync성능 async이 향상될 수 있지만 데이터 무결성 위험이 발생합니다. 특정 마운트 옵션(예: nfsvers=4.1, rsize=1048576wsize=1048576)을 사용하여 Kubernetes에서 영구 볼륨(PV) 정의를 향상하면 잠재적으로 성능 문제를 완화할 수 있습니다. 예를 들어 PV 구성에는 다음이 포함됩니다.

nfs:
  path: /path/to/dir
  server: nfs-server.example.com
  mountOptions:
    - hard
    - nfsvers=4.1
    - rsize=1048576
    - wsize=1048576
    - timeo=14

Ceph 또는 GlusterFS와 같은 대체 스토리지 솔루션을 모니터링하고 탐색하는 것과 결합된 이 접근 방식은 Kubernetes 환경에서 NFS 관련 성능 저하를 완화하도록 설계되었습니다.

관련 정보