wordpress-mysql.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: wordpress-mysql
labels:
app: wordpress
spec:
selector:
matchLabels:
app: wordpress
tier: mysql
template:
metadata:
labels:
app: wordpress
tier: mysql
spec:
containers:
- image: mariadb:10.7
name: mysql
env:
- name: MYSQL_DATABASE
value: wordpress
- name: MYSQL_ROOT_PASSWORD
value: password
ports:
- containerPort: 3306
name: mysql
---
apiVersion: v1
kind: Service
metadata:
name: wordpress-mysql
labels:
app: wordpress
spec:
ports:
- port: 3306
selector:
app: wordpress
tier: mysql
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: wordpress
labels:
app: wordpress
spec:
selector:
matchLabels:
app: wordpress
tier: frontend
template:
metadata:
labels:
app: wordpress
tier: frontend
spec:
containers:
- image: wordpress:5.9.1-php8.1-apache
name: wordpress
env:
- name: WORDPRESS_DB_HOST
value: wordpress-mysql
- name: WORDPRESS_DB_NAME
value: wordpress
- name: WORDPRESS_DB_USER
value: root
- name: WORDPRESS_DB_PASSWORD
value: password
ports:
- containerPort: 80
name: wordpress
---
apiVersion: v1
kind: Service
metadata:
name: wordpress
labels:
app: wordpress
spec:
type: NodePort
ports:
- port: 80
selector:
app: wordpress
tier: frontend
kubectl apply -f wordpress-mysql.yml
kubectl get all
minikube ip 명령어로 얻은 주소로 접속, 포트확인
Docker driver를 사용중이라면 minikube service wordpress 명령어를 통해 확인 가능
확인 후 리소스 제거
kubectl delete -f wordpress-mysql.yml
# alias 설정
alias k='kubectl'
# shell 설정 추가
echo "alias k='kubectl'" >> ~/.bashrc
source ~/.bashrc
원하는 리소스의 상태를 YAML로 작성하고 apply 명령어로 선언
kubectl apply -f [파일명 또는 URL]
파일명뿐 아니라 URL도 입력이 가능
# 다시 한번 워드프레스 배포하기 (URL로!)
kubectl apply -f https://subicura.com/k8s/code/guide/index/wordpress-k8s.yml
선언된 리소스를 확인 하는 명령어
kubectl get [TYPE]
다양한 옵션들이 있는데 출력 형태를 변경할 수 있는 -o와 레이블을 확인할 수 있는 --show-labels 등이 있음
# Pod 조회
kubectl get pod
# 줄임말(Shortname)과 복수형 사용가능
kubectl get pods
kubectl get po
# 여러 TYPE 입력
kubectl get pod,service
#
kubectl get po,svc
# Pod, ReplicaSet, Deployment, Service, Job 조회 => all
kubectl get all
# 결과 포멧 변경
kubectl get pod -o wide
kubectl get pod -o yaml
kubectl get pod -o json
# Label 조회
kubectl get pod --show-labels
쿠버네티스에 선언된 리소스의 상세한 상태를 확인
kubectl describe [TYPE]/[NAME] 또는 [TYPE][NAME]
특정 리소스의 상태가 궁금하거나 생성이 실패한 이유를 확인할 때 주로 사용.
# Pod 조회로 이름 검색
kubectl get pod
# 조회한 이름으로 상세 확인
kubectl describe pod/wordpress-5f59577d4d-8t2dg # 환경마다 이름이 다름
쿠버네티스에 선언된 리소스를 제거하는 명령어
kubectl delete [TYPE]/[NAME] 또는 [TYPE][NAME]
# Pod 조회로 이름 검색
kubectl get pod
# 조회한 Pod 제거
kubectl delete pod/wordpress-5f59577d4d-8t2dg
RelicatSet이 Pod의 개수를 유지하기 떄문에 자꾸 살아남
컨테이너의 로그를 확인하는 명령어
kubectl logs [POD_NAME]
실시간 로그를 보고 싶다면 -f 옵션을 이용하고 하나의 Pod에 여러 개의 컨테이너가 있는 경우는 -c 옵션
# Pod 조회로 이름 검색
kubectl get pod
# 조회한 Pod 로그조회
kubectl logs wordpress-5f59577d4d-8t2dg
# 실시간 로그 보기
kubectl logs -f wordpress-5f59577d4d-8t2dg
kubectl은 여러 개의 쿠버네티스 클러스터를 컨텍스트context로 설정하고 필요에 따라 선택할 수 있음. 현재 어떤 컨텍스트로 설정되어 있는지 확인하고 원하는 컨텍스트를 지정
# 현재 컨텍스트 확인
kubectl config current-context
# 컨텍스트 설정
kubectl config use-context minikube
# 전체 오브젝트 종류 확인
kubectl api-resources
# 특정 오브젝트 설명 보기
kubectl explain pod
# 조회한 Pod의 컨테이너에 접속
kubectl exec -it wordpress-5f59577d4d-8t2dg -- bash
kubectl delete -f https://subicura.com/k8s/code/guide/index/wordpress-k8s.yml