#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.