컴퓨터를 다시 시작할 때마다 데이터베이스의 내용이 손실되지 않도록 /var/lib/mysql 디렉터리를 영구 볼륨으로 마운트해야 합니다(저는 Docker Desktop과 Windows를 사용합니다).
但是启动Pod가 출시되었습니다.
2023-03-07 21:10:15+00:00 [참고] [진입점]: MySQL Server 8.0.32-1.el8용 진입점 스크립트 시작되었습니다. 찾기: '/var/lib/mysql/': 작업이 허용되지 않습니다. 찾기: '/var/lib/mysql': 작업이 허용되지 않습니다. chown: '/var/lib/mysql/'의 소유권 변경: 작업이 허용되지 않습니다. chown: '/var/lib/mysql'의 소유권 변경: 작업이 허용되지 않습니다
这是부署文件:
종류: StorageClass API버전: Storage.k8s.io/v1 메타데이터: 이름: 로컬 스토리지 제공자: kubernetes.io/no-provisioner reclaimPolicy: 유지 VolumeBindingMode: WaitForFirstConsumer --- api버전: v1 종류: 퍼시스턴트볼륨 메타데이터: 이름: mysql-pv 투기: 용량: 저장 용량: 500M VolumeMode: 파일 시스템 액세스 모드: - 읽기쓰기한번 StorageClassName: 로컬 스토리지 현지의: 경로: /c/data/db 노드어피니티: 필수의: nodeSelector용어: - matchExpressions: - 키: kubernetes.io/hostname 연산자: 에서 값: - 도커 데스크탑 --- api버전: v1 종류: PertantVolumeClaim 메타데이터: 이름: mysql-pvc 투기: 액세스 모드: - 읽기쓰기한번 StorageClassName: 로컬 스토리지 자원: 요청: 저장 용량: 500M --- api버전: v1 종류: 서비스 메타데이터: 이름: mysql 투기: 선택자: 앱: mysql 포트: - 포트: 3306 타겟 포트: 3306 --- api버전: v1 종류: 서비스 메타데이터: 이름: mysql-lb 투기: 유형: LoadBalancer 선택자: 앱: mysql 포트: - 포트: 3306 타겟 포트: 3306 --- api버전: 앱/v1 종류: StatefulSet 메타데이터: 라벨: 앱: mysql 이름: mysql 투기: 서비스 이름: mysql 복제본: 1 선택자: 일치 라벨: 앱: mysql 주형: 메타데이터: 라벨: 앱: mysql 투기: 컨테이너: - 이미지: mysql:최신 이름: mysql 포트: - 컨테이너 포트: 3306 자원: {} 볼륨마운트: - 이름: mysql-volume 마운트 경로: /var/lib/mysql 환경: - 이름: MYSQL_ROOT_PASSWORD 값: configMapKeyRef: 키: MYSQL_ROOT_PASSWORD 이름: mysql-env - 이름: MYSQL_ROOT_USERNAME 값: configMapKeyRef: 키: MYSQL_ROOT_USERNAME 이름: mysql-env 볼륨: - 이름: mysql-volume 영구볼륨클레임: 클레임 이름: mysql-pvc
如果我对卷使用另一个装载路径,pod 会启动,但当然,每次重新启动计算机时数据库内容都会丢失。
또한 볼륨을 마운트하기 전에 chown 명령을 실행하여 디렉토리 소유자를 변경해 보았습니다.
컨테이너: - 이미지: mysql:최신 이름: mysql 포트: - 컨테이너 포트: 3306 자원: {} 명령: - chown - -R - 999:999 -/var/lib/mysql 볼륨마운트: - 이름: mysql-volume 마운트 경로: /var/lib/mysql
하지만 포드를 시작할 때 다음 오류가 발생합니다. chown: '/var/lib/mysql' 디렉토리를 읽을 수 없습니다: 작업이 허용되지 않습니다
도움을 주셔서 감사합니다.
추가
으아악StatefulSet 구성요소에서