Kubernetes:无法在两个服务内通信(不同的pod,相同的命名空间)

Kubernetes:无法在两个服务内通信(不同的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

我无法在两个服务之间进行通信

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:
     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