【发布时间】:2020-07-05 19:31:59
【问题描述】:
我一直在寻找类似的问题,但没有找到。我有一个远程 Kubernetes 集群,它的架构是一个 master 和两个 worker。安装的版本如下: Kubernetes:1.15.1-0 码头工人:18.09.1-3.el7 我正在尝试部署和公开具有一个 REST 端点的 Spring 项目的 JAR 文件。
部署.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: microservices-deployment
labels:
app: microservices-deployment
spec:
replicas: 3
template:
metadata:
name: microservices-deployment
labels:
app: microservices-deployment
spec:
containers:
- name: microservices-deployment
image: **my_repo**/*repo_name*:latest
imagePullPolicy: Always
ports:
- containerPort: 8085
restartPolicy: Always
selector:
matchLabels:
app: microservices-deployment
service.yaml:
apiVersion: v1
kind: Service
metadata:
name: microservices-service
spec:
selector:
app: microservices-deployment
ports:
- port: 8085
targetPort: 8085
type: NodePort
我的应用程序属性:
server.port=8085
Dockerfile:
FROM openjdk:8
ADD target/microservices.jar microservices.jar
EXPOSE 8085
ENTRYPOINT ["java", "-jar", "microservices.jar"]
看起来我的 pod 已经准备好了,一切看起来都不错,但是我无法访问我公开的服务,即使是从 master 的终端。 有人有什么主意吗? 提前致谢。
更新
我能够从我的主节点远程登录到节点上的端口 30000(在我将 30000 指定为我的 NodePort 之后),以及远程登录到端口 8085 上的 pod。当我尝试从主节点远程登录到我被拒绝的节点 \ pod 中的任何其他端口,所以我认为这是一个好的开始。尽管如此,我仍然无法访问我指定的其余端点,尽管它在本地运行在 Docker 上: docker run -p 8085:8085 IMAGE_NAME
【问题讨论】:
-
你可以尝试端口转发还是尝试从集群中的另一个 pod 访问 pod ip 和端口。你是用 NodeIP: NodePort 来访问的吗?
-
我尝试使用 nodeIP:notePORT。没有帮助。我会尝试端口转发
-
@YaakovShami 您是否尝试过构建映像并在本地 docker 上运行它?因为您在部署和服务上做的一切都是正确的。 ?我的感觉是你的代码一定有问题。
-
检查 pod 调度到哪个节点(kubectl get pods -o wide)并使用该节点 IP
-
@DashrathMundkar 是的,如果我指定端口(-p 8085:8085),它就可以工作
标签: docker kubernetes microservices