kubernetes에 mysql 데이터베이스를 배포하고 서비스를 통해 노출했습니다. 내 응용 프로그램이 해당 데이터베이스에 연결을 시도하면 계속 거부됩니다. 로컬로 액세스하려고 할 때도 마찬가지입니다. Kubernetes 노드는 minikube에서 실행됩니다.
apiVersion: v1
kind: Service
metadata:
name: mysql-service
spec:
type: NodePort
selector:
app: mysql
ports:
- port: 3306
protocol: TCP
targetPort: 3306
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql-deployment
labels:
app: mysql
spec:
replicas: 1
selector:
matchLabels:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- name: mysql
image: mysql_db
imagePullPolicy: Never
ports:
- containerPort: 3306
volumeMounts:
- name: mysql-persistent-storage
mountPath: "/var/lib/mysql"
volumes:
- name: mysql-persistent-storage
persistentVolumeClaim:
claimName: mysql-pv-claim
영구 저장소에 대한 내 yaml은 다음과 같습니다.
apiVersion: v1
kind: PersistentVolume
metadata:
name: mysql-pv-volume
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/Users/Work/data"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysql-pv-claim
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
이 후 다음을 실행하여 얻습니다 minikube service list
.
default | mysql-service | http://192.168.99.101:31613
그러나 내 응용 프로그램이나 로컬 컴퓨터에서 데이터베이스에 액세스 할 수 없습니다. 내가 무엇을 놓치고 있거나 잘못 구성 했습니까?
편집 : docker에 의해 실행되는 이미지가 이미 실행중인 mysql db이고 일부 스크립트가 docker 이미지 내에서도 실행되기 때문에 여기에 env를 정의하지 않습니다.
좋아, 알아 냈어. 로그를 살펴본 후 오류를 발견했습니다 Can't create/write to file '/var/lib/mysql/is_writable' (Errcode: 13 - Permission denied)
.
빌드 할 때 도커 이미지에 이것을 추가해야했습니다. RUN usermod -u 1000 mysql
이미지를 재 구축 한 후 모든 것이 작동하기 시작했습니다. 감사합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다