无法在minikube上访问我的应用程序

时间:2019-10-03 12:20:45

标签: kubernetes containers cloud minikube

我是kubernetes的新手,我尝试使用kubernetes运行小型应用程序。我创建了docker映像并使用minikube来运行它。因此,应用程序非常简单,它只显示hello-world。

@RestController
@RequestMapping(value = "helloworld")
public class MyController {

    @GetMapping
    public HelloWord helloWord(){

        return new HelloWord("Hello Word");
    }
}

我的dockerfile:

FROM adoptopenjdk/openjdk11-openj9:jdk-11.0.1.13-alpine-slim
VOLUME /tmp
ARG JAR_FILE=target/myapp-1.0.0.jar
COPY ${JAR_FILE} myapp-1.0.0.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom", "-jar","/myapp-1.0.0.jar"]

deployment.yaml

apiVersion: v1
kind: Service
metadata:
  name: myhelloworldservice
spec:
  selector:
    app: my-hello-world-app
  ports:
    - protocol: "TCP"
      port: 8080
      targetPort: 80
      nodePort: 30003
  type: LoadBalancer


---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-hello-world
spec:
  selector:
    matchLabels:
      app: my-hello-world-app
  replicas: 5
  template:
    metadata:
      labels:
        app: my-hello-world-app
    spec:
      containers:
        - name: hello-world
          image: myname/myhelloimage
          ports:
            - containerPort: 80

我运行命令:

  

kubectl create -f deployment.yaml

,输出为:

  

service / myhelloworldservice已创建

     

创建了deployment.apps / my-hello-world

我运行minikube ip命令获取ip,然后使用该ip地址通过端口30003访问我的应用程序,但无法访问我的应用程序。

我用过:

http://xxx.xx.xx.xxx:30003/helloworld

为什么我不能访问我的应用程序是什么问题?我得到这个网站无法访问。拒绝连接错误。

3 个答案:

答案 0 :(得分:1)

您的服务属于LoadBalancer类型,特定于访问。使用Minikube,您可以使用以下方式访问它们:

minikube tunnel

有关更多信息,请参见https://minikube.sigs.k8s.io/docs/tasks/loadbalancer/

答案 1 :(得分:0)

查看代码,似乎它是基于Spring的服务。该服务不太可能在端口80上侦听-Spring的默认值为8080。因此,假设实际端口为8080,请更改:

    targetPort: 80定义中从
  • targetPort: 8080Service
  • type: LoadBalancertype: NodePort定义中的Service
  • containerPort: 80定义中从
  • containerPort: 8080Deployment

答案 2 :(得分:0)

您可以使用kubectl port-forward <<created_container_name>> 80从minikube转发到本地主机 现在,您应该可以使用localhost:80/helloworld

通过浏览器访问您的应用了