Я изучаю 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/),, но все тот же ответ. Любые идеи, как его устранить?
ОБНОВЛЕНИЕ
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 /