当我回顾最近的实验时,我仔细阅读了笔记,使用Kubernetes重新创建了一个相对简单的设置,用于后端和前端服务设置。在我的场景中,需要公开这两种服务,现在我正在使用NodePort。
这一切都在一周左右之前运作得很好,但是我觉得我设法搞砸了,这让我疯了。结果是我似乎无法通过该服务访问我的后端pod。我已经跟着调试服务文档(https://kubernetes.io/docs/tasks/debug-application-cluster/debug-service),事情很快就会变得混乱。
所以这是我目前的yaml文件:
apiVersion: v1
kind: Service
metadata:
name: test
spec:
type: NodePort
ports:
- name: default
protocol: TCP
port: 80
targetPort: 8080
selector:
app: test
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: test
spec:
selector:
matchLabels:
app: test
replicas: 1
template:
metadata:
labels:
app: test
spec:
containers:
- name: test
image: jan/test:v1.0.0
ports:
- containerPort: 8080
protocol: TCP
应用程序启动正常 - 它在日志中报告它已准备好接收请求。 (这是一个Java / Grizzly应用程序)。现在这里是我尝试过的清单。
最重要的是 - 我认为wget -qO- {service}
需要开始报告其pod,而目前却没有。再次 - 我完成了调试服务文档的场景,并且完成没有问题。
那么wget -qO-
失败会导致什么(其他)错误?
答案 0 :(得分:0)
所以,让我们看看......你在 busybox 中。
ifconfig - 172.17.0.8,127.0.0.1
你在这做什么?这就像做wget http://172.17.0.8:8080 - 立即失败,连接被拒绝
localhost:8080
一样。当然你得到连接被拒绝了。在busybox的端口8080上没有任何服务。
wget -qO- test - 立即失败,连接被拒绝
同样在这里。现在,您正在busybox的端口80上执行请求,该请求再次没有服务。
这种配置绝对没有办法。您所做的只是在busybox中向自己提出请求。
您需要对指向您应用的服务或直接指向包含您应用的广告连播的服务发送请求。
答案 1 :(得分:0)
我删除了一个被送入应用程序的重要属性。所以实际上问题根本不是K8S的水平。基本上我是在渲染已部署的应用程序'隐形'。