도커와 쿠버네티스

염지현·2024년 1월 12일

FLY AI 4기

목록 보기
14/16

1. 도커

docker pull
docker run -it -p 5000:5000 [도커 허브 주소:태그]
  • build는 이미지를 빌드하는 것이기 때문에 이미지 pull 할 때는 굳이 할 필요 없음

실습 - 네트워크 측면: VM에서 Docker로 웹 프로젝트 실행


1. public ip로 접속
- public ip가 포트를 통해 private ip로 연결
2. 설정한 포트로 포트 포워딩
3. 도커로 컨테이너 실행

2. 쿠버네티스(K8S)

  • 여러 대의 가상 머신을 관리하는 기술

2.1. 아키텍처

  • master가 노드를 관리함

2.2. Docker desktop으로 쿠버네티스 설치하기

2.3. 리눅스에 minikube 설치하기

터미널 열고 하단의 명령어 실행

curl -LO https://storage.googleapis.com/minikube/releases/v1.22.0/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
minikube --help
curl -LO https://dl.k8s.io/release/v1.22.1/bin/linux/amd64/kubectl
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

설치 완료

설치 확인

minikube version
kubectl version
minikube start --driver=docker

2.4. 파드

kubectl run nginx --image nginx --port=80
kubectl get pods

  • 위처럼 status가 Running이어야 돌아가는 것. crash나거나 status가 이상하면 파드 받다가 뻑난 것이기 때문에 파드 삭제하고 다시 런하기
  • 삭제명령어 실행 후 위에 있는 명령어 실행
kubectl delete pod nginx
kubectl port-forward nginx 18080:80

위와 같이 실행후 로컬호스트:18080 하면 성공

실습2: yaml로 파드 생성

  1. yaml 파일로 파드 생성
kubectl apply -f pod.yaml

파드 생성 후 반드시 get pods해서 상태: running인지 확인 할 것

kubectl get pods -w # 계속 확인할 수 있음


2. 만약 상태가 이상할 경우 describe로 오류 원인 찾기

kubectl describe pod
kubectl describe pod -o wide # 더 정보를 자세히 볼 수 있음
  1. 로그를 확인하기 위해 다음과 같은 명령어 사용
kubectl logs counter[counter == 파드 이름]
kubectl logs counter -f # -f를 통해 실시간으로 로그 찍히는 거 확인 가능
  1. 컨테이너 내부에 있는 것 실행
kubectl exec -it counter
  1. 파드 삭제
kubectl delete pod counter[counter == 파드이름]

2.5. Deployment

업데이트 시 블루 그린 방식

deployment 실습

  1. deployment 생성 및 조회
kubectl apply -f deploy.yaml
kubectl get deploy
kubectl get pod

kubectlr get deploy,pod # deployment랑 pod 동시 조회 가능


2. 내가 적은 yaml 파일에는 pad가 항상 3개 떠있어야 함. 그 3개를 묶어서 ReplicaSet이라고 함. 따라서 위에서 보이는 파드 한 개를 임의로 삭제해도 자동으로 파드 하나를 생성해줌

  • 삭제 후
  • 두번째 파드가 만들어진지 4초밖에 안된다는 것을 볼 수 있음 --> 새로 생김
  1. replicas 수 변경
kubectl scale deployment/nginx-deployment --replicas=5

  1. depolyment 삭제
kubectl delete deploy [deploymnet 이름]

2.6. 서비스

  1. 서비스 생성
kubectl apply -f svc.yaml
  1. 서비스 조회하면 포트 번호 알 수 있음
kubectl get service

2.7. PVC

  • 컨테이너는 실행 중에만 파일이 저장되고 그 이후에는 사라짐
  • 이를 해결하기 위해 파드용 볼륨이 따로 있음
  1. PVC 생성
kubectl apply -f pvc.yaml
  1. 파드 생성
kubectl pod-pvc.yaml # 파드가 생성되고 러닝한 다음 끈 이후에도 pvc에 저장되어 있는지 확인하기 위해 파드 생성
  1. 파드 생성후 파일 저장
kubectl exec -it mypod -- bash
touch hello1
cd /var/www/html
touch hello2
  1. 파드 삭제
kubectl delete pod mypod
  1. 파일 확인
kubectl exec -it mypod -- bash
ls
# hello1 파일이 사라진 것을 확인할 수 있습니다.
cd /var/www/html
ls
# hello2 파일이 그대로 보존되는 것을 확인할 수 있습니다.

0개의 댓글