kubernates с nginx / PHP-fpm не работает

#php #laravel #docker #nginx #kubernetes

#php #laravel #docker #nginx #kubernetes

Вопрос:

Я пытаюсь создать автоматическое масштабирование с помощью Kubernetes, у меня есть система Laravel, я развертываю эту систему в Kubernetes, используя эти файлы YAML ConfigMap.yam

 kind: ConfigMap
apiVersion: v1
metadata:
  name: qsinav-nginx-config
data:
  default.conf: |
        server {
            listen 80 default_server;
            listen [::]:80 default_server;
            server_name _;
            root        /var/www/html/Test/qSinav-starter/public;

         
            location / {
              try_files $uri $uri/ /index.php?$query_string;
                }


        location ~ ^/index.php(/|$) {
              
                fastcgi_split_path_info ^(. .php)(/.*)$;
            
 
         fastcgi_index            index.php;
         fastcgi_pass             127.0.0.1:9000;
         include                  fastcgi_params;
         fastcgi_param   PATH_INFO       $fastcgi_path_info;
         fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;


            internal;
            }

            location ~ .php$ {
              return 404;
            }

            client_max_body_size 6m;

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

это файл yaml для создания контейнеров nginx / php-fpm

 apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: app
  name: qsinav6
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: app
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: app
    spec:
      containers:
      - name: sylius-php-fpm
        image: bitnami/php-fpm
        imagePullPolicy: Never
        ports:
        - containerPort: 9000
          name: http
          protocol: TCP
        volumeMounts:
        - name: qsinav-nginx-config-volume
          mountPath: /etc/nginx/conf.d/default.conf
          subPath: default.conf
        - name: qsinav-www-storage
          mountPath: /var/www/html/Test/qSinav-starter
        resources:
            requests:
                cpu: 100m
          
      - name: nginx2
        image: nginx:alpine
        imagePullPolicy: Always
        ports:
        - containerPort: 80
          name: http
          protocol: TCP
        volumeMounts:
        - name: qsinav-nginx-config-volume
          mountPath: /etc/nginx/conf.d/default.conf
          subPath: default.conf
        - name: qsinav-www-storage
          mountPath: /var/www/html/Test/qSinav-starter
        resources:
            requests:
                cpu: 100m
      restartPolicy: Always
      serviceAccountName: ""
      volumes:
      - name: qsinav-www-storage
        
        persistentVolumeClaim:
          claimName: qsinav-pv-www-claim
      - name: qsinav-nginx-config-volume
        configMap:
          name: qsinav-nginx-config
 

и вот как я раскрываю сервис

  kubectl expose deployment qsinav6 --type=LoadBalancer --name=qsinav-service
 

и вот результат

kubectl получает сервисы

 qsinav-service                            LoadBalancer   10.106.113.217   10.106.113.217   9000:32071/TCP,80:30078/TCP   12m
 

теперь, когда я пытаюсь получить доступ к своей системе с помощью браузера, я пытаюсь получить доступ, используя этот URL-адрес, предоставленный службами

10.106.113.217

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

Файл не найден.

Я не знаю, где что-то не так, но иногда это работает, и я могу получить доступ к системе, но затем я получаю сообщение об ошибке file not found от Nginx

Комментарии:

1. Здравствуйте, не могли бы вы пояснить, что вы имеете в виду, когда говорите о autoscaling том, где нет ресурсов, которые должны отвечать за это ( HPA )? Кроме того, что именно происходит, когда вы пытаетесь получить доступ к своему Pod ? Кроме того, какое решение Kubernetes вы используете ( minikube , kubeadm кластер, какой-либо облачный провайдер, управляемый как GKE или EKS )?

2. на самом деле я новичок в kubernetes, я использую minikube

3. Приношу извинения за поздний ответ. Мне удалось воспроизвести вашу настройку и не обнаружил никаких проблем с частью Kubernetes (связь с Pod ней происходит правильно). Я бы предположил, что проблема с конфигурацией будет заключаться в nginx.conf части и / или php-fpm . Вы случайно не видели это руководство: ewpalmer.net/kubernetes-app-developer/articles/php-fpm-nginx-kubernetes.html . Он показывает, как вы можете создать nginx, php-fpm контейнер на Kubernetes.