Kubernetes PHP NGINX Pods相互通信

Kubernetes PHP NGINX Pods相互通信,kubernetes,Kubernetes,我正在运行一个3-master和3-worker集群,试图将来自php fpm服务的POD与来自nginx服务的POD进行通信,甚至CNI也从Calico更改为Weave,但问题仍然存在,任何帮助都会很好。在我的nginx配置中,我有: location ~ \.php$ { root /var/www/html; fastcgi_pass php:9000; fastcgi_

我正在运行一个3-master和3-worker集群,试图将来自php fpm服务的POD与来自nginx服务的POD进行通信,甚至CNI也从Calico更改为Weave,但问题仍然存在,任何帮助都会很好。在我的nginx配置中,我有:

            location ~ \.php$ {
            root           /var/www/html;
            fastcgi_pass   php:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
            fastcgi_read_timeout 300;
        }
因此,我希望得到名为“php:9000”的php fpm服务。以下是我的部署和服务:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web
spec:
  selector:
    matchLabels:
      component: web
  replicas: 9
  template:
    metadata:
      labels:
        component: web
    spec:
      containers:
      - name: web
        image: docker-registry.vetorial.net/gponapi-nginx
        ports:
        - containerPort: 80
      imagePullSecrets:
        - name: regcred
---
apiVersion: v1
kind: Service
metadata:
  name: web
  labels:
    component: web
spec:
  type: ClusterIP
  ports:
  - port: 80
    targetPort: 80
  selector:
    component: web
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: php
spec:
  selector:
    matchLabels:
      component: php
  replicas: 9
  template:
    metadata:
      labels:
        component: php
    spec:
      containers:
      - name: php
        image: docker-registry.vetorial.net/gponapi-php
        ports:
        - containerPort: 9000
      imagePullSecrets:
        - name: regcred
---
apiVersion: v1
kind: Service
metadata:
  name: php
spec:
  type: ClusterIP
  selector:
    component: php
  ports:
  - port: 9000
    targetPort: 9000

我得到的错误是:

2019/12/21 12:54:25 [emerg] 1#1: host not found in upstream "php" in /etc/nginx/nginx.conf:52
nginx: [emerg] host not found in upstream "php" in /etc/nginx/nginx.conf:52
我的部署和服务有问题吗

编辑:

正在尝试调试DNS我看到POD正在尝试解析从主机继承的DNS中的名称:

[ root@k8-master-01  >  ~/gponApi ] kubectl exec -ti busybox -- nslookup kubernetes.default
Server:    10.96.0.10
Address 1: 10.96.0.10

[ root@k8-master-01  >  ~/gponApi ] for p in $(kubectl get pods --namespace=kube-system -l k8s-app=kube-dns -o name); do kubectl logs --namespace=kube-system $p; done
.:53
[INFO] plugin/reload: Running configuration MD5 = 4e235fcc3696966e76816bcd9034ebc7
CoreDNS-1.6.5
linux/amd64, go1.13.4, c2fd1b2
[INFO] Reloading
[INFO] plugin/health: Going into lameduck mode for 5s
[INFO] plugin/reload: Running configuration MD5 = a4809ab99f6713c362194263016e6fac
[INFO] Reloading complete
[INFO] 127.0.0.1:60092 - 22335 "HINFO IN 6654671708538411669.1329448889047522534. udp 57 false 512" NOERROR - 0 4.001984467s
[ERROR] plugin/errors: 2 6654671708538411669.1329448889047522534. HINFO: read udp 10.32.0.4:37293->187.86.128.99:53: read: no route to host



这是firewalld,禁用它后一切正常。

如果我错了,请纠正我,但听起来你好像在尝试将PHP-FPM与nginx分开运行。我认为这不是库伯内特斯的正确方法。我更愿意建议您有一个能够在pod上运行PHP应用程序的容器,并使用服务公开它。如果您需要PHP-FPM+Nginx,那么它将位于一个容器中,我认为在一个pod中运行所有内容会更容易,但我正在尝试了解kubernetes是如何工作的,这就是为什么我问我的配置文件中是否有错误,Nginx pods似乎无法通过服务访问PHP pods,所以我试图理解原因。