kubernetes 3 (kubectl 명령어, 띄워보기 )

홍기대·2022년 4월 21일
0

쿠버네티스

목록 보기
3/3

🚩Yml 파일로 mysql, wordpress 배포

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

🚩kubectl 명령어

🔴 alias

# alias 설정
alias k='kubectl'

# shell 설정 추가
echo "alias k='kubectl'" >> ~/.bashrc
source ~/.bashrc

🟠 상태 설정하기 (apply)

원하는 리소스의 상태를 YAML로 작성하고 apply 명령어로 선언
kubectl apply -f [파일명 또는 URL]
파일명뿐 아니라 URL도 입력이 가능

# 다시 한번 워드프레스 배포하기 (URL로!)
kubectl apply -f https://subicura.com/k8s/code/guide/index/wordpress-k8s.yml

🟡 리소스 목록보기 (get)

선언된 리소스를 확인 하는 명령어
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

🟢 리소스 상세 상태 보기 (describe)

쿠버네티스에 선언된 리소스의 상세한 상태를 확인
kubectl describe [TYPE]/[NAME] 또는 [TYPE][NAME]
특정 리소스의 상태가 궁금하거나 생성이 실패한 이유를 확인할 때 주로 사용.

# Pod 조회로 이름 검색
kubectl get pod

# 조회한 이름으로 상세 확인
kubectl describe pod/wordpress-5f59577d4d-8t2dg # 환경마다 이름이 다름

🔵 리소스 제거 (delete)

쿠버네티스에 선언된 리소스를 제거하는 명령어
kubectl delete [TYPE]/[NAME] 또는 [TYPE][NAME]

# Pod 조회로 이름 검색
kubectl get pod

# 조회한 Pod 제거
kubectl delete pod/wordpress-5f59577d4d-8t2dg

RelicatSet이 Pod의 개수를 유지하기 떄문에 자꾸 살아남

🟣 컨테이너 로그 조회 (logs)

컨테이너의 로그를 확인하는 명령어
kubectl logs [POD_NAME]
실시간 로그를 보고 싶다면 -f 옵션을 이용하고 하나의 Pod에 여러 개의 컨테이너가 있는 경우는 -c 옵션

# Pod 조회로 이름 검색
kubectl get pod

# 조회한 Pod 로그조회
kubectl logs wordpress-5f59577d4d-8t2dg

# 실시간 로그 보기
kubectl logs -f wordpress-5f59577d4d-8t2dg

🟤 설정 관리 (config)

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
profile
열심히 살자

0개의 댓글