Docker and Kubernetes - 3sam5oh/webtoon-search-service GitHub Wiki
์ํคํ
์ณ ๊ทธ๋ฆฌ๋ ๋์ค์ ๋์ปค๋ ์ฟ ๋ฒ๋คํฐ์ค ๊ด๋ จ์ผ๋ก ๊ฐ๋จํ๊ฒ ๊ณต๋ถํ๋ฉด์ ๋ด์ฉ ๊ณต์ ํด๋ด
๋๋ค.
ํน์ ์๋ชป๋๊ฑฐ๋ ์ถ๊ฐ๋์์ผ๋ฉด ์ข๊ฒ ๋ค ํ๋ ๋ถ๋ถ์ด ์์ผ๋ฉด ์์ ๋กญ๊ฒ ์์ ํด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค !
๐ณ Docker
1. ๊ฐ์
๊ฐ์ํ ๊ธฐ์ ์ ๊ธฐ๋ฐ์ผ๋ก ๊ฒฉ๋ฆฌ๋ ์ปจํ
์ด๋๋ฅผ ๋ง๋ค์ด ์ดํ๋ฆฌ์ผ์ด์
์ ์คํํ ์ ์๋ ์คํ์์ค ํ๋ซํผ.
์ฌ์ฉ์์ OSํ๊ฒฝ๊ณผ ๋ณ๊ฐ๋ก ๊ฒฉ๋ฆฌ๋ ํ๊ฒฝ์ ์ ๊ณตํ๋ค๋ ์ ์์ ๊ฐ์ ๋จธ์ (Virtual Machine)๊ณผ ๋น์ทํ๋ค๊ณ ์๊ฐํ ์๋ ์์ง๋ง
VM์ ํ๊ฒฝ ์์ฑ ์ Guest OS๊น์ง ์ค์นํด์ผ ํด์ ์ค์น ๋ฐ ์คํ์ ๋ง์ ์ปดํจํ
์์์ด ํ์ํ ๋ฐ๋ฉด
Docker ์ปจํ
์ด๋๋ ์ปค๋์ ์ ์ธํ ๋๋จธ์ง ๋ถ๋ถ๋ง์ ๊ฐ์ง๊ณ ์คํ๋๊ธฐ ๋๋ฌธ์ ๋น ๋ฅด๊ณ ๊ฐ๋ณ๊ฒ ๊ฒฉ๋ฆฌ ํ๊ฒฝ์ ๋ง๋ค์ด ๋ผ ์ ์์
์ฌ์ฉ ์ด์
- ์ด์์ฑ : ์คํ ํ๊ฒฝ์ ๊ฐ๋ฆฌ์ง ์๊ณ , ๊ฐ๋ฐ ํ๊ฒฝ, ํ
์คํธ ํ๊ฒฝ, ๋ฐฐํฌ ํ๊ฒฝ์์ ๋์ผํ ์ดํ๋ฆฌ์ผ์ด์
์ ์คํ ๊ฐ๋ฅ.
ํ ๋ฒ ๊ตฌ์ถ, ์ด๋์๋ ์คํ
- ํจ์จ์ ์ธ ๋ฆฌ์์ค ์ฌ์ฉ : ํ๋์ ์๋ฒ์์ ์ปจํ ์ด๋ ํ๊ฒฝ์ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ์ดํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉํ๊ฒ๋จ์ผ๋ก ์๋ฒ ์์์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
- ํ์ฅ์ฑ : ํ๋์ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ง๊ณ ๋ค์์ ์ปจํ
์ด๋๋ฅผ ๋น ๋ฅด๊ฒ ์์ฑ ๊ฐ๋ฅ (
Scale out
์ด ์ฝ๋ค) - ๊ฐ๋ฐ ํ๊ฒฝ ์ผ์น : ๋์ผํ docker image๋ฅผ ์ฌ์ฉ, ๊ฐ๋ฐ ํ๊ฒฝ์ ํต์ผ์์ผ ์ผ๊ด๋ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ ์งํ๊ฒ ํด์ค๋ค. ('๋ด pc์์๋ ์ ๋๋๋ฐ?' ๋ฐฉ์ง)
- ๋ฒ์ ๊ด๋ฆฌ : ์ด๋ฏธ์ง๊ฐ tag๋ฅผ ํตํด ๊ด๋ฆฌ๋๋ฉฐ, ๋ง์ฝ ๋ฐฐํฌํ ์ด๋ฏธ์ง์ ๋ฌธ์ ๊ฐ ์๊ฒผ์ ๊ฒฝ์ฐ ์ด์ ๋ฒ์ ์ด๋ฏธ์ง๋ก ๋น ๋ฅธ ์ฌ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํ๋ค.
- ์คํ์์ค ์ํ๊ณ : ์ปจํ ์ด๋ ํ์ค์ผ๋ก ์ฌ์ฉ๋๋ ๋งํผ ๋จ๋จํ ์ํ๊ณ๊ฐ ๊ตฌ์ถ๋์ด ์์
2. ํค์๋
- ํต์ฌ์ด ๋๋ ํค์๋๋
๊ฒฉ๋ฆฌ
,ํธํ์ฑ
,ํธ์์ฑ
์ด๋ผ๊ณ ์ดํดํจ
1) ๊ฒฉ๋ฆฌ
- ์ปจํ
์ด๋๋ฅผ ์ฌ์ฉํ๋๋ฐ ํต์ฌ์ด ๋๋ ๊ฐ๋
๋ ๋ฆฝ๋ ํ๊ฒฝ
- ๋
๋ฆฝ๋ ํ๊ฒฝ์ ์ฌ์ฉํ๋ ์ด์ ?
-
์ฌ์ฉํ๋ ์์คํ ๋ณ๋ก ํ์ ์กฐ๊ฑด(๋ค๋ฅธ ํ๋ก๊ทธ๋จ ํน์ ์์กด์ฑ ๋ฑ)์ด ๋ค๋ฅด๋ค.
-
์์คํ ๊ตฌ๋์ ์์ด์ ๊ฐ์ ํ๋ก๊ทธ๋จ ํน์ ์์กด์ฑ์ ๊ณต์ ํ์ง๋ง ํ์ํ ๋ฒ์ ์ด ๋ค๋ฅผ ์ ์๋ค.
- App A์ App B๊ฐ ๋ชจ๋ ๊ตฌ๋ํ๋๋ฐ App C๋ฅผ ํ์๋ก ํ์ง๋ง, ํ์๋กํ๋ ๋ฒ์ ์ด ๋ค๋ฅผ ๊ฒฝ์ฐ
- 1.0์ ์ ํํ๋ฉด B๋ฅผ ์ฌ์ฉํ์ง ๋ชปํ๊ณ , 2.0์ ์ ํํ๋ฉด A๋ฅผ ์ฌ์ฉํ์ง ๋ชปํ๋ค.
- ์ด๋ฐ ์ํฉ์ ํผํ๊ธฐ์ํด ๊ฒฉ๋ฆฌ๋ ์ปจํ ์ด๋์์ ๊ฐ์๊ฐ ํ์ํ ์์กด์ฑ์ ํ๋ณดํ์ฌ ์คํ์ ๋ฌธ์ ๊ฐ ์๊ฒ ํ ์ ์๋ค.
-
2) ํธํ์ฑ
- Docker ์ด์ธ์๋ LXC, Solaris Zones, BSD Jail ๊ฐ์ ์ปจํ ์ด๋ ๊ธฐ์ ๋ค์ด ์กด์ฌํ์ง๋ง, ์ด๋ฐ ๊ธฐ์ ๋ค์ ํน์ OS(Solaris, FreeBSD)์์๋ง ๋์ํ๊ธฐ ๋๋ฌธ์ ์ด๋ OS์์๋ ์ฌ์ฉํ ์ ์๋ ๋์ปค๊ฐ ํ์ค์ผ๋ก ์ฑํ๋์๋ค.
3) ํธ์์ฑ
- ํธํ์ฑ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ค๋ฅธ ์ปจํ ์ด๋ ํ๋ซํผ์ ๋นํด์ ๋ฌ๋์ปค๋ธ๊ฐ ๋ฎ์ ์ฝ๊ฒ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๊ณ , ํํํ ์ํ๊ณ๋ฅผ ๋ฐํ์ผ๋ก ๋ง์ ๋ ํผ๋ฐ์ค์ ๋ค์ํ ์คํ ์์ค ๋ฐ ์์ฉ ํด๊ณผ์ ํตํฉ์ ์ง์ํ๋ค(= ๋ค์ํ ํ๊ฒฝ์์์ ์ฌ์ฉ์ด ํธํ๋ค).
3. ์ฉ์ด
๋์ปค ๊ด๋ จ ๊ธฐ๋ณธ์ ์ธ ์ฉ์ด ์ ๋ฆฌ
1) Docker Image
- Docker Image๋ ํน์ ์์ ์ ์ดํ๋ฆฌ์ผ์ด์ /ํ๊ฒฝ์ ์ ์ํ๋ R/Oํ์ผ๋ก์ ์ดํ๋ฆฌ์ผ์ด์ ์คํ์ ํ์ํ ์์ค ์ฝ๋, ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ์ข ์์ฑ ๋ฑ์ ํฌํจํ๊ณ ์๋ค.
- ์ด๋ฏธ์ง๋ ์ฝ๊ธฐ ์ ์ฉ ํ์ผ ์ด๋ฏ๋ก ๋ณ๊ฒฝ์ด ๋ถ๊ฐ๋ฅํ๊ณ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํด Container ์์ฑ์ R/W๊ฐ ๊ฐ๋ฅํ Container Layer๋ฅผ ๋ง๋ค์ด ์ฐ๊ธฐ ์์ ์ ์ํํ ์ ์๋ค.
- Layer๊ด๋ จ ์ฐธ๊ณ : ์ฐธ๊ณ 1 ์ฐธ๊ณ 2
2) Dockerfile
- Dockerfile ์ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ธฐ ์ํ ์ค์ ํ์ผ(์คํฌ๋ฆฝํธ)์ด๋ค.
- Dockerfile ์ ์ด๋ฏธ์ง ๋น๋๋ฅผ ์ํ ์ปค๋งจ๋๋ฅผ ์ ๋ ฅํ๋ฉด build ์ ํ์ผ์ ๊ธฐ์ฌ๋ ์์๋๋ก ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋ค.
- Dockerfile ์์ (๋ ์์ธํ ๋ด์ฉ์ ๊ณต์ ๋ฌธ์๋ ์ฐธ๊ณ ๋ธ๋ก๊ทธ๋ฅผ ์ดํด๋ณผ ๊ฒ)
FROM openjdk:17-alpine
# redis ๋ฐ tzdata ์ค์น
RUN apk add --no-cache redis tzdata
# ํ์์กด ์ค์
ENV TZ=Asia/Seoul
RUN cp /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# JAR ํ์ผ ๋ณต์ฌ
COPY build/libs/*.jar app.jar
# JASYPT_KEY ARG ๋ฐ ENV ์ค์
ARG JASYPT_KEY
ENV JASYPT_KEY=$JASYPT_KEY
# ํฌํธ ๋
ธ์ถ - ์์ฑ๋ ์ปจํ
์ด๋์ ์ด์ด์ค ์ด๋ฏธ์ง๋ฅผ ์ ์
EXPOSE 8080
# ์ ํ๋ฆฌ์ผ์ด์
์คํ // ENTRYPOINT - ๋ฌด์กฐ๊ฑด์ ์ธ ์คํ, CMD - ์คํ ์์ ์ต์
์ ๋ฐ๋ผ ๋ณ๊ฒฝ ๊ฐ๋ฅ
ENTRYPOINT ["java", "-jar", "/app.jar"]
3) Container
- ์ปจํ ์ด๋๋ ์์ฉ ํ๋ก๊ทธ๋จ์ด ์๋ก ๋ค๋ฅธ ์ปดํจํ ํ๊ฒฝ์์ ๋น ๋ฅด๊ณ ์์ ์ ์ผ๋ก ์คํ๋๋๋ก ์ฝ๋์ ๋ชจ๋ ์ข ์์ฑ์ ํจํค์งํํ๋ ์ํํธ์จ์ด์ ํ์ค ๋จ์์ด๋ค.
- ์ํํธ์จ์ด๋ฅผ ์ฃผ์ ํ๊ฒฝ์ผ๋ก๋ถํฐ ๊ฒฉ๋ฆฌํ๊ณ ๊ฐ๋ฐ๊ณผ ์คํ ์ด์ง ๊ฐ์ ์ฐจ์ด์๋ ๋ถ๊ตฌํ๊ณ ๊ท ์ผํ๊ฒ ์๋ํ๋๋ก ๋ณด์ฅ
- ๋ณ๊ฒฝ๋ container๋ฅผ ๊ฐ์ง๊ณ ์๋ก์ด ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค ์ ์๋ค (commit ์ปค๋งจ๋)
- ๋ก์ปฌ ํ๊ฒฝ๊ณผ ๊ฒฉ๋ฆฌ๋ ํ๊ฒฝ์ด๊ธฐ ๋๋ฌธ์ ๋ก์ปฌ ํ ์คํธ ํ๊ฒฝ์์ container์ ์ ์ํ๊ณ ์ ํ ๋๋ localhost๊ฐ ์๋๋ผ ์ค์ ip์ ์ด์ด์ค ํฌํธ๋ฅผ ์ฌ์ฉํด์ ์ ์ํด์ผ ํ๋ค.
4) Registry
- Docker Image๊ฐ ์ ์ฅ๋๋ ์ ์ฅ์. Docker hub ๊ฐ ๋ํ์ ์ธ public registry ์ด๊ณ , AWS ECR(Elastic Container Registry)๋ ๋ ์ง์คํธ๋ฆฌ์ด๋ค.
- ECR vs Dokcer hub?
- AWS ECR์ ๊ฐ์ฅ ํฐ ์ฅ์ ์ IAM์ ์ฌ์ฉํ ๊ถํ ๊ด๋ฆฌ. docker hub๋ private/public ์ผ๋ก ์ ์ด๊ฐ ๊ฐ๋ฅํ์ง๋ง ์ธ๋ถ์ ์ธ ๊ด๋ฆฌ๋ ECR์ด ์ฐ์ํ๋ค.
- ํ AWS ์๋น์ค์๋ ์ฐ๊ณ๊ฐ ์ ๋์ด์๋ค๋ ๊ฒ๋ ECR์ ์ฅ์ ์ด๋ผ ๋ณผ ์ ์๋ค.
5) Docker Volume
- ์์ฑ๋ Docker container์ ํธ์คํธ PC(๋๋ ๋ค๋ฅธ Docker Container)๊ฐ์ ๊ณต์ ํ ์ ์๋ ์ ์ฅ ๊ณต๊ฐ
- ์ปจํ ์ด๋๋ ๊ฐ์ํ ๊ธฐ์ ์ ๊ธฐ๋ฐ์ผ๋ก ๊ฒฉ๋ฆฌ๋ ํ๊ฒฝ์ด๊ธฐ ๋๋ฌธ์ ์์ ํ ๋ฐ์ดํฐ๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ปจํ ์ด๋ ๋ด๋ถ์์๋ง ์กด์ฌํ๋ค.
- (= ์ปจํ ์ด๋๋ฅผ ์ญ์ ํ๋ฉด ์์ ํ ๋ฐ์ดํฐ๋ ๊ฐ์ด ์ฌ๋ผ์ง๋ค.)
- ์ปจํ
์ด๋๊ฐ ์ญ์ ๋๋๋ผ๋ ์์
ํ
๋ฐ์ดํฐ๋ฅผ ์ ์ง
ํด์ ๋ค์ ์ปจํ ์ด๋ ๋๋ ํธ์คํธ OS์๊ณต์
ํ๊ณ ์ถ์ ๋ volume์ ์์ฑํ์ฌ ๋ง์ดํธ์ํจ๋ค. - ์ฐธ๊ณ ๋ธ๋ก๊ทธ
6) Docker Network
- ๊ฒฉ๋ฆฌ๋ Docker container ๊ฐ์ ํต์ ์ ํ๊ธฐ ์ํ ๋ ผ๋ฆฌ์ ๋คํธ์ํฌ
- ์ฐธ๊ณ ๋ธ๋ก๊ทธ
4. ์ฌ์ฉ๋ฒ
๋์ปค ์ฌ์ฉ์ ์์ด์ ๊ธฐ๋ณธ์ด ๋๋ ์ปค๋งจ๋๋ค๋ง ๊ฐ๋จํ ์ ๋ฆฌ. ์ด์ธ์ ํ์ํ ์ปค๋งจ๋๊ฐ ์์ผ๋ฉด ๊ณต์ ๋ฌธ์ ๋๋ ๊ตฌ๊ธ๋ง์ ํตํด์ ์ฐพ์.
1) Image ๊ด๋ จ ์ปค๋งจ๋
- build : Dockerfile ์ ๊ธฐ๋ฐ์ผ๋ก ๋์ปค ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋ค.
docker build -t [image name:tag] [Dockerfile path]
- push : ๋ณด์ ํ Docker image๋ฅผ registry์ ์ฌ๋ฆฐ๋ค. default๋ก Docker hub๋ก ์ด๋ฏธ์ง๋ฅผ ์ ๋ก๋ํ๊ณ , ECR ๋ฑ์ ํ registry๋ก ์ด๋ฏธ์ง๋ฅผ ์ฌ๋ฆฌ๊ณ ์ถ์ ๊ฒฝ์ฐ์๋ ๋ณ๋์ ์ค์ (AWS CLI, ECR ๋ก๊ทธ์ธ ๋ฑ)์ด ํ์ํ๋ค.
docker push [image name:tag]
- pull : registry์ ๋ฑ๋ก๋ image๋ฅผ ๋ก์ปฌ ์๋ฒ๋ก ๋ฐ์์จ๋ค.
push์ ๋ง์ฐฌ๊ฐ์ง๋ก Docker hub์ธ์ registry์์ ์ด๋ฏธ์ง๋ฅผ ๋ฐ์์ฌ ๋๋ ๋ณ๋์ ์ค์ ํ์ pullํ๋ค.
tag๋ฅผ ์ฌ์ฉํด ๋ฒ์ ์ ๋ช
์ํ์ง ์์ ๊ฒฝ์ฐ
latest
์ด๋ฏธ์ง๋ฅผ ๋ฐ์์จ๋ค.
docker pull [image name:tag]
- rmi : ๋ก์ปฌ ํ๊ฒฝ์์ ์ด๋ฏธ์ง๋ฅผ ์ญ์ ํ๋ค.
docker rmi [image name:tag]
- images : ๋ก์ปฌ ํ๊ฒฝ์ ๋ณด์ ์ค์ธ ์ด๋ฏธ์ง ๋ฆฌ์คํธ๋ฅผ ์กฐํํ๋ค.
docker images
2) Container ๊ด๋ จ ์ปค๋งจ๋
- run : Docker iamge๋ฅผ ์ฌ์ฉํด ์ปจํ ์ด๋๋ฅผ ๋ง๋ ๋ค. ๋ง์ฝ ๋ณด์ ์ค์ธ image๊ฐ ์๋ค๋ฉด registry์์ ์ด๋ฏธ์ง๋ฅผ pullํด์ ์คํํ๋ค.
docker run [option] [image name:tag]
// ์ฃผ๋ก ์ฌ์ฉํ๋ ์ต์
์กฐํฉ
docker run -d --name [container name] [image name:tag]
-d: ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํํ๋ค.
--name: ์ปจํ
์ด๋ ์ด๋ฆ์ ์ง์ ํ๋ค.
// docker volume ๋ง์ดํธ
// ๋ง์ดํธ ์์๋ [volume name]์ ๋ด์ฉ์ผ๋ก [container inner path] ๋ด์ฉ์ด ๋ฎ์ด์์์ง๋ ์ฃผ์ํ ๊ฒ
docker run -d --name [container name] -v [volume name]:[container inner path] [image name:tag]
- ps : ํ์ฌ ์คํ ์ค์ธ ์ปจํ ์ด๋ ๋ชฉ๋ก์ ์ถ๋ ฅํ๋ค.
// ์คํ ์ค์ธ ์ปจํ
์ด๋ ๋ชฉ๋ก ์ถ๋ ฅ
docker ps
// ๋ชจ๋ ์ปจํ
์ด๋(์ค์ง ์ํ๋ฅผ ํฌํจ) ๋ชฉ๋ก ์ถ๋ ฅ
docker ps -a
- start : ์ ์ง ์ํ์ธ ์ปจํ ์ด๋๋ฅผ ์คํ์ํจ๋ค.
docker start [container name]
- stop : ์คํ ์ค์ธ ์ปจํ ์ด๋๋ฅผ ์ ์ง ์ํจ๋ค.
docker stop [container name]
- restart : ์ปจํ ์ด๋๋ฅผ ์ฌ์ค์ํ๋ค.
docker restart [container name]
- logs : ์ปจํ ์ด๋์ ๋ก๊ทธ๋ฅผ ์ถ๋ ฅํ๋ค.
docker logs [container name]
- rm : ์ปจํ ์ด๋๋ฅผ ์ญ์ ํ๋ค.
docker rm [container name]
- exec : ์คํ ์ค์ธ ์ปจํ ์ด๋์์ ๋ช ๋ น์ ์คํํ๋ค.
docker exec [option] [container name] [command]
// ์์ฃผ ์ฌ์ฉํ๋ ์กฐํฉ
docker exec -it [container name] [/bin/bash | /bash]
- ์คํ ์ค์ธ ์ปจํ
์ด๋์ bash shell์ ์คํ์ํค๊ณ ์ฌ์ฉ์์๊ฒ ํ์ํ๋ค.
3) Network ๊ด๋ จ ์ปค๋งจ๋
- create : ์๋ก์ด Docker Network๋ฅผ ์์ฑํ๋ค.
docker network create [network name]
- connect : ๋คํธ์ํฌ์ container๋ฅผ ์ฐ๊ฒฐ์ํจ๋ค.
docker connect [network name] [container name]
- ls : ํ์ฌ ์กด์ฌํ๋ Docker Network ๋ชฉ๋ก์ ์ถ๋ ฅํ๋ค.
docker network ls
- inspect : ๋คํธ์ํฌ ์ธ๋ถ ์ ๋ณด๋ฅผ ์ถ๋ ฅํ๋ค.
docker network inspect [network name]
- rm : ๋คํธ์ํฌ๋ฅผ ์ญ์ ํ๋ค.
docker network rm [network name]
4) Volume ๊ด๋ จ ์ปค๋งจ๋
volume ์ connect๋ช ๋ น์ด๊ฐ ์๋ค. ์ปจํ ์ด๋๋ฅผ ์์ฑํ ๋ -v๋๋ --mount ์ต์ ์ ์ฌ์ฉํด์ ๋ง์ดํธ ์ํฌ ๊ฒ.
- create : ์๋ก์ด ๋ณผ๋ฅจ์ ์์ฑํ๋ค.
docker volume create [volume name]
- ls : ํ์ฌ ์กด์ฌํ๋ Docker volume ๋ชฉ๋ก์ ์ถ๋ ฅํ๋ค.
docker volume ls
- inspect : ๋ณผ๋ฅจ ์ธ๋ถ ์ ๋ณด๋ฅผ ์ถ๋ ฅํ๋ค.
docker volume inspect [volume name]
- rm : ๋ณผ๋ฅจ์ ์ญ์ ํ๋ค.
docker volume rm [volume name]
๐ณ Docker-compose
1. ๊ฐ์
docker-compose๋ ์ฌ๋ฌ ๊ฐ์ ๋์ปค ์ปจํ
์ด๋๋ฅผ ํ ๋ฒ์ ์ ์ํ์ฌ ์์ฑ/์ญ์ ํ๊ฒ ํด์ฃผ๋ ๋๊ตฌ์ด๋ค.
docker-compose.yml ํ์ผ์ ํตํด ์ฌ์ฉํ ์ด๋ฏธ์ง์ ๋คํธ์ํฌ, ๋ณผ๋ฅจ ๋ฑ์ ์ ์ํ์ฌ ๋ค์์ ์ปจํ
์ด๋๋ฅผ ๊ฐ๋จํ๊ฒ ๋ฐฐํฌ ๊ฐ๋ฅํ๊ฒ ํด์ค๋ค.
2. ์ฌ์ฉ๋ฒ
- docker-compose.yml ํ์ผ์ ์ ์ํ ๋ค,
docker-compose -f [docker-compose.yml path] up [option]
๋ช ๋ น์ด๋ฅผ ํตํด ์ฌ์ฉํ๋ค.- ๋ง์ฝ
-f [docker-compose.yml path]
์ต์ ์์ด ์ฌ์ฉํ๋ค๋ฉด ํ์ฌ ๋๋ ํ ๋ฆฌ์ ์๋ docker-compose.ymlํ์ผ์ ์ฌ์ฉํ์ฌ ๋์ํ๋ฉฐ, ํ์ผ์ด ์์ ๊ฒฝ์ฐ ์ค๋ฅ๊ฐ ๋ฐ์ํจ
- ๋ง์ฝ
- docker-compose.yml ํ์ผ์ ์ด๋ฆ์ ๋ณํด์๋ ์๋๋ฉฐ, ํ๋์ ํด๋(๋๋ ํ ๋ฆฌ)์ ํ๋์ docker-compose.yml ํ์ผ๋ง์ด ์กด์ฌํด์ผํ๋ค.
- docker-compose.yml ํ์ผ ์์
- ๊ธฐํ ์ปค๋งจ๋
docker compose down
: docker-compose.yml์ ์ ์๋ ์ปจํ ์ด๋๋ค์ ์ ์งํ๊ณ ์ญ์ ์ํจ๋ค.docker compose stop
: docker-compose.yml์ ์ ์๋ ์ปจํ ์ด๋๋ค์ ์ ์ง์ํจ๋ค.docker compose start
: ํ์ผ์ ์ ์๋์ด์์ง๋ง ์ ์ง ์ํ์ธ ์ปจํ ์ด๋๋ค์ ์คํ์ํจ๋ค. up์ ์ฌ์ฉํด๋ ๋ฌด๋ฐฉํจ.docker compose ps
: ๋์ปค ์ปดํฌ์ฆ์ ์ ์๋์ด ์คํ ์ค์ธ ์ปจํ ์ด๋ ๋ชฉ๋ก์ ์ถ๋ ฅํ๋ค.
- ์ด์ธ์ ์ปค๋งจ๋๋ ์ต์ ๋ค์ ๋ํด์๋ ๊ณต์ ๋ฌธ์๋ ๊ตฌ๊ธ๋ง์ ํตํด์ ์ฐพ์๋ณด๊ธฐ
๐ก Kubernetes
1. ๊ฐ์
Kubernetese(k8s)๋ ์ปจํ
์ด๋ ์ค์ผ์คํธ๋ ์ด์
๋๊ตฌ๋ก ๋ค์์ ์ปจํ
์ด๋๋ฅผ ์์ฑ/์ญ์ ํด์ฃผ๊ณ ์ปจํ
์ด๋์ ๋คํธ์ํฌ ๋ฐ ๊ด๋ฆฌ๋ฅผ ์๋ํํด์ฃผ๋ ๋๊ตฌ์ด๋ค.
2. ํค์๋
1) Ochestration
- k8s์ docker compose์ ์ฐจ์ด๊ฐ ์ฌ๊ธฐ์ ๋ฐ์ํ๋ค.
- docker compose๋ ๋ค์์ ์ปจํ
์ด๋๋ฅผ ์ ๋ํ
ํ๊ฒ ์์ฑ/์ญ์ ํ๋ ๋ฐ๋ฉด
k8s๋ etcd์ ๋ฑ๋ก๋ manifest file์ ๊ธฐ์ค์ผ๋ก
์ด์์ ์ธ ์ํ
๋ฅผ ๊ธฐ์ต, ํด๋น ์ํ๋ฅผ ์ ์งํ ์ ์๋๋ก์๋
์ผ๋ก๊ด๋ฆฌ
ํด์ค๋ค. - ์ปจํ
์ด๋์
๋ฐฐํฌ
,์ ์ด ๋ฐ ๋ชจ๋ํฐ๋ง
,๋คํธ์ํน
,์ค์ผ์ผ๋ง
์์ ์ ํด๊ฒฐํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
3. ์ฉ์ด
์ฟ ๋ฒ๋คํฐ์ค ๊ด๋ จ ๊ธฐ๋ณธ์ ์ธ ์ฉ์ด ์ ๋ฆฌ
1) Node
- ๋ฌผ๋ฆฌ์ ์๋ฒ ๋๋ ๊ฐ์ํ ์๋ฒ ํ๊ฒฝ์ ์๋ฏธ.(๊ทธ๋ฅ app์ด ๋์ํ ์ปดํจํฐ ํ๋๋ผ๊ณ ์ดํดํ์)
- k8s๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์์ ๋ ธ๋ ๊ฐ ์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์ ์ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋๋ค.
- k8s๋ ๋ ์ข ๋ฅ์ ๋ ธ๋๋ฅผ ๊ฐ์ง๋ค : 1) Master Node 2) Worker Node
- Master Node :
Control Plane
์ด๋ผ๊ณ ๋ ๋ถ๋ฅด๋ฉฐ k8s ํด๋ฌ์คํฐ์ ์ํ๋ฅผ ๊ด๋ฆฌํ๊ณ ์กฐ์ ํ๋ ๋ชจ๋ ์ปดํฌ๋ํธ๋ฅผ ํฌํจํ๊ณ ์๋ค. Worker Node์ ๋ฌ๋ฆฌ ์ฌ์ฉ์๊ฐ ์ง์ ์ ์ผ๋ก ์ ๊ทผํ ์ผ์ ์๊ณkubectl
๋ฑ์ ๋ช ๋ น์ด๋ฅผ ํตํด ํด๋ฌ์คํฐ๋ฅผ ๊ด๋ฆฌํ๋ค.\- ์ปจํธ๋กค ํ๋ ์ธ์ ์ปดํฌ๋ํธ :
kube-apiserver
,kube-controller-manager
,kube-scheduler
,cloud-controller-manager
,etcd
- kube-apiserver : ์ธ๋ถ์ ํต์ ํ๋ ํ๋ก์ธ์ค, kubectl๋ก๋ถํฐ ๋ช ๋ น์ ์ ๋ฌ๋ฐ์ ์คํํ๋ค.
- kube-controller-manager : ์ปจํธ๋กค๋ฌ๋ฅผ ํตํฉ ๊ด๋ฆฌ, ์คํํ๋ค.
controller
: ํด๋ฌ์คํฐ์ ์ต์ ์ ์ํ๋ฅผ ์ ์งํ๊ธฐ ์ํด ์ง์์ ์ผ๋ก ์ํ๋ฅผ ๊ฐ์ํ๊ณ ์ด๋ฅผ ์กฐ์ ํ๋ ์ญํ ์ ํ๋ ์ํํธ์จ์ด ๋ฃจํ
- kube-scheduler : ํ๋๋ฅผ ์์ปค ๋ ธ๋์ ํ ๋นํ๋ค.
- cloud-controller-manager : ํด๋ผ์ฐ๋ ์๋น์ค์ ์ฐ๋ํด ์๋น์ค๋ฅผ ์์ฑํ๋ค.
- etcd : ํด๋ฌ์คํฐ ๊ด๋ จ ์ ๋ณด ์ ๋ฐ์ ๊ด๋ฆฌํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค.
EKS
: AWS ํ๊ฒฝ์์ k8sํด๋ฌ์คํฐ๋ฅผ ๊ด๋ฆฌํด์ฃผ๋ ์ผ์ข ์ Control Plane ์ญํ ์ ํ๋ ์๋น์ค์ด๋ค.
- ์ปจํธ๋กค ํ๋ ์ธ์ ์ปดํฌ๋ํธ :
- Worker Node : ์ค์ ์ ํ๋ฆฌ์ผ์ด์
์ํฌ๋ก๋๊ฐ ์คํ๋๋ ๋
ธ๋. ์ปจํ
์ด๋ํ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์คํํ๋ ์ฃผ์ฒด์ด๋ค.
- Worker node์ ์ปดํฌ๋ํธ :
kubelet
,kube-proxy
-
- kubelet : ๋ง์คํฐ ๋ ธ๋์ ์๋ kube-scheduler์ ์ฐ๋ํ๋ฉฐ ์์ปค ๋ ธ๋์ ํ๋๋ฅผ ๋ฐฐ์นํ๊ณ ์คํํ๋ค. ๋ ์คํ ์ค์ธ ํ๋์ ์ํ๋ฅผ ์ ๊ธฐ์ ์ผ๋ก ๋ชจ๋ํฐ๋งํ๋ฉฐ kube-scheduler์ ํต์งํ๋ค.
-
- kube-proxy : ๋คํธ์ํฌ ํต์ ์ ๋ผ์ฐํ ๋ฉ์ปค๋์ฆ. ํ๋ ๊ฐ์ ํต์ ๋ฐ ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ๋ด๋นํ๋ค.
-
- Worker node์ ์ปดํฌ๋ํธ :
2) Cluster
- Master Node(Control Plane)์ Worker Node๋ก ๊ตฌ์ฑ๋ ํ๊ฒฝ์ ์ฐ๋ฆฌ๋ Kubernetes Cluster๋ผ๊ณ ๋ถ๋ฅธ๋ค.
3) Pod
- Kubernetes์์ ๋ฐฐํฌ๋๊ณ ๊ด๋ฆฌ๋๋ ๊ฐ์ฅ ์์ ๋จ์.
ํ๋ ์ด์์ ์ปจํ ์ด๋ + ๋ณผ๋ฅจ ์กฐํฉ
์ ํ๋๋ผ ํ๋ค.
4) Service
- ๋ค์์ ํ๋๋ฅผ ์ด๋๋ ๋ฐ์ฅ ์ญํ ์ด๋ผ๊ณ ์ดํด.
- ์ฌ๋ฌ Pod์ ๋ํ ๋จ์ผ ์ง์ ์ ์ ์ ๊ณตํ๋ฉฐ, ์ด๋ฅผ ํตํด ๋ก๋ ๋ฐธ๋ฐ์ฑ๊ณผ ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ๋ฅผ ์ํํ๋ค.
- ํ๋์ ์๋น์ค ์๋์๋ ๋์ผํ ๊ตฌ์ฑ(๋์ผํ ์ด๋ฏธ์ง์ ์ปจํ ์ด๋ + ๋ณผ๋ฅจ)์ ํ๋๋ค์ด ์กด์ฌํ๋ค.
- ๊ตฌ์ฑ์ด ๋ค๋ฅธ ํ๋๋ ๋ณ๊ฐ์ ์๋น์ค๋ก ๊ด๋ฆฌํ๋ค.
๋ก๋ ๋ฐธ๋ฐ์
์ญํ . ๊ฐ ์๋น์ค๋ ์๋์ ์ผ๋ก ๊ณ ์ ๋ IP์ฃผ์(cluster ip) ๋ฅผ ๋ถ์ฌ ๋ฐ์ผ๋ฉฐ, ์ด ์ฃผ์๋ก ๋ค์ด์ค๋ ํต์ ์ ๊ฐ ํ๋์ ๋ถ๋ฐฐํด์ ์ฒ๋ฆฌํ๋ค.- ๋ด๋ถ์ ์ผ๋ก๋ ์ฌ๋ฌ ๊ฐ์ ํ๋๊ฐ ์์ด๋ ๋ฐ์์๋ ํ๋์ IP ์ฃผ์(cluster IP)๋ง ๋ณผ ์ ์์ผ๋ฉฐ, ์ด ์ฃผ์๋ก ์ ๊ทผํ๋ฉด ์๋น์ค๊ฐ ํต์ ์ ์ ์ ํ ๋ถ๋ฐฐํด์ฃผ๋ ๊ตฌ์กฐ๋ค.
- ์๋น์ค๊ฐ ๋ถ๋ฐฐํ๋ ํต์ ์ ๋์ผํ ๊ตฌ์ฑ์ ํ๋๋ก ๊ตญํ๋๋ค. ์ฌ๋ฌ ์๋น์ค ๋ ธ๋ ๊ฐ์ ๋ถ๋ฐฐ๋ ์์ ๋จ์์ ๋ก๋ ๋ฐธ๋ฐ์๋ Ingress๊ฐ ๋ด๋นํจ.
- LB๋ Ingress๋ ๋ฌผ๋ฆฌ์ ํ๋์จ์ด์ด๊ฑฐ๋ master/worker node์ ๋ค๋ฅธ node์์ ๋์ํ๊ฒ ๋๋ค.
5) ReplicaSet
- ์๋น์ค๊ฐ ์์ฒญ์ ๋ฐฐ๋ถํ๋ ๋ฐ์ฅ์ด๋ผ๋ฉด ๋ ํ๋ฆฌ์นด์
์
ํ๋์ ์๋ฅผ ๊ด๋ฆฌ
ํ๋ ๋ฐ์ฅ. - ์ฅ์ ๋ฑ์ ์ด์ ๋ก ํ๋๊ฐ ์ข ๋ฃ๋์ ๋, ๋ชจ์๋ผ๋ ํ๋๋ฅผ ๋ณด์ถฉํ๊ฑฐ๋ ์ ์ ํ์ผ์ ์ ์๋ ํ๋์ ์๊ฐ ๊ฐ์ํ๋ฉด ๊ทธ๋งํผ ํ๋์ ์๋ฅผ ์ค์ ๋ก ๊ฐ์์ํจ๋ค.
Replica
: ReplicaSet์ด ๊ด๋ฆฌํ๋ ๋์ผํ ๊ตฌ์ฑ์ ํ๋๋ฅผ ์๋ฏธํ๋ค.
6) Manifest file
- Manifest file์
Kubernetes ๋ฆฌ์์ค๋ฅผ ์ ์
ํ๋ YAML ๋๋ JSON ํ์์ ํ์ผ. - docker-compose.yml ๊ณผ ๋ค๋ฅด๊ฒ ํ์ผ๋ช ์ ์ ์ฝ์ ์์ง๋ง ์๋ฏธ์๋ ์ด๋ฆ์ ๋ถ์ด์ง ์๋๋ก ํ๋ค. (์ปจ๋ฒค์ ์ค์)
- k8s๋ ๋งค๋ํ์คํธ ํ์ผ(์ ์ ํ์ผ)์ ๊ธฐ์ฌ๋ ๋ด์ฉ์ ๋ฐ๋ผ ํ๋๋ฅผ ์์ฑํ๊ณ ๊ด๋ฆฌํ๋ค.
- ๋งค๋ํ์คํธ ํ์ผ์ ๋ด์ฉ์ ์ฟ ๋ฒ๋คํฐ์ค์ ์ ๋ก๋ํ๋ฉด ๊ทธ ๋ด์ฉ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค(etcd)์ ๋ฑ๋ก๋๋ฉฐ, ํด๋ฌ์คํฐ ํ๊ฒฝ์ ์ด ์ํ๋ก ์ ์งํ๋ค.
- ๋งค๋ํ์คํธ ํ์ผ์ ๋ฆฌ์์ค(Pod, Deployment, Service, ReplicaSet...) ๋ณ๋ก ๋ฐ๋ก ์์ฑํด์ค์ผ ํ๋ฉฐ ๊ฐ๊ฐ์ ๋ฆฌ์์ค ๋ณ๋ก ๋ณ๋์ ํ์ผ์ ๋ง๋ค๊ฑฐ๋ ํ๋์ ํ์ผ์์ ๊ตฌ๋ถ์ (---)์ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ๋ฆฌ์์ค์ ์ค์ ์ ํ๋์ ํ์ผ๋ก ์ ์ํ ์ ์๋ค.
- ๋งค๋ํ์คํธ ํ์ผ ์ฃผ ํญ๋ชฉ :
apiVersion:
kind:
metadata:
spec:
/*
1) apiVersion : API ๊ทธ๋ฃน ๋ฐ ๋ฒ์ , ๊ทธ๋ฃน์ด๋ ๋ฒ์ ์ ๋ณ๊ฒฝ๋ ์์์ผ๋ฏ๋ก ๊ณต์ ์ฐธ์กฐ๋ฌธ์์ ๋ฆฌ์์ค ์ ํ์ ์ฐธ์กฐํด์ ๋ง๋ ๋ค.
2) kind : ๋ฆฌ์์ค ์ ํ(Deployment, Service, Pod, ReplicaSet..์ฃผ๋ก ์ฌ์ฉํ๋ ๋ฆฌ์์ค๋ Deployment์ Service์ด๋ค)
3) metadata: ๋ฉํ ๋ฐ์ดํฐ (๋ฆฌ์์ค์ ์ด๋ฆ์ด๋ ๋ ์ด๋ธ๋ฑ์ ๋ฉํ ๋ฐ์ดํฐ)
4) spec: ๋ฆฌ์์ค ๋ด์ฉ. ์ด๋ค ๋ฆฌ์์ค๋ฅผ ๋ง๋ค๊ฒ์ธ๊ฐ? ์คํ์์ ์ ์ํ๋ ํญ๋ชฉ์ ๋ฆฌ์์ค ์ ํ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ฏ๋ก ๋ฐ๋ก ์ ๋ฆฌํ ๊ฒ
*/
- Deployment Manifest file ๊ธฐ๋ณธ ๊ตฌ์กฐ ์ด๋๊น์ง๋ ๊ธฐ๋ณธ์ด๋ ์ถ๊ฐ๋ก ํ์ํ ๋ถ๋ถ์ ๊ณต์ ๋ฌธ์๋ ๊ตฌ๊ธ๋ง์ ์ฐธ๊ณ ํ์.
apiVeresion:
kind:
metadata:
name: (๋ฑ๋กํ Deployment์ ์ด๋ฆ)
spec:
selector:
matchLabels: (์
๋ ํฐ๊ฐ ๊ด๋ฆฌํ ๋ผ๋ฒจ ์ด๋ฆ)
replicas: (๋ ํ๋ฆฌ์นด ์ค์ - ํ๋๋ฅผ ๋ช๊ฐ ์ ์งํ ๊ฒ์ธ์ง)
template: (Pod์ ์ ๋ณด)
metadata: (Pod์ ์ด๋ฆ, ๋ผ๋ฒจ ๋จ, Pod๋ฅผ ์ฌ๋ฌ ๊ฐ ๊ด๋ฆฌํ ๊ฒฝ์ฐ ์ด๋ฆ์ ๊ฑฐ์ ์ฌ์ฉํ์ง ์๋๋ค.)
labels:
app: (Pod์ ๋ผ๋ฒจ - ์์ selector๋ฅผ ์ฌ์ฉํด์ ๋ผ๋ฒจ์ด ๋ถ์ ํ๋๋ค์ ๊ด๋ฆฌํ ์ ์๋ค.)
spec: (Pod์ ์คํ)
containers:
- name: (์ปจํ
์ด๋ ์ด๋ฆ)
image: (์ปจํ
์ด๋๋ฅผ ๋ง๋ค๋ ์ฌ์ฉํ ์ด๋ฏธ์ง)
ports:
- containerPort: (์ปจํ
์ด๋ ๋ด๋ถ์์ ์ด๋ค ํฌํธ๋ฅผ ์ฌ์ฉํ๊ณ ์๋์ง ์ ๋ณด)
/*
Deployment manifest file์์ ์ง์ ํ๋ containerPort ๋ ๋จ์ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ์ญํ ์ด๋ฉฐ
์ฃผ๋ก ์ฌ๋์ด ์ดํดํ๊ธฐ ์ฝ๊ฒ ๋์์ฃผ๋ ์ญํ ์ ํ๋ค. ์ค์ ํฌํธํฌ์๋ฉ์ ๊ด๋ จ๋ ์ค์ ์
Service manifest file์์ ์ง์ ํ๊ฒ๋๋ค.
*/
- Service Manifest file ๊ธฐ๋ณธ ๊ตฌ์กฐ
apiVersion:
kind: Service
metadata:
name: (์๋น์ค ์ด๋ฆ)
spec:
type: (์๋น์ค ์ ํ - ์๋น์ค์ ์ข
๋ฅ๋ฅผ ๋งํ๋ค. ์ธ๋ถ๋ก๋ถํฐ ์๋น์ค์ ์ด๋ค ์ ํ์ IP ์ฃผ์(๋๋ DNS)๋ก ์ ๊ทผํ ์ง๋ฅผ ์ค์
ports: ํฌํธ ์ค์
- port: (์๋น์ค ํฌํธ)
- targetPort: (์ปจํ
์ด๋ ํฌํธ)
- protocol : (ํต์ ์ ์ฌ์ฉํ๋ ํ๋กํ ์ฝ)
- nodePort: (Worker node์ ํฌํธ)
selector: (์
๋ ํฐ ์ค์ )
/*
์๋น์ค ์ ํ :
1) ClusterIP : ํด๋ฌ์คํฐ IP๋ฅผ ํตํด ์๋น์ค์ ์ ๊ทผํ๋๋ก ํจ(์ธ๋ถ์์๋ ์ ๊ทผ ์๋จ)
2) NodePort: ์์ปค ๋
ธ๋์ IP๋ฅผ ํตํด ์๋น์ค์ ์ ๊ทผํ๋๋ก ํจ
3) LoadBalancer : ๋ก๋ ๋ฐธ๋ฐ์์ IP๋ฅผ ํตํด ์๋น์ค์ ์ ๊ทผํ๋๋ก ํจ
4) ExternalName : ํ๋์์ ์๋น์ค๋ฅผ ํตํด ์ธ๋ถ๋ก ๋๊ฐ๊ธฐ ์ํ ์ค์
*/
- ์๋น์ค ์ ํ
4. ์ฌ์ฉ๋ฒ
์ฟ ๋ฒ๋คํฐ์ค ์ฌ์ฉ์ ์์ด์ ๊ธฐ๋ณธ์ด ๋๋ ์ปค๋งจ๋๋ค๋ง ๊ฐ๋จํ ์ ๋ฆฌ. ์ด์ธ์ ํ์ํ ์ปค๋งจ๋๊ฐ ์์ผ๋ฉด ๊ณต์ ๋ฌธ์ ๋๋ ๊ตฌ๊ธ๋ง์ ํตํด์ ์ฐพ์.
- apply : manifest file์ ์ฌ์ฉํ์ฌ ๋ฆฌ์์ค๋ฅผ ์์ฑํ๊ฑฐ๋ ์
๋ฐ์ดํธํ๋ค.
์ฃผ๋ก
-f
์ต์ ๊ณผ ํจ๊ป ์ฌ์ฉํ์ฌ ํน์ ํ์ผ์ ์ง์ ํ์ฌ ์ฌ์ฉํ๊ฒ ๋๋ค.
kubectl apply -f [manifest file path]
- get : ์ง์ ํ ๋ฆฌ์์ค ๋ชฉ๋ก์ ๋์ดํ๋ค.
kubectl get nodes
kubectl get services
kubectl get deployments
kubectl get pods
- logs : Pod ์ ๋ก๊ทธ๋ฅผ ์ถ๋ ฅํ๋ค.
kubectl logs [pod name]
- describe : ๋ฆฌ์์ค์ ์์ธ ์ ๋ณด๋ฅผ ์ถ๋ ฅํ๋ค.
kubectl describe node [node name]
kubectl describe service [service name]
kubectl describe deployment [deployment name]
kubectl describe pod [pod name]
- rollout restart : registry์ ์๋ก์ด ์ด๋ฏธ์ง๊ฐ ๋ฑ๋ก๋์์ ๋ ์๋ก์ด ์ด๋ฏธ์ง๋ก pod๋ฅผ ์ฌ์คํํ๋ค.
kubectl rollout restart deployments [deployment name]
- delete : ๋ฑ๋ก๋ ๋ฆฌ์์ค๋ฅผ ์ ๊ฑฐํ๋ค.
kubectl delete pods [pod name]
kubectl delete deployments [deployment name]
kubectl delete services [service name]
Docker & k8s ๊ด๋ จ ์ํ์ฐฉ์ค
Docker Container root ๊ถํ
docker exec -it --user root [container name] [/bin/bash ๋ฑ..]
exec๋ก ์ ๊ทผํ ๋ ์ ๋ช ๋ น์ด๋ก ์ ๊ทผํ๋ฉด root๋ก exec์ ๊ทผ์ด ๋ฉ๋๋ค. ์ดํ yum ๋ฑ์ผ๋ก ํ์ํ ํจํค์ง ๋ค์ด๋ก๋ ํ ๋ค์์ docker commit์ผ๋ก ์ ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค๋ฉด ์ปค์คํ ํ ์ํ๋ก ์ธ ์ ์์ต๋๋ค.
- ๊ธฐ๋ณธ์ ์ธ ์ฐธ๊ณ Docker document k8s document