-
NFS 구축 및 pv, pvc 생성과 K8S MySQL Statefulset 마운트K8S 2021. 7. 15. 00:17
이번 포스팅은 NFS 서버를 구축한 후,
이를 persistent volume으로 사용하여 mysql statefulset으로 배포하는 작업을 한다.
mysql 컨테이너에서 마운트된 디렉토리에 대한 접근 권한 문제 때문에
삽집을 해서 이 부분에 대해서만 자세히 다룬다.
chown: changing ownership of '/var/lib/mysql/': read-only file system
(처음에 mysql 컨테이너에서 나는 문제인줄 알았는데
NFS 권한 설정 때문에 발생했던 문제였다.)
NFS 서버는 EC2 우분투 18.04를 기준으로 하였고,
NFS 서버의 /data/mysql 디렉토리를 마운트하여 사용할 것이다.
1. NFS 서버 구축하기
먼저 마운트할 디렉토리를 만들어준다.
mkdir -p /data/mysql chmod -R 755 /data chown -R 999:999 /data
NFS 서버 구성에 필요한 것들을 Install 해준다.
apt-get install -y nfs-common nfs-kernel-server rpcbind
/etc/exports에 다음을 추가해준다.
/data/mysql *(rw,sync,no_root_squash)
모든 경로(*)에 대해서 read, write를 허용해줄거다.
sudo systemctl restart nfs-server sudo systemctl enable nfs-server
잘 마운트 되었는지 확인한다.
sudo exportfs -v
2. pv, pvc 생성하기
apiVersion: v1 kind: PersistentVolume metadata: name: nfs-pv spec: capacity: storage: 2Gi volumeMode: Filesystem accessModes: - ReadWriteMany nfs: path: "/data/mysql" server: 172.31.6.27 # nfs 서버 주소를 적어준다. --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-nfs-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 2Gi
3. Mysql Statefulset, Headless service 생성하기
apiVersion: v1 kind: ConfigMap metadata: name: database data: MYSQL_ROOT_PASSWORD: 'root' --- apiVersion: v1 kind: Service metadata: name: mysql-service spec: ports: - port: 3306 selector: app: mysql clusterIP: None --- apiVersion: apps/v1 kind: StatefulSet metadata: name: mysql spec: serviceName: mysql-service replicas: 1 selector: matchLabels: app: mysql template: metadata: labels: app: mysql spec: containers: - image: mysql:5.6 name: mysql envFrom: - configMapRef: name: database ports: - containerPort: 3306 name: mysql volumeMounts: - name: mysql-persistent-storage mountPath: /var/lib/mysql volumes: - name: mysql-persistent-storage persistentVolumeClaim: claimName: my-nfs-pvc
반응형'K8S' 카테고리의 다른 글
K8S TLS Certificate 정리 (0) 2021.07.26 Helm3 Chart 생성 및 배포 정리 (feat. Github) (0) 2021.07.21 Istioctl를 이용한 istio 설치 (0) 2021.07.11 K8S Nginx-controller를 이용한 Ingress 구성 정리 (0) 2021.07.09 K8S: Service Networking 정리 (0) 2021.07.07