【发布时间】:2020-09-25 01:09:24
【问题描述】:
我创建了两个在 Windows 10 的 minikube 环境中运行的 POD。一个带有 Spring Boot 应用程序容器的 POD 和另一个带有 mysql 容器的 POD。对于 Spring Boot 应用程序 POD,服务类型为 nodePort,对于 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 只是 localhost IP。所以我尝试运行(http://127.0.0.1:30096)。它不工作。所以我尝试执行“minikube service bcpdashboard”
http://127.0.0.1:59870/ 工作正常,我不知道端口号 59870。即使我配置了 nodeport,它是如何自动分配的,并且是 Spring Boot 应用程序 POD 的起点。
任何人都面临同样的问题&请告诉我如何使它与 nodePort 一起工作,以及部署 yaml 配置中是否有任何问题。
【问题讨论】:
-
你能检查
minikube ip和http://<minikube ip>:30096是否有效吗? -
我的 minikube ip 是 127.0.0.1,它不适用于 nodePort(30096)
-
你试过运行
kubectl get svc和minikube service bcpdashboard --url吗?这些打印什么? -
@stackguy - 我附上了截图。请检查一下
-
默认情况下,将自动分配给集群的nodePort在30000-32767范围内。您是否对集群配置进行了任何更改以更改此范围?
标签: java spring-boot docker kubernetes minikube