Kubernetes:无法在两个服务内通信(不同的pod,相同的命名空间)
我无法在两个服务之间进行通信 post-deployment.yamlKubernetes:无法在两个服务内通信(不同的pod,相同的命名空间),kubernetes,minikube,kube-dns,Kubernetes,Minikube,Kube Dns,我无法在两个服务之间进行通信 post-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: python-data-deployment labels: spec: replicas: 1 selector: matchLabels: app: python-web-selector tier: backend template: metadata: l
apiVersion: apps/v1
kind: Deployment
metadata:
name: python-data-deployment
labels:
spec:
replicas: 1
selector:
matchLabels:
app: python-web-selector
tier: backend
template:
metadata:
labels:
app: python-web-selector
tier: backend
spec:
containers:
- name: python-web-pod
image: sakshiarora2012/python-backend:v10
ports:
- containerPort: 5000
部署后2.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: python-data-deployment2
labels:
spec:
replicas: 1
selector:
matchLabels:
app: python-web-selector2
tier: backend
template:
metadata:
labels:
app: python-web-selector2
tier: backend
spec:
containers:
- name: python-web-pod2
image: sakshiarora2012/python-backend:v8
ports:
- containerPort: 5000
邮政服务
apiVersion: v1
kind: Service
metadata:
name: python-data-service
spec:
selector:
app: python-web-selector
tier: backend
ports:
- port: 5000
nodePort: 30400
type: NodePort
售后服务2.yml
apiVersion: v1
kind: Service
metadata:
name: python-data-service2
spec:
selector:
app: python-web-selector2
tier: backend
ports:
- port: 5000
type: ClusterIP
当我尝试从一个容器ping到另一个容器时,它无法ping
root@python-data-deployment-7bd65dc685-htxmj:/project# ping python-data-service.default.svc.cluster.local
PING python-data-service.default.svc.cluster.local (10.107.11.236) 56(84) bytes of data.
^C
--- python-data-service.default.svc.cluster.local ping statistics ---
7 packets transmitted, 0 received, 100% packet loss, time 139ms
如果我看到它显示的dns条目
sakshiarora@Sakshis-MacBook-Pro Student_Registration % kubectl exec -i -t dnsutils -- nslookup python-data-service
Server: 10.96.0.10
Address: 10.96.0.10#53
Name: python-data-service.default.svc.cluster.local
Address: 10.107.11.236
sakshiarora@Sakshis-MacBook-Pro Student_Registration %
sakshiarora@Sakshis-MacBook-Pro Student_Registration % kubectl exec -i -t dnsutils -- nslookup python-data-service2
Server: 10.96.0.10
Address: 10.96.0.10#53
Name: python-data-service2.default.svc.cluster.local
Address: 10.103.97.40
sakshiarora@Sakshis-MacBook-Pro Student_Registration % kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
dnsutils 1/1 Running 0 5m54s 172.17.0.9 minikube <none> <none>
python-data-deployment-7bd65dc685-htxmj 1/1 Running 0 47m 172.17.0.6 minikube <none> <none>
python-data-deployment2-764744b97d-mc9gm 1/1 Running 0 43m 172.17.0.8 minikube <none> <none>
python-db-deployment-d54f6b657-rfs2b 1/1 Running 0 44h 172.17.0.7 minikube <none> <none>
sakshiarora@Sakshis-MacBook-Pro Student_Registration % kubectl describe svc python-data-service
Name: python-data-service
Namespace: default
Labels: <none>
Annotations: kubectl.kubernetes.io/last-applied-configuration:
{"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"name":"python-data-service","namespace":"default"},"spec":{"ports":[{"no...
Selector: app=python-web-selector,tier=backend
Type: NodePort
IP: 10.107.11.236
Port: <unset> 5000/TCP
TargetPort: 5000/TCP
NodePort: <unset> 30400/TCP
Endpoints: 172.17.0.6:5000
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
sakshiarora@Sakshis-MacBook-Pro Student_Registration % kubectl describe svc python-data-service2
Name: python-data-service2
Namespace: default
Labels: <none>
Annotations: kubectl.kubernetes.io/last-applied-configuration:
{"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"name":"python-data-service2","namespace":"default"},"spec":{"ports":[{"p...
Selector: app=python-web-selector2,tier=backend
Type: ClusterIP
IP: 10.103.97.40
Port: <unset> 5000/TCP
TargetPort: 5000/TCP
Endpoints: 172.17.0.8:5000
Session Affinity: None
Events: <none>
sakshiarora@Sakshis-MacBook Pro学生注册%kubectl exec-i-t dnsutils--nslookup python数据服务
服务器:10.96.0.10
地址:10.96.0.10#53
名称:python-data-service.default.svc.cluster.local
地址:10.107.11.236
sakshiarora@Sakshis-MacBook Pro学生注册率%
sakshiarora@Sakshis-MacBook Pro学生注册%kubectl exec-i-t dnsutils--nslookup python-data-service2
服务器:10.96.0.10
地址:10.96.0.10#53
名称:python-data-service2.default.svc.cluster.local
地址:10.103.97.40
sakshiarora@Sakshis-MacBook Pro学生注册%kubectl获得pod-o宽
名称就绪状态重新启动老化IP节点指定节点就绪门
dnsutils 1/1运行0 5m54s 172.17.0.9 minikube
python-data-deployment-7bd65dc685-htxmj 1/1运行0 47m 172.17.0.6 minikube
python-data-deployment2-764744b97d-mc9gm 1/1运行0 43m 172.17.0.8 minikube
python-db-deployment-d54f6b657-rfs2b 1/1运行0 44h 172.17.0.7 minikube
sakshiarora@Sakshis-MacBook Pro学生注册%kubectl描述svc python数据服务
名称:python数据服务
名称空间:默认值
标签:
注释:kubectl.kubernetes.io/last-applicated-configuration:
{“apiVersion”:“v1”,“种类”:“服务”,“元数据”:{“注释”:{},“名称”:“python数据服务”,“命名空间”:“默认”},“规范”:{“端口”:[{“否…”。。。
选择器:app=pythonweb选择器,tier=backend
类型:节点端口
IP:10.107.11.236
端口:5000/TCP
目标端口:5000/TCP
节点端口:30400/TCP
终点:172.17.0.6:5000
会话关联:无
外部流量策略:群集
活动:
sakshiarora@Sakshis-MacBook Pro学生注册%kubectl描述svc python-data-service2
名称:python-data-service2
名称空间:默认值
标签:
注释:kubectl.kubernetes.io/last-applicated-configuration:
{“apiVersion”:“v1”,“种类”:“服务”,“元数据”:{“注释”:{},“名称”:“python-data-service2”,“命名空间”:“默认”},“规范”:{“端口”:[{“p…”。。。
选择器:app=python-web-selector2,tier=backend
类型:集群
IP:10.103.97.40
端口:5000/TCP
目标端口:5000/TCP
终点:172.17.0.8:5000
会话关联:无
活动:
sakshiarora@Sakshis-MacBook Pro学生注册率%
我认为如果在DNS表中它显示范围为172,17.0.X的if,那么它会工作,但不确定为什么它没有显示在DNS条目中,任何指针?Ping对服务
ClusterIP
地址不起作用,因为它们来自iptables规则创建的虚拟地址,这些规则将数据包重定向到端点(pod)
您应该能够ping一个pod,但不能ping一个服务
您可以使用curl
或wget
例如wget-qO-POD_IP:80
或者你可以试试
wget -qO- http://your-service-name:port/yourpath
curl POD_IP:port_number
如果您想使用
NodePort
从集群外部访问python数据服务
,并且您正在使用minikube,那么您应该能够从集群外部的任何地方,即从您的系统,使用curl$(minikube服务python数据服务--url)
来访问
如果您想在集群内的两个微服务之间通信,只需使用ClusterIP
type服务,而不是NodePort
type
要确定是服务问题还是pod问题,请在
curl
命令中直接使用PODIP。从kubectl description svc python data service
的输出中,服务python data service
的pod IP是172.17.0.6
。因此尝试curl 172.17.0.6:5000/getdata
,以便开始调试您r服务我建议采取以下步骤:
检查您的service 1是否可以作为Pod访问:
kubectl运行test1-it--rm=true--image=busybox--restart=Never-n默认值--wget-O-http://172.17.0.6:5000
检查您的service 2是否可以作为Pod访问:
kubectl运行test2-it--rm=true--image=busybox--restart=Never-n默认值--wget-O-172.17.0.8:5000
然后,使用相应的群集IP和DNS名称检查您的服务1是否可以作为服务访问:
kubectl运行test2-it--rm=true--image=busybox--restart=Never-n默认值--wget-O-10.107.11.236:5000
kubectl运行test2-it--rm=true--image=busybox--restart=Never-n默认值--wget-O-http://python-data-service:5000
然后,使用相应的群集IP和DNS名称检查您的服务2是否可以作为服务访问:
kubectl运行test2-it--rm=true--image=busybox--restart=Never-n默认值--wget-O-10.103.97.40:5000
kubectl运行test2-it--rm=true--image=busybox--restart=Never-n默认值--wget-O-http://python-data-service2:5000
然后,如果需要,检查您的服务2是否可以通过节点端口访问(您需要知道服务已公开的节点的IP地址,例如在minikube中,它应该工作:)
从您的服务清单中,我可以推荐指定bo作为一种良好做法
wget -O - http://192.168.99.101:30400