docker - 在使用 Kubernetes 部署的浏览器上看不到我的应用
问题描述
希望你们一切都好!
我需要在浏览器上查看我的应用程序,但我相信我在这里遗漏了一些东西,希望你能帮助我。
[root@kubernetes Docker]# kubectl get all
NAME READY STATUS RESTARTS AGE
pod/my-app2-56d5c786dd-n7mqq 1/1 Running 0 19m
pod/nginx-86c57db685-bxkpl 1/1 Running 0 13h
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 31h
service/my-app2 ClusterIP 10.101.108.199 <none> 8085/TCP 12m
service/nginx NodePort 10.106.14.144 <none> 80:30525/TCP 13h
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/my-app2 1/1 1 1 19m
deployment.apps/nginx 1/1 1 1 13h
NAME DESIRED CURRENT READY AGE
replicaset.apps/my-app2-56d5c786dd 1 1 1 19m
replicaset.apps/nginx-86c57db685 1 1 1 13h
总的来说,您可以看到一切正常,对我来说看起来一样。
要在我的浏览器上打开它,我使用的是分配容器的从节点的 IP 地址。在我的应用程序上,我正在像这样映射 Hello @RequestMapping("/Hello") 在我的 dockerfile 上构建我的图像,我使用了这个:
[root@kubernetes project]# cat Dockerfile
FROM openjdk:8
COPY microservico-0.0.1-SNAPSHOT.jar microservico-0.0.1-SNAPSHOT.jar
#WORKDIR /usr/src/microservico-0.0.1-SNAPSHOT.jar
EXPOSE 8085
ENTRYPOINT ["java", "-jar", "microservico-0.0.1-SNAPSHOT.jar"]
所以最后,我认为我需要以这种方式调用我的应用程序。
---> ip:8085/你好
[root@kubernetes project]# telnet kubeslave 8085
Trying 192.168.***.***...
telnet: connect to address 192.168.***.***: Connection refused
但我还是什么都没看到……
这是我的部署和服务:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app2
labels:
app: app
spec:
selector:
matchLabels:
app: app
role: master
tier: backend
replicas: 1
template:
metadata:
labels:
app: app
role: master
tier: backend
spec:
containers:
- name: appcontainer
image: *****this is ok*****:my-java-app
resources:
requests:
cpu: 100m
memory: 100Mi
ports:
- containerPort: 8085
apiVersion: v1
kind: Service
metadata:
name: my-app2
labels:
app: app
role: master
tier: backend
spec:
ports:
- port: 8085
targetPort: 8085
selector:
app: app
role: master
tier: backend
解决方案
您已经创建了一个 ClusterIP(默认)类型的服务。此类服务仅适用于从 kubernetes 集群内部访问。要从浏览器访问它,您需要通过LoadBalancer或Nodeport服务公开 pod。LoadBalancer 仅在您是受支持的公共云之一时才有效,否则需要使用 Nodeport。
https://kubernetes.io/docs/tutorials/stateless-application/expose-external-ip-address/
https://kubernetes.io/docs/tasks/access-application-cluster/service-access-application-cluster/
除了使用服务之外,您还可以使用 kubectl 代理来访问它。
如果您在 Minikube 上,请按照此操作
推荐阅读
- r - 每分钟对应的最后一个值
- javascript - 如何在 JavaScript 中更改输入类型 =“文件”名称
- apache-kafka - Reactor Kafka - 至少一次 - 处理多分区中的故障和偏移
- ios - Application is not showing Photos Library permission in iOS 12.1.1
- javascript - Call a function from another HTML page
- html - How to position absolute in within nested relative containers?
- c# - Property updated in base controller is not updated in home controller (derived class)
- java - 客户端的 Hazelcast 服务器连接优先级
- html - How to connect two inputs in the same form
- php - Some of the links in Wordpress when moved from localhost to host are broken