【发布时间】:2021-06-25 00:47:48
【问题描述】:
我在 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 映像中运行。
【问题讨论】:
-
服务名称为
mysql-service。你是说kubernetes里面的app不能访问这个?还是那个mysql抛出连接错误?如果要在本地使用minikube expose访问 minikube 服务,则需要公开它。您在应用中使用的是什么主机? -
原来我发生了一个我之前没有注意到的错误。不过感谢您的建议。
标签: mysql kubernetes