source

PHP 테스트 응용 프로그램의 Kubernetes 배포

gigabyte 2022. 12. 28. 21:39
반응형

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/)를 통해 접속하려고 했지만, 같은 응답입니다.트러블 슈팅 방법 없을까요?

PHP 앱 서비스


갱신하다

도커 파일 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

반응형