Kubernetes PHP NGINX Pods相互通信
我正在运行一个3-master和3-worker集群,试图将来自php fpm服务的POD与来自nginx服务的POD进行通信,甚至CNI也从Calico更改为Weave,但问题仍然存在,任何帮助都会很好。在我的nginx配置中,我有: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_
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,所以我试图理解原因。