gpt4 book ai didi

php - Kubernetes部署php测试应用程序

转载 作者:行者123 更新时间:2023-12-02 11:39:17 25 4
gpt4 key购买 nike

我现在正在学习Kubernetes。我首先学习了docker,并创建了自己的Dockerfile,并构建了自己的镜像。这是一个基本的PHP应用程序,它尝试通过PDO连接到MariaDB数据库,并调用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服务:
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

我使用kubectl apply -f fileName在minikube集群上部署了所有文件。

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仪表板上,所有服务都运行,但是在部署,pod和副本集上,数据库部分不运行。在广告连播中显示“正在等待:CrashLoopError”。

我有什么错误,通过失败我能学到什么?

整个应用程序与此docker-compose文件一起完美运行:
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"

更新

在minikube仪表板中,所有部署,pod和其余的都是绿色的……但是由于连接被拒绝,我仍然无法访问我的应用程序://我尝试通过:( http://127.0.0.1:31000/)访问,但是响应仍然相同。任何想法如何解决它?

PHP App Service

更新

Dockerfile数据库:
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 /

最佳答案

如果您执行kubectl describe pod <YOUR DB POD>,将会看到有关Pod崩溃原因的更多信息。

如果这还不够,请尝试使用kubectl logs <YOUR DB POD>,您将获得所有错误和警告的日志。

关于php - Kubernetes部署php测试应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58410213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com