본문 바로가기
클라우드 기초/도커&컨테이너

쿠버네티스로 wordpress + mysql 연동하기

by 라라쇼퍼 2023. 6. 23.
반응형

현재 control(ip주소:10.0.0.1), node1(10.0.0.2), node2(10.0.0.3), node3(10.0.0.4) 이렇게 구축이 되어 있습니다.

 

image pull rate limit에서 문제가 있어 어쩔수 없이 로컬에서 docker 로 받은 이미지를 썼습니다.

 

docker 가 설치된 가상머신에서 tar 파일을 만들어 쿠버네티스 가상머신으로 복사합니다.

 

docker save -o word.tar mysql:5.7, wordpress:5.6

scp word.tar root@10.0.0.1:/root

scp word.tar root@10.0.0.2:/root

scp word.tar root@10.0.0.3:/root

 

control, node1, node2, node3 각각마다 이미지를 불러오고 확인합니다. 

crictl images
ctr --namespace k8s.io image import word.tar
crictl -r unix:///run/containerd/containerd.sock image ls

# 불러온 이미지 지울땐 이런식으로...
crictl -r unix:///run/containerd/containerd.sock rmi wordpress:5.6

 

# manifest file (yaml)로 wordpress:5.6 컨테이너 pod 생성하기

vi word.yml

원래 노드 설정을 안해줘도 돌아가야하지만,..

전 자꾸 에러가 떠서 노드 설정을 하니 문제가 없어졌습니다.

 

imagePullPolicy는 현재 외부에서 image 받아오는게 안되고 있으므로, Never 또는 IfNotPresent를 씁니다. 

(( WORDPRESS_DB_HOST 의 value 값은 사실은 mysql pod 먼저 생성한 뒤, 해당 pod 의 ip 주소 알아내고 써야합니다.))

 

# manifest file (yaml)로 mysql:5.7 컨테이너 pod 생성하기

vi mysql.yml

 

wordpress 와 mysql  yaml 파일을 한꺼번에 만들어도 되지만

저는 지속적인 crashloopback error 때문에 하나씩 확인하면서 실행해보았습니다. (ㅜㅜ;;)

 

kubectl apply -f word.yml

kubectl apply -f mysql.yml

 

kubectl get po -n 1team

kubectl get po -n 1team -o wide --show-labels

-o wide --show-labels을 붙이면 내부 ip 주소, node 정보, app 이름이 추가된 것을 확인할 수 있습니다. 

 

# wordpress 서비스 실행 및 포트 번호 확인

kubectl expose po -n 1team word --type=NodePort -l app=web

kubectl get svc -n 1team

30583 번 포트로 매핑됩니다.

최종 확인

반응형

댓글