기본 콘텐츠로 건너뛰기

라벨이 storage인 게시물 표시

[Kubernetes-Storage] 정상적으로 동작하던 Dynamic NFS Provisioner 오류 해결하기 (SelfLink 관련)

# 정상적으로 동작하던 Dynamic NFS Provisioning에서 오류가 발생하는 문제 해결 > **참고** > > --- > > 쿠버네티스 Kubernetes 클러스터에 동적으로 NFS Network File System Provisioning 에 대한 글은 아래 게시글 참고 > > - [CentOS 8에 NFS 구성하기](https://ccambo.blogspot.com/2020/12/centos-nfs-centos-8-nfs.html) > - [Kubernetes Cluster에 NFS 기반의 Dynamic Storage Provision 설정하기](https://ccambo.blogspot.com/2021/01/kubernetes-storage-centos-8-dynamic-nfs.html) ## 상황 위의 게시글을 기준으로 NFS Provisioning 을 잘 사용하고 있었다. 추가로 쿠버네티스 클러스터를 구성해서 테스트를 해야하는 작업이 생겼고, 최신 버전의 쿠버네티스로 설치를 진행했다. 동일하게 NFS Provisioning 설정을 했고, 애플리케이션을 배포했을 때 계속 `Pending` 상태로 진행되지 않는 상황이 발생해서 로그 정보들을 통해서 검증하기 시작했다. 결론은 아래와 같이 `nfs-client-provisioner` 파드에서 오류가 발생하는 것으로 확인할 수 있었다. ```bash 2021-06-09T06:31:34.335294986Z E0609 06:31:34.335012 1 controller.go:682] Error watching for provisioning success, can't provision for claim "default/test-web-0": events is forbidden: User "system:serviceaccount:default:nfs-provisioner" cannot list

[Kubernetes-Storage] CentOS 8에 Dynamic NFS Client Provisioner 구성하기

[Kubernetes - Storage] How to configure a dynamic storage provisioner for Kubernetes using a network file system on CentOS 8 참고 이 문서는 Network File System을 CentOS 8에 설치하여 NFS Server로 운영하면서 Kubernetes의 PVC (Perssistent Volume Claim) - StorageClass - NFS 로 연동되는 PV (Persistent Volume)를 자동으로 구성하는 방법을 정리한 것입니다. CentOS 8에 설치되는 NFS를 Kubernetes의 Dynamic Storage Provisioning 으로 활용해서 PV (Persistent Volume)를 구성해 본다. Network file system 구성 NFS 서버를 구성하는 부분은 CentOS 8에 NFS 설정 및 테스트 글을 참고해서 진행하도록 한다. NFS 서버는 물리적인 머신으로 네트워크 상에 존재하면 되며, Network을 통해서 Kubernetes Cluster에서 NFS 서버로 접근할 수 있어야 한다. 위에서 구성한 NFS 서버를 사용할 수 있도록 처리하는 NFS Provisioner Pod가 Kubernetes Cluster에 PV를 배포할 수 있도록 하기 위해서는 필요한 권한 설정이 필요하다. 따라서 PV를 배포할 수 있도록 ClusterRole, ClusterRoleBinding, Role, RoleBinding 설정을 가지는 Service Account를 생성해 줘야 한다. Service Account 생성 서비스 계정을 생성한다. (serviceaccount.yaml) apiVersion: v1 kind: ServiceAccount metadata: name: nfs-provisioner 아래의 명령을 사용해서 Kubernetes에 적용한다. $ kubectl apply -f serviceaccount