Kubernetes服务通信isse-Kubedns
我有两个映射到两个服务的吊舱,在我的笔记本电脑中使用虚拟机启动和运行。我必须工作。一个pod是webservice,另一个是mongodb webapppod的规格如下所示Kubernetes服务通信isse-Kubedns,kubernetes,kube-dns,Kubernetes,Kube Dns,我有两个映射到两个服务的吊舱,在我的笔记本电脑中使用虚拟机启动和运行。我必须工作。一个pod是webservice,另一个是mongodb webapppod的规格如下所示 spec: containers: - resources: limits: cpu: 0.5 . . name: wsemp ports: - containerPort: 8080 #
spec:
containers:
- resources:
limits:
cpu: 0.5
.
.
name: wsemp
ports:
- containerPort: 8080
# name: wsemp
#command: ["java","-Dspring.data.mongodb.uri=mongodb://192.168.6.103:30061/microservices", "-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
command: ["java","-Dspring.data.mongodb.uri=mongodb://mongoservice/microservices", "-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
相应服务的规范
apiVersion: v1
kind: Service
metadata:
labels:
name: webappservice
name: webappservice
spec:
ports:
- port: 8080
nodePort: 30062
targetPort: 8080
protocol: TCP
type: NodePort
selector:
name: webapp
Mongodb吊舱规格
apiVersion: v1
kind: Pod
metadata:
name: mongodb
labels:
name: mongodb
spec:
containers:
.
.
name: mongodb
ports:
- containerPort: 27017
Mongodb服务规范
apiVersion: v1
kind: Service
metadata:
labels:
name: mongodb
name: mongoservice
spec:
ports:
- port: 27017
nodePort: 30061
targetPort: 27017
protocol: TCP
type: NodePort
selector:
name: mongodb
评论后更新了服务中的目标端口
发行
webapp启动时无法连接到mongoservice端口,启动时出现此错误
Exception in monitor thread while connecting to server mongoservice:27017
com.mongodb.MongoSocketOpenException: Exception opening socket
at com.mongodb.connection.SocketStream.open(SocketStream.java:63) ~[mongodb-driver-core-3.2.2.jar!/:na]
at com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:114) ~[mongodb-driver-core-3.2.2.jar!/:na]
at com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:128) ~[mongodb-driver-core-3.2.2.jar!/:na]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_111]
Caused by: java.net.ConnectException: Connection refused (Connection refused)
at java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:1.8.0_111]
描述svc
kubectl describe svc mongoservice
Name: mongoservice
Namespace: default
Labels: name=mongodb
Selector: name=mongodb
Type: NodePort
IP: 10.254.146.189
Port: <unset> 27017/TCP
NodePort: <unset> 30061/TCP
Endpoints: 172.17.99.2:27017
Session Affinity: None
No events.
kubectl describe svc webappservice
Name: webappservice
Namespace: default
Labels: name=webappservice
Selector: name=webapp
Type: NodePort
IP: 10.254.112.121
Port: <unset> 8080/TCP
NodePort: <unset> 30062/TCP
Endpoints: 172.17.99.3:8080
Session Affinity: None
No events.
mongodb容器在启动时没有错误
尝试按照中的步骤进行操作,但被卡在上面,上面说尝试重新启动kube代理,将-V标志设置为4,因为我不知道怎么做
我不是一个善于交际的人,所以我不知道在这方面该如何分析,需要分析什么。任何调试技巧都会有很大帮助
谢谢。:
请注意,curl默认执行HTTP请求,但您尝试访问的主机中的端口27017未绑定到理解此类协议的应用程序。通常,在这些情况下,您会使用netcat:
nc-zv mongoservice 27017
这将报告来自该主机的端口27017是否打开
nc=网络猫
-z扫描侦听守护进程而不发送数据
-v增加了冗长
关于MongoDB文件,必须记住设置targetPort指令。如中所述
此规范将创建一个服务,该服务以带有run:my nginx标签的任何Pod上的TCP端口80为目标,并在抽象服务端口targetPort:是容器接受流量的端口,port:是抽象服务端口,可以是其他Pod用于访问该服务的任何端口。查看服务API对象以查看服务定义中支持的字段列表
因此,只需将其设置为27017即可实现一致性
在遵循这些建议后,您不应该遇到问题。继续努力,尽可能多地学习 iptables规则看起来不错,但不确定kubernetes中使用了什么网络解决方案法兰绒/印花布。您可以检查您是否可以从您的web pod访问kube dns pod IP 谢谢。我得到了一个线索,因为我使用的是法兰绒网络,所以法兰绒网络中的吊舱之间的通信出现了问题 特别是这一部分,如链接中所述,FLANNEL_OPTIONS=-iface=eth1
谢谢。你好,大卫,感谢您的回复。添加了mongodb-service.yaml文件中提到的targetPort。端口:-端口:27017节点端口:30061尝试在容器中执行时targetPort:27017root@webapp:/nc-zvmongoservice 27017 mongoservice.default.svc.cluster.local[10.254.77.233]27017:连接被拒绝在webapp日志启动过程中仍出现相同错误。连接到服务器mongoservice时,监视器线程中出现异常:27017 com.mongodb.mongoscocketopenexception:异常打开套接字,但我在mongodb容器日志中看到它正在侦听端口27017。**mongodb启动:pid=1 Port=27017 dbpath=/data/db 64位主机=mongodb。等待端口27017上的连接**也对webappservice和mongoservice中的节点报告进行了评论,并尝试了,因为这与虚拟箱VM中的内部网络通信有关。端口:-端口:27017节点端口:30061目标端口:27017协议:TCP类型:节点端口。仍然遇到相同的错误。
root@webapp:/# nslookup mongoservice
Server: 10.254.0.2
Address: 10.254.0.2#53
Non-authoritative answer:
Name: mongoservice.default.svc.cluster.local
Address: 10.254.146.189
root@webapp:/# curl 10.254.146.189:27017
curl: (7) Failed to connect to 10.254.146.189 port 27017: Connection refused
root@webapp:/# curl mongoservice:27017
curl: (7) Failed to connect to mongoservice port 27017: Connection refused
sudo iptables-save | grep webapp
-A KUBE-NODEPORTS -p tcp -m comment --comment "default/webappservice:" -m tcp --dport 30062 -j KUBE-MARK-MASQ
-A KUBE-NODEPORTS -p tcp -m comment --comment "default/webappservice:" -m tcp --dport 30062 -j KUBE-SVC-NQBDRRKQULANV7O3
-A KUBE-SEP-IE7EBTQCN7T6HXC4 -s 172.17.99.3/32 -m comment --comment "default/webappservice:" -j KUBE-MARK-MASQ
-A KUBE-SEP-IE7EBTQCN7T6HXC4 -p tcp -m comment --comment "default/webappservice:" -m tcp -j DNAT --to-destination 172.17.99.3:8080
-A KUBE-SERVICES -d 10.254.217.24/32 -p tcp -m comment --comment "default/webappservice: cluster IP" -m tcp --dport 8080 -j KUBE-SVC-NQBDRRKQULANV7O3
-A KUBE-SVC-NQBDRRKQULANV7O3 -m comment --comment "default/webappservice:" -j KUBE-SEP-IE7EBTQCN7T6HXC4
$ curl 10.254.217.24:8080
{"timestamp":1486678423757,"status":404,"error":"Not Found","message":"No message available","path":"/"}[osboxes@kube-node1 ~]$
sudo iptables-save | grep mongodb
[osboxes@osboxes ~]$ sudo iptables-save | grep mongo
-A KUBE-NODEPORTS -p tcp -m comment --comment "default/mongoservice:" -m tcp --dport 30061 -j KUBE-MARK-MASQ
-A KUBE-NODEPORTS -p tcp -m comment --comment "default/mongoservice:" -m tcp --dport 30061 -j KUBE-SVC-2HQWGC3WSIBZF7CN
-A KUBE-SEP-FVWOWAWXXVAVIQ5O -s 172.17.99.2/32 -m comment --comment "default/mongoservice:" -j KUBE-MARK-MASQ
-A KUBE-SEP-FVWOWAWXXVAVIQ5O -p tcp -m comment --comment "default/mongoservice:" -m tcp -j DNAT --to-destination 172.17.99.2:27017
-A KUBE-SERVICES -d 10.254.146.189/32 -p tcp -m comment --comment "default/mongoservice: cluster IP" -m tcp --dport 27017 -j KUBE-SVC-2HQWGC3WSIBZF7CN
-A KUBE-SVC-2HQWGC3WSIBZF7CN -m comment --comment "default/mongoservice:" -j KUBE-SEP-FVWOWAWXXVAVIQ5O
[osboxes@osboxes ~]$ sudo curl 10.254.146.189:8080
^C[osboxes@osboxes ~]$ sudo curl 10.254.146.189:27017
It looks like you are trying to access MongoDB over HTTP on the native driver port.
root@mongodb:/# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN
tcp 0 0 172.17.99.2:60724 151.101.128.204:80 TIME_WAIT
tcp 0 0 172.17.99.2:60728 151.101.128.204:80 TIME_WAIT