我已经构建了一个自定义的tcserver映像,公开了端口80、8080和8443。基本上,您有一个apache,在配置中有一个代理通行证将其转发给tcserver。
EXPOSE 80 8080 8443在此之后,我创建了一个kubernetes yaml来构建荚,只公开了端口80。
apiVersion: v1
kind: Pod
metadata:
name: tcserver
namespace: default
spec:
containers:
- name: tcserver
image: tcserver-test:v1
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80以及它的服务。
apiVersion: v1
kind: Service
metadata:
name: tcserver-svc
labels:
app: tcserver
spec:
type: NodePort
ports:
- port: 80
nodePort: 30080
selector:
app: tcserver但问题是我无法访问它。
如果我登录到pod (kubectl exec -it tcserver -- /bin/bash),我可以做一个curl -k -v http://localhost,它会回复。
我想我的服务做错了,但我不知道是什么。
任何帮助都将不胜感激。
SVC改变
正如sfgroup所建议的,我将targetPort: 80添加到svc中,但仍然无法工作。
当我试图压缩IP时,我得到了一个No路由来承载
[root@testmaster tcserver]# curl -k -v http://172.30.62.162:30080/
* About to connect() to 172.30.62.162 port 30080 (#0)
* Trying 172.30.62.162...
* No route to host
* Failed connect to 172.30.62.162:30080; No route to host
* Closing connection 0
curl: (7) Failed connect to 172.30.62.162:30080; No route to host以下是svc的描述:
[root@testmaster tcserver]# kubectl describe svc tcserver-svc
Name: tcserver-svc
Namespace: default
Labels: app=tcserver
Annotations: <none>
Selector: app=tcserver
Type: NodePort
IP: 172.30.62.162
Port: <unset> 80/TCP
NodePort: <unset> 30080/TCP
Endpoints: <none>
Session Affinity: None
Events: <none>发布于 2019-01-11 00:26:03
当您查看kubectl describe service输出时,您会发现它实际上并没有附加到任何豆荚上:
Endpoints: <none>这是因为在服务规范中,服务将附加到标记为app: tcserver的荚上
spec:
selector:
app: tcserver但是,在pod规范的元数据中,您根本没有指定任何标签
metadata:
name: tcserver
namespace: default
# labels: {}因此,这里的修复方法是将适当的标签添加到吊舱规范中。
metadata:
labels:
app: tcserver还要注意的是,在实践中部署一个裸舱是有点不寻常的。通常,它们被封装在一个更高级别的控制器中,最常见的是部署,这实际上创建了吊舱。部署规范有一个模板pod规范,重要的是吊舱的标签。
apiVersion: apps/v1
kind: Deployment
metadata:
name: tcserver
# Labels here are useful, but the service doesn't look for them
spec:
template:
metadata:
labels:
# These labels are what the service cares about
app: tcserver
spec:
containers: [...]发布于 2019-01-10 20:12:19
我看到目标邮件丢失了,你能添加traget端口和测试吗?
apiVersion: v1
kind: Service
metadata:
name: tcserver-svc
labels:
app: tcserver
spec:
type: NodePort
ports:
- port: 80
nodePort: 30080
targetPort: 80
selector:
app: tcserverhttps://stackoverflow.com/questions/54135446
复制相似问题