我在Kubernetes集群外部有一个运行Web服务的节点,我需要从Pod内部访问.该文档提到了在没有选择器的情况下使用服务:http: //kubernetes.io/docs/user-guide/services/
所以我创建了这样的服务:
{
"kind": "Service",
"apiVersion": "v1",
"metadata": {
"name": "my-service"
},
"spec": {
"ports": [
{
"protocol": "TCP",
"port": 8082,
"targetPort": 8082
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
然后创建我的端点:
{
"kind": "Endpoints",
"apiVersion": "v1",
"metadata": {
"name": "my-service"
},
"subsets": [
{
"addresses": [
{ "ip": "128.115.198.7" }
],
"ports": [
{ "port": 8082 }
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
测试应用:
apiVersion: v1
kind: Pod
metadata:
name: ta-p
spec:
restartPolicy: Never
containers:
- name: ta-c
image: "centos:7"
command: ["/bin/bash","-c", "sleep 100000"]
nodeSelector:
node: "kube-minion-1"
Run Code Online (Sandbox Code Playgroud)
远程进入Pod做:
kubectl exec ta-p -c ta-c -i --tty -- /bin/bash
Run Code Online (Sandbox Code Playgroud)
然后每当我kubectl exec进入我的pod中的容器并尝试ping或卷曲我的服务时如下:
curl http://my-service/api/foo
Run Code Online (Sandbox Code Playgroud)
它超时了.我已验证DNS已设置并正常运行.但是,我甚至尝试使用直接绑定到服务的IP地址:
curl http://10.0.124.106:8082/api/foo
Run Code Online (Sandbox Code Playgroud)
有人有什么建议吗?
注意:现在解决这个问题的更好方法是externalName在服务上使用。这将向CNAME内部 Kubernetes DNS添加一条记录:https :
//github.com/kubernetes/community/blob/master/contributors/design-proposals/network/service-external-name.md
此功能随 Kubernetes 1.4 一起提供。
| 归档时间: |
|
| 查看次数: |
7720 次 |
| 最近记录: |