我现在正在学习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/)访问,但是还是一样的反应。任何想法如何解决它?
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 /
答案 0 :(得分:1)
如果您执行kubectl describe pod <YOUR DB POD>
,将会看到有关吊舱崩溃原因的更多信息。
如果这还不够,请尝试kubectl logs <YOUR DB POD>
,您将获得所有错误和警告的日志。
答案 1 :(得分:0)
您应该检查minikube配置了哪些IP,并使用它代替localhost。
可以在dashboard
路径后的Cluster > Nodes > minikube
中进行检查,也可以使用此命令minikube ip
进行检查,这应该用于检查服务是否正常工作。
我也强烈建议您检查Set up Ingress on Minikube with the NGINX Ingress Controller。