我创建了两个在Windows 10的minikube环境中运行的POD。一个POD带有Spring引导应用程序容器,另一个POD带有mysql容器。对于服务类型为SpringPort的Spring Boot应用程序POD,对于MYSQL pod,服务类型为clusterIP。意味着Mysql pod仅需要在集群内部进行通信。但是对于Spring Boot,应用程序需要从浏览器访问,因此我配置了NodePort。
我为NodePort配置了30096。但是我检查了我的浏览器(minikube ip:nodePort)。它不起作用。因此,我尝试执行命令“ minikube service service-name”,输出显示一个不同的端口(59870)
MYSQL_DEPLOYMENT_YML:
apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
name: bcp-mysql
labels:
app: bcp-mysql
spec:
selector:
matchLabels:
app: bcp-mysql
strategy:
type: Recreate
template:
metadata:
labels:
app: bcp-mysql
spec:
containers:
- image: <myrepo>/mysql:5.7
name: mysql
env:
- name: MYSQL_ROOT_PASSWORD
value: password
- name: MYSQL_DATABASE
value: database
- name: MYSQL_USER
value: root
- name: MYSQL_PASSWORD
value: password
ports:
- containerPort: 3306
name: mysql
imagePullPolicy: Always
volumeMounts:
- name: mysql-persistent-storage
mountPath: /var/lib/mysql
volumes:
- name: mysql-persistent-storage
persistentVolumeClaim:
claimName: mysql-pv-claim
imagePullSecrets:
- name: regcred
---
apiVersion: v1
kind: Service
metadata:
name: bcp-mysql
spec:
selector:
app: bcp-mysql
ports:
- port: 3306
targetPort: 3306
type: ClusterIP
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysql-pv-claim
labels:
app: bcp-mysql
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
Spring_boot_deployment.yml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: bcpdashboard
labels:
app: bcpdashboard
spec:
replicas: 1
selector:
matchLabels:
app: bcpdashboard
template:
metadata:
labels:
app: bcpdashboard
spec:
containers:
- name: app
image: <myrepo>/bcpdashboard:latest
ports:
- containerPort: 9097
imagePullPolicy: Always
env:
- name: SPRING_DATASOURCE_URL
value: jdbc:mysql://bcp-mysql:3306/bcp?autoReconnect=true&useSSL=false
imagePullSecrets:
- name: regcred
---
apiVersion: v1
kind: Service
metadata:
name: bcpdashboard
spec:
selector:
app: bcpdashboard
ports:
- port: 9097
targetPort: 9097
nodePort: 30096
type: NodePort
---
我的minikube ip仅是本地主机IP。因此,我尝试运行(http://127.0.0.1:30096)。它不起作用。所以我尝试执行“ minikube service bcpdashboard”
并且http://127.0.0.1:59870/正常工作,我不知道端口号59870。即使我配置了节点端口,也如何自动分配该端口以及如何启动Spring Boot应用程序POD。
任何人都面临相同的问题,请让我知道如何使其与nodePort一起使用,并且部署yaml配置中是否存在任何问题。
似乎行为是特定于您的minikube设置的,在我的设置中使用部署yaml,所有功能均按规定运行,即只有curl http://127.0.0.1:30096/
响应w / 200。
我使用helloworld-http作为图像,使用docker-desktop 2.3的k8s 16。部署yaml看起来像这样:
apiVersion: apps/v1
kind: Deployment
metadata:
name: bcpdashboard
labels:
app: bcpdashboard
spec:
replicas: 1
selector:
matchLabels:
app: bcpdashboard
template:
metadata:
labels:
app: bcpdashboard
spec:
containers:
- name: app
image: strm/helloworld-http
ports:
- containerPort: 80
imagePullPolicy: Always
env:
- name: SPRING_DATASOURCE_URL
value: jdbc:mysql://bcp-mysql:3306/bcp?autoReconnect=true&useSSL=false
imagePullSecrets:
- name: regcred
---
apiVersion: v1
kind: Service
metadata:
name: bcpdashboard
spec:
selector:
app: bcpdashboard
ports:
- port: 80
targetPort: 80
nodePort: 30096
type: NodePort
---
您是否尝试过使用docker-windows-desktop-kubernetes?您可以尝试一下,它至少可以为您解决问题。