Kubernetes服务Nodeport无法正常工作

问题描述 投票:0回答:1

我创建了两个在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)

enter image description here

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
---

enter image description here

我的minikube ip仅是本地主机IP。因此,我尝试运行(http://127.0.0.1:30096)。它不起作用。所以我尝试执行“ minikube service bcpdashboard”

enter image description here

并且http://127.0.0.1:59870/正常工作,我不知道端口号59870。即使我配置了节点端口,也如何自动分配该端口以及如何启动Spring Boot应用程序POD。enter image description here

enter image description hereenter image description here

任何人都面临相同的问题,请让我知道如何使其与nodePort一起使用,并且部署yaml配置中是否存在任何问题。

java spring-boot docker kubernetes minikube
1个回答
0
投票

似乎行为是特定于您的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?您可以尝试一下,它至少可以为您解决问题。

© www.soinside.com 2019 - 2024. All rights reserved.