Kubernetes развертывание php тестового приложения - PullRequest
1 голос
/ 16 октября 2019

Я изучаю Kubernetes в данный момент. Я выучил первый докер, создал собственные Dockerfiles и создал свои собственные изображения. Это базовое PHP-приложение, которое пытается подключиться к базе данных MariaDB через PDO и вызывает функцию phpinfo (). Так что через docker-compose все работает нормально. Следующий шаг для меня - запустить его в кластере Kubernetes. Я пробовал это по-разному, и это не работает. Я не могу открыть index.php в моем браузере: (

Развертывание PHP:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: php-app-deployment
  labels:
    app: php-app
spec:
  replicas: 2
  selector:
    matchLabels:
      app: php-app
  template:
    metadata:
      labels:
        app: php-app
    spec:
      containers:
      - name: php-app
        image: amannti/my_php_image:1.2
        ports:
        - containerPort: 80

PHP-Service :

kind: Service 
apiVersion: v1 
metadata: 
  name: php-app-service 
spec: 
  selector: 
    app: php-app 
  ports: 
  - protocol: TCP 
    port: 80 
    targetPort: 80 
    nodePort: 31000 
  type: NodePort 

Развертывание БД:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: db-deployment
  labels:
    app: db
spec:
  replicas: 1
  selector:
    matchLabels:
      app: db
  template:
    metadata:
      labels:
        app: db
    spec:
      containers:
      - name: db
        image: amannti/carpool_maria_db:1.1
        ports:
        - containerPort: 3306

Служба БД:

kind: Service 
apiVersion: v1 
metadata: 
  name: db-service 
spec: 
  selector: 
    app: db 
  ports: 
  - protocol: TCP 
    port: 3306 
    targetPort: 3306

Я развернул все файлына моем кластере minikube с kubectl apply -f fileName .

Приложение php содержит только этот код:

<?php
$servername = "oldcarpoolsystem_db_1";
$username = "root";
$password = "root";
$dbName = "carpoolSystem";

try {
  $conn = new PDO("mysql:host=$servername;dbname=" . $dbName, 
      $username, $password);
  // set the PDO error mode to exception
  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  echo "PDO: Connected successfully<br>";
 }
 catch(PDOException $e) {
   echo "PDO: Connection failed: " . $e->getMessage() . "<br>";
 }

 phpinfo();

База данных содержит только несколько таблиц и называется carpoolSystem.

Я попытался подключиться через http://127.0.0.1:31000/ к моему веб-сайту. Но там написано "Отказано в соединении" :( На инструментальной панели Kubernetes все службы работают, но при развертывании, модулях и репликах задайтеЧасть БД не запускается. В модулях написано «Waiting: CrashLoopError».

В чем мои ошибки, что я могу узнать из этого сбоя?

Все приложение отлично работает с этим докером-компонентный файл:

version: '3'

services:
  db:
    image: amannti/carpool_maria_db:1.1
    environment:
      MYSQL_ROOT_PASSWORD: root
    ports:
      - "3306:3306" #Left Container | Right Output
  web:
    image: amannti/my_php_image:1.2
    container_name: php_web
    depends_on:
      - db
    ports:
      - "80:80"

ОБНОВЛЕНИЕ

В сводной панели миникуба все развертывания, модули и все остальное зеленые ... Но у меня есть стильl нет доступа к моему приложению из-за отказа в соединении: / я пытался получить доступ через: (http://127.0.0.1:31000/),, но все тот же ответ. Любые идеи, как его устранить?

PHP App Service


ОБНОВЛЕНИЕ

Dockerfile DB:

FROM mariadb/server:latest

COPY dump.sql /docker-entrypoint-initdb.d/

Dockerfile PHP:

# This Dockerfile uses the first version of my php image
FROM amannti/my_php_image:1.0

# Copy app's source code to the /src directory
COPY ./src /var/www/html

# The source directory will be the working directory
WORKDIR /

Ответы [ 2 ]

1 голос
/ 16 октября 2019

Если вы сделаете kubectl describe pod <YOUR DB POD>, вы увидите немного больше информации о том, почему происходит сбой модуля.

Если этого недостаточно, попробуйте kubectl logs <YOUR DB POD>, у вас будут журналы со всеми ошибками ипредупреждение.

0 голосов
/ 17 октября 2019

Вы должны проверить, на каком IP настроен ваш миникуб и использовать его вместо localhost.

Это можно проверить в dashboard по Cluster > Nodes > minikube пути или с помощью этой команды minikube ip, и это должноиспользоваться для проверки работоспособности сервиса.

Я также настоятельно рекомендую проверить Настроить вход на Minikube с помощью контроллера входа NGINX .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...