PHP 테스트 응용 프로그램의 Kubernetes 배포
지금은 Kubernetes를 배우고 있어요.저는 첫 번째 도커를 배웠고 도커파일을 만들고 이미지를 만들었습니다.이것은 기본적인 PHP 어플리케이션으로 PDO를 통해 MariaDB 데이터베이스에 접속을 시도하고 phpinfo() 함수를 호출합니다.도커 컴포지트에서는 정상적으로 동작합니다.다음 단계는 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
DB 도입:
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
DB-Service:
kind: Service
apiVersion: v1
metadata:
name: db-service
spec:
selector:
app: db
ports:
- protocol: TCP
port: 3306
targetPort: 3306
minikube 클러스터에 모든 파일을 cubectl 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 대시보드에서는 모든 서비스가 실행되지만 배포, 포드 및 복제 세트에서는 DB 부품이 실행되지 않습니다.팟에는 "Waiting: Crash Loop Error"라고 표시되어 있습니다.
내가 뭘 잘못했는지, 이번 실패를 통해 무엇을 배울 수 있을까?
이 도커 컴포지트 파일을 사용하면 응용 프로그램 전체가 완벽하게 실행됩니다.
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"
갱신하다
미니큐브 대시보드에서 모든 배포, 포드 및 나머지는 녹색으로 표시됩니다.접속이 거부되어 아직 어플리케이션에 접속할 수 없습니다./ : (http://127.0.0.1:31000/)를 통해 접속하려고 했지만, 같은 응답입니다.트러블 슈팅 방법 없을까요?
갱신하다
도커 파일 DB:
FROM mariadb/server:latest
COPY dump.sql /docker-entrypoint-initdb.d/
도커 파일 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>
팟이 충돌하는 이유에 대한 자세한 정보를 볼 수 있습니다.
그게 충분하지 않다면, 시도해봐.kubectl logs <YOUR DB POD>
모든 오류와 경고를 포함한 로그가 표시됩니다.
minikube가 설정되어 있는IP 를 체크해, localhost 대신에 사용할 필요가 있습니다.
이것은 체크인 할 수 있습니다.dashboard
다음에 나오는Cluster > Nodes > minikube
경로 또는 이 명령어 사용minikube ip
그리고 이것은 서비스가 작동하는지 확인하기 위해 사용해야 합니다.
또한 NGINX 입력 컨트롤러에서 Minikube에서의 입력 설정을 체크할 것을 강력히 권장합니다.
언급URL : https://stackoverflow.com/questions/58410213/kubernetes-deployment-of-a-php-test-application
'source' 카테고리의 다른 글
목록에 Python 가져오기 CSV (0) | 2022.12.28 |
---|---|
선택된 데이터베이스를 확인하는 방법 (0) | 2022.12.28 |
Ajax를 Django 애플리케이션과 통합하려면 어떻게 해야 합니까? (0) | 2022.12.28 |
Python 요청 - 연결 어댑터 없음 (0) | 2022.12.28 |
PHP의 NULL과 NULL의 차이 (0) | 2022.12.28 |