🐋
docker-kubernetes ) til - 20240513
May 15, 2024
색션 13. Kubernetes로 데이터 & 볼륨 관리하기
211. Kubernetes 볼륨 : 이론 & Docker 와의 비교
- 당연한 말이지만 Pod의 일부로 시작되는 컨테이너에 볼륨을 탑재 하며, 탑재해야하는 내용에 대해 Pod Template 에 추가할 수 있다.
- 이러한 점에서 쿠버네티스는 다양한 형태와 드라이버를 제공하고 기본적으로 큰 기준으로는
로컬 볼륨
과클라우드 프로바이더 제공 볼륨
정도로 나눌 수 있다. - 여기서 핵심은 볼륨의 라이프타임, 생명주기가 Pod의 생명주기에 의존한 단 부분일 것이다.
- 즉, 볼륨도 쿠버네티스에 의해 시작되고, Pod와 함께하는, Pod의 일부다. 그렇다는 말은 Pod에 따라 볼륨은 달라지고, 대게 문제는 없으나, 때론 이 과정에서 문제가 발생하니 이를 이해하고, 잠재적인 문제 해결 방안을 아는게 핵심이라고 볼 수 있다.
볼륨의 수명
- 볼륨의 수명은 Pod 와 함게 한다고 보면 된다. 따라서 내부의 컨테이너의 수명과는 관련이 없어서, 컨테이너를 다시 시작하고, 제거해도 살아남는다.
- 하지만 Pod의 종료에는 볼륨도 살아 남을 순 없고, Pod가 삭제 되더라도 유지되도록 하려면 향후 배울 고급 개념으로 Pod를 설정해 줘야 하는 것이다.
도커의 볼륨 , 쿠버네티스의 볼륨
- 기본적으로 쿠버네티스의 볼륨은 도커의 그것보다 강력하고, 더 다양한 드라이버 유형을 가지고 있다.
- 쿠버네티스의 경우 호스팅 환경에서 여러 노드가 있는 클러스터에서 애플리케이션을 실행할 수 있고, AWS, 자체 데이터 센터 등 어디든 데이터 저장 방법에 대해 유연하게 대응한다.
- 쿠버네티스의 볼륨의 핵심 아이디어는, 도커의 그것을 이용하지만 더 많은 기능과 구성 옵션을 갖고 있고, 무엇보다 Pod의 생명주기 연장선 상에서 움직인다는 점을 이해해야 한다.
212. 새 Deployment & Service 만들기
%% dockerfile %%
FROM node:14-alpine
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
EXPOSE 3000
CMD [ "node", "app.js" ]
# docker-compose.yaml
version: "3"
services:
stories:
build: .
volumes:
- stories:/app/story
ports:
- 80:3000
volumes:
stories:
# mine-deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: haryu-story-deployment
spec:
replicas: 1
selector:
matchLabels:
app: haryu-story
template:
metadata:
labels:
app: haryu-story
spec:
containers:
- name: haryu-story
image: axel9309/kub-data-demo:1
# mine-service.yml
apiVersion: v1
kind: Service
metadata:
name: haryu-story-service
spec:
selector:
app: haryu-story
ports:
- protocol: "TCP"
port: 80
targetPort: 3000
type: LoadBalancer
- 기본적인 설정에 대한 강의다.
- 기본 원리는 다음과 같다.
- Dockerfile, Docker-compose 파일을 준비하여 이미지를 만들어둔다 =
docker build -t {docker-name}/{docker-image-name} .
- 여기에 태그 등을 통해 구체화도 가능하다.
- 만들어둔 이미지는 도커 허브에 올리면 된다. =
docker push {docker-name}/{docker-image-name}
- 쿠버네티스를 킨다 =
kubectl apply -f={kubernetes resource yml file name}
- 미니큐브에서 이를 확인하기 위해선 다음 명령어를 통해 켠다 =
minikube service {service name}
- Dockerfile, Docker-compose 파일을 준비하여 이미지를 만들어둔다 =