我是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
为什么我不能访问我的应用程序是什么问题?我得到这个网站无法访问。拒绝连接错误。
答案 0 :(得分:1)
您的服务属于LoadBalancer类型,特定于访问。使用Minikube,您可以使用以下方式访问它们:
minikube tunnel
有关更多信息,请参见https://minikube.sigs.k8s.io/docs/tasks/loadbalancer/
答案 1 :(得分:0)
查看代码,似乎它是基于Spring的服务。该服务不太可能在端口80上侦听-Spring的默认值为8080。因此,假设实际端口为8080,请更改:
targetPort: 80
定义中从targetPort: 8080
到Service
。type: LoadBalancer
到type: NodePort
定义中的Service
。containerPort: 80
定义中从containerPort: 8080
到Deployment
。答案 2 :(得分:0)
您可以使用kubectl port-forward <<created_container_name>> 80
从minikube转发到本地主机
现在,您应该可以使用localhost:80/helloworld