Nginx php -fpm при проблеме тайм-аута в Кубернет - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь определить развертывание в Kubernetes для веб-приложения.

Как вы можете видеть в следующем манифесте развертывания, есть модуль с двумя контейнерами внутри:

  • Nginx
  • php -fpm
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: app
  name: web
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: app
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: app
    spec:
      containers:
      - name: sylius-php-fpm
        image: php-fpm:v4
        imagePullPolicy: Never
        volumeMounts:
        - name: nginx-config-volume
          mountPath: /etc/nginx/conf.d/default.conf
          subPath: default.conf
      - name: nginx
        image: nginx:alpine
        imagePullPolicy: Always
        ports:
        - containerPort: 80
          name: http
          protocol: TCP
        volumeMounts:
        - name: nginx-config-volume
          mountPath: /etc/nginx/conf.d/default.conf
          subPath: default.conf
      restartPolicy: Always
      volumes:
      - name: nginx-config-volume
        configMap:
          name: nginx-config

Я определил том с помощью configMap о конфигурации nginx:

kind: ConfigMap
apiVersion: v1
metadata:
  name: nginx-config
data:
  default.conf: |
        server {
            listen 80 default_server;
            listen [::]:80 default_server;
            server_name _;
            root        /srv/app/public;

            location / {
                try_files $uri /index.php$is_args$args;
            }

            location ~ ^/index\.php(/|$) {
                fastcgi_pass php-fpm:9000;
                fastcgi_read_timeout 300;
                proxy_read_timeout 300;
                fastcgi_split_path_info ^(.+\.php)(/.*)$;
                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
                fastcgi_param DOCUMENT_ROOT $realpath_root;
                internal;
            }

            location ~ \.php$ {
              return 404;
            }

            client_max_body_size 6m;

            error_log  /var/log/nginx/error.log;
            access_log /var/log/nginx/access.log;
        }

Также я использую ksyn c для синхронизации c исходного кода между средой разработки и кластером Kubernetes. Итак, я выставил nginx на 80 портах и ​​cgi на 9000 портах, определяя сервисы следующим образом:

apiVersion: v1
kind: Service
metadata:
  name: nginx
  labels:
    app: app
spec:
  ports:
  - name: http
    port: 80
    targetPort: 80
  selector:
    app: app
  type: ClusterIP 
------
apiVersion: v1
kind: Service
metadata:
  name: php-fpm
  labels:
    app: app
spec:
  ports:
  - name: http
    port: 9000
    targetPort: 9000
  selector:
    app: app
  type: ClusterIP 

и определил переадресацию портов для доступа к веб-серверу из локальной среды следующим образом:

kubectl port-forward web-68b788956d-98zcs 80:80

Я не понимаю, почему, когда я пытаюсь посетить 127.0.0.1, я получаю ошибку, произошедшую по таймауту

Кажется, что nginx не связывается с php -fpm контейнером

Я говорю это, потому что, если я пытаюсь увидеть файл html на сервере путей root, он работает нормально, но индекс. php в том же каталоге не работает.

Также когда я пытаюсь пропинговать php -fpm из nginx контейнера

Как я могу решить мою проблему? Кто-нибудь может мне помочь, пожалуйста?

Спасибо всем заранее и извините за длинный пост.

...