์ฑํฐ2. ์ปจํ ์ด๋์ ์ดํด
- 2.1 ์ปจํ ์ด๋ ์๊ฐ
2.1.1 ์ปจํ ์ด๋์ ๊ฐ์ ๋จธ์ ๋น๊ต
(1.2.1 ์ปจํ ์ด๋ ์ดํด)
๋ฆฌ๋ ์ค ์ปจํ ์ด๋ ๊ธฐ์ - ๋์ผํ ํธ์คํธ ์์คํ ์์ ์ฌ๋ฌ ๊ฐ์ ์๋น์ค๋ฅผ ์คํํ ์ ์๋ค. ๊ฐ์๋จธ์ ๊ณผ ๋น๊ตํด์ ์ค๋ฒํค๋๊ฐ ๋งค์ฐ ์ ๋ค.
์ปจํ ์ด๋์ ๊ฐ์๋จธ์ ๋น๊ต
- ์ปจํ ์ด๋๋ ํจ์ฌ ๋ ๊ฐ๋ฒผ์ ๋ง์ ์์ SW ๊ตฌ์ฑ์์๋ฅผ ์คํํ ์ ์๋ค.
- ๊ฐ์๋จธ์ ์ ์์คํ ํ๋ก์ธ์ค๋ฅผ ์คํํด์ผํด์ ์ถ๊ฐ ์ปดํจํ ๋ฆฌ์์ค๊ฐ ํ์ํ๋ค.
- ์ปจํ ์ด๋๋ ํธ์คํธOS์์ ์คํ๋๋ ํ๋์ ๊ฒฉ๋ฆฌ๋ ํ๋ก์ธ์ค์ด๋ค.
- ํธ์คํธ์ ๊ฐ์๋จธ์ ์ ์ธ ๊ฐ ์คํํ๋ฉด ์ธ ๊ฐ์ ์์ ํ ๋ถ๋ฆฐ๋ OS๊ฐ ์คํ๋๊ณ ๋์ผํ ๋ฒ ์ด๋ฉํ ํ๋์จ์ด๋ฅผ ๊ณต์ ํ๊ฒ ๋๋ค.
- ์ปจํ ์ด๋๋ ํธ์คํธ OS์์ ์คํ๋๋ ๋์ผํ ์ปค๋์์ ์์คํ ์ฝ์ ์ํํ๋ค.
- ์ปจํ ์ด๋๋ ๋ชจ๋ ๋์ผํ ์ปค๋์ ํธ์ถํจ์ผ๋ก ๋ณด์ ์ํ์ด ๋ฐ์ํ ์ ์๋ค.
- ๋์ผํ ์์คํ ์์ ๋ ๋ง์ ์์ ๊ฒฉ๋ฆฌ๋ ํ๋ก์ธ์ค๋ฅผ ์คํํ๋ ค๋ฉด ์ปจํ ์ด๋์ ์ค๋ฒํค๋๊ฐ ๋ฎ๊ธฐ ๋๋ฌธ์ ์ปจํ ์ด๋๋ฅผ ์ ํํ๋ ๊ฒ์ด ์ข๋ค.
- ๊ฐ ๊ฐ์๋จธ์ ์ ์์ฒด ์์คํ ์๋น์ค๋ฅผ ์คํํ์ง๋ง ์ปจํ ์ด๋๋ ๋ชจ๋ ๋์ผํ OS์์ ์คํ๋๋ฏ๋ก ์ปจํ ์ด๋๋ ์์คํ ์๋น์ค๋ฅผ ์คํํ์ง ์๋๋ค.
์ปจํ ์ด๋ ๊ฒฉ๋ฆฌ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ ๋ฉ์ปค๋์ฆ
- ๋ฆฌ๋
์ค ๋ค์์คํ์ด์ค(namespace)
๋ค์์คํ์ด์ค ์ข ๋ฅ
-๋ง์ดํธ -ํ๋ก์ธ์ค ID
-๋คํธ์ํฌ -ํ๋ก์ธ์ค ๊ฐ ํต์
-ํธ์คํธ์ ๋๋ฉ์ธ ์ด๋ฆ
-์ฌ์ฉ์ ID
๋ชจ๋ ์์คํ ๋ฆฌ์์ค๋ ํ๋์ ๋ค์์คํ์ด์ค์ ์ํ๋ค.
ํ๋ก์ธ์ค๋ฅผ ์คํํ ๋ ํด๋น ๋ค์์คํ์ด์ค ์ค ํ๋์์ ํ๋ก์ธ์ค๋ฅผ ์คํํ๋ค.
ํ๋ก์ธ์ค๋ ๋์ผํ ๋ค์์คํ์ด์ค ๋ด์ ์๋ ๋ฆฌ์์ค๋ง ๋ณผ ์ ์๋ค.
์ฌ๋ฌ ์ข ๋ฅ์ ๋ค์์คํ์ด์ค๊ฐ ์๊ธฐ ๋๋ฌธ์ ํ๋ก์ธ์ค๋ ์ฌ๋ฌ ๋ค์์คํ์ด์ค์ ์ํ ์ ์๋ค.
- ๋ฆฌ๋
์ค ์ปจํธ๋กค ๊ทธ๋ฃน(cgroups)
์ปจํ ์ด๋๊ฐ ์ฌ์ฉํ ์ ์๋ ์์คํ ๋ฆฌ์์ค์ ์์ ์ ํํ๋ ๊ฒ์ด๋ค.
์ด๋ ํ๋ก์ธ์ค์ ๋ฆฌ์์ค ์ฌ์ฉ์ ์ ํํ๋ ๋ฆฌ๋ ์ค ์ปค๋ ๊ธฐ๋ฅ์ธ cgroups๋ก ์ด์ค์ง๋ค.
ํ๋ก์ธ์ค๋ ๋ค๋ฅธ ํ๋ก์ธ์ค์ฉ์ผ๋ก ์์ฝ๋ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
2.1.1 Docker ์ค์น ๋ฐ Hello World ์ปจํ ์ด๋ ์คํ
[Docker] ๋งฅ OS์ ๋์ปค ์ค์นํ๊ธฐ(Install Docker on MacOS)
ํด๋น ๋ธ๋ก๊ทธ๋ฅผ ํตํด ๋์ปค ๋ฐ ๋์ปค ๋ฐ์คํฌํ ์ค์น
ํฐ๋ฏธ๋์ ํตํด ๋ฒ์ ํ์ธ!
Hello World ์ปจํ ์ด๋ ์คํ
busybox - echo, ls, gzip ๋ฑ๊ณผ ๊ฐ์ ํ์ค UNIX ๋ช ๋ น์ค ๋๊ตฌ๋ค์ ํฉ์ณ ๋์ ๋จ์ผ ์คํํ์ผ
busybox ์ด๋ฏธ์ง๋ฅผ ์คํํ๊ธฐ ์ํด ์ด๋ค ๊ฒ๋ ๋ค์ด๋ก๋ํ ํ์์๋ค.
docker run ์ปค๋งจ๋๋ฅผ ์ฌ์ฉํด ์ด๋ค ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ก๋ ํ๊ณ ์คํํ ์ง ๋ช ๋ น์ด๋ฅผ ๊ธฐ์ ํ๋ฉด ๋๋ค.
์ค์ํ ์ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ปจํ ์ด๋ ๋ด๋ถ์์ ์คํ๋๊ณ , ์ปดํจํฐ์์ ์คํ์ค์ธ ๋ค๋ฅธ ๋ชจ๋ ํ๋ก์ธ์ค๋ก๋ถํฐ ์์ ํ ๊ฒฉ๋ฆฌ๋๋ค๋ ์ ์ด๋ค.
$ docker run busybox echo “Hello World”
๋ฐฑ๊ทธ๋ผ์ด๋์ ์ผ์ด๋ ๋์ ์ดํดํ๊ธฐ
docker run ๋ช ๋ น์ ์ํํ์ ๋ ๋จผ์ busybox:latest ์ด๋ฏธ์ง๊ฐ ๋ก์ปฌ์ ์กด์ฌํ๋์ง ์ฒดํฌํ๋ค.
์กด์ฌํ์ง ์๋๋ค๋ฉด ๋์ปค ํ๋ธ ๋ ์ง์คํธ๋ฆฌ์์ ์ด๋ฏธ์ง๋ฅผ ํํ๊ณ ๊ฒฉ๋ฆฌ๋ ์ปจํ ์ด๋์์ ์คํํ๋ค.
echo ๋ช ๋ น์ด๋ ํ ์คํธ๋ฅผ ํ์ค ์ถ๋ ฅ์ผ๋ก ์ถ๋ ฅํ ํ ํ๋ก์ธ์ค๋ฅผ ์ค๋จํ๊ณ ์ปจํ ์ด๋๋ ์ค์ง๋๋ค.
$ docker run <image> // ๋์ปค ์ด๋ฏธ์ง ์คํ
$ docker run <image>:<tag> // ์ปจํ
์ด๋ ์ด๋ฏธ์ง์ ๋ฒ์ ์ง์
2.1.2 ๊ฐ๋จํ node.js ์ ํ๋ฆฌ์ผ์ด์ ์์ฑํ๊ธฐ
# vi app.js
const http = require('http');
const os = require('os');
console.log("Kubia server starting...");
var handler = function(request, response) {
console.log("Received request from " + request.connection.remoteAddress);
response.writeHead(200);
response.end("You've hit " + os.hostname() + "\\n");
};
var www = http.createServer(handler);
www.listen(8080);
2.1.3 ์ด๋ฏธ์ง๋ฅผ ์ํ Dockerfile ์์ฑํ๊ธฐ
# vi Dockerfile
FROM node:7
ADD app.js /app.js
ENTRYPOINT ["node", "app.js"]
Dockerfile
- ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๋ฏธ์ง๋ก ํจํค์งํ๊ธฐ ์ํ ํ์ผ
- ๋์ปค๊ฐ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๊ธฐ ์ํด ์ํํด์ผ ํ ์ง์ ์ฌํญ์ด ๋ด๊ฒจ์๋ค.
- app.js ํ์ผ๊ณผ ๋์ผํ ๋๋ ํฐ๋ฆฌ์ ์์ด์ผํ๋ค
FROM ์ค์ ์์์ ์ผ๋ก ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ์ ์ํ๋ค.
๋๋ฒ์งธ ์ค์ ๋ก์ปฌ ๋๋ ํ ๋ฆฌ์ app.js๋ฅผ ์ด๋ฏธ์ง์ ๋ฃจํธ ๋๋ ํฐ๋ฆฌ์ ๋์ผํ ์ด๋ฆ์ผ๋ก ์ถ๊ฐํ๋ค.
ENTRYPOINT๋ ์ด๋ฏธ์ง๋ฅผ ์คํํ ๋ ์ํ๋์ผ ํ ๋ช ๋ น์ด๋ฅผ ์ ์ํ๋ค. ์ด ๊ฒฝ์ node app.js
2.1.4 ์ปจํ ์ด๋ ์ด๋ฏธ์ง ์์ฑ
$ docker build -t kubia .
๋์ปค๊ฐ ๋๋ ํฐ๋ฆฌ ๋ด Dockerfile์ ์ดํด๋ณด๊ณ ํ์ผ์ ๋ช ์๋ ์ง์ ์ฌํญ์ ๊ทผ๊ฑฐํด ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋ค.
๋น๋ ํ๋ก์ธ์ค๋ ๋์ปค ํด๋ผ์ด์ธํธ๊ฐ ์ํํ์ง ์๋๋ค.
์ด๋ฏธ์ง ๋ ์ด์ด์ ๊ดํด ์ดํดํ๊ธฐ
์ด๋ฏธ์ง๋ผ๋ ๊ฒ์ ํฐ ๋ฉ์ด๋ฆฌ๊ฐ ์๋๋ผ ์ฌ๋ฌ๊ฐ์ ๋ ์ด์ด๋ก ๊ตฌ์ฑ๋๋ค.
์๋ก ๋ค๋ฅธ ์ด๋ฏธ์ง๊ฐ ์ฌ๋ฌ ๊ฐ์ ๋ ์ด์ด๋ฅผ ๊ณต์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
์ปดํจํฐ์ ์ฌ๋ฌ๊ฐ์ ๋ ์ด์ด๊ฐ ์ด๋ฏธ ์ ์ฅ๋ผ ์๋ค๋ฉด ๋์ปค๋ ์ ์ฅ๋์ง ์์ ๋ ์ด์ด๋ง ๋ค์ด๋ก๋ํ๋ค.
2.1.5 ์ปจํ ์ด๋ ์ด๋ฏธ์ง ์คํ
$ docker run --name kubia-container -p 8080:8080 -d kubia
// -d ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ
// -p 8080:8080 ๋ก์ปฌ๋จธ์ 8080ํฌํธ๊ฐ ์ปจํ
์ด๋ ๋ด๋ถ์ 8080ํฌํธ์ ๋งคํ
$ docker ps
// ์คํ ์ค์ธ ๋ชจ๋ ์ปจํ
์ด๋๋ฅผ ์กฐํํด์ ๋ฆฌ์คํธ๋ฅผ ํ์ธ
$ docker inspect kubia-container
// ๋์ปค ์ปจํ
์ด๋์ด๋์ ์์ธ ์ ๋ณด๋ฅผ jsonํ์์ผ๋ก ์ถ๋ ฅํ๋ค.
$ docker exec -it kubia-container bash
// ์คํ ์ค์ธ ์ปจํ
์ด๋์ ๊ธฐ๋ณธ ์ด๋ฏธ์ง์ ์
ธ์ ํฌํจํ๊ณ ์๋ค๋ฉด ๋ช
๋ น์ด๋ฅผ ํตํด ์
ธ์ ์คํ ํ ์ ์๋ค.
// -it ์ต์
-i : ํ์ค ์
๋ ฅ์ ์คํ์ํ๋ก ์ ์งํ๋ค. ์
ธ์ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ๊ธฐ ์ํด ํ์ํ๋ค.
-t : ์์ฌ ํฐ๋ฏธ๋์ ํ ๋นํ๋ค.
ํธ์คํธ ์ด์์ฒด์ ์ ์ปจํ ์ด๋ ๋ด๋ถ์์ ์กฐํํ ํ๋ก์ธ์ค์ID๊ฐ ๋ค๋ฅด๋ค.
์ปจํ ์ด๋๋ ์์ฒด ๋ฆฌ๋ ์ค PID ๋ค์์คํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ฉฐ ๊ณ ์ ์ ์คํ์ค ๋ฒํธ๋ฅผ ๊ฐ์ง๊ณ ์์ ํ ๋ถ๋ฆฌ๋ ํ๋ก์ธ์ค ํธ๋ฆฌ๋ฅผ ๊ฐ๊ณ ์๋ค.
$ docker stop kubia-container
// ๋์ปค ์ปจํ
์ด๋ ์ค์ง
$ docker rm kubia-container
// ๋์ปค ์ปจํ
์ด๋ ์ญ์
2.1.8 ์ด๋ฏธ์ง ๋ ์ง์คํธ๋ฆฌ์ ์ด๋ฏธ์ง ํธ์
๋์ปค ํ๋ธ๋ ์ด๋ฏธ์ง์ ๋ฆฌํฌ๋ฆฌํฐ๋ฆฌ ์ด๋ฆ์ด ๋์ปค ํ๋ธ ID๋ก ์์ํด์ผ๋ง ์ด๋ฏธ์ง๋ฅผ ํธ์ํ ์ ์๋ค.
$ docker tag kubia ๋์ปคํ๋ธID/kubia
//ํ๊ทธ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ด ์๋๋ผ ์ถ๊ฐ์ ์ธ ํ๊ทธ๋ฅผ ์์ฑํ๋ค.
$ docker push ๋์ปคํ๋ธID/kubia
- 2.2 ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ ์ค์น
2.2.1 Minikube๋ฅผ ํ์ฉํ ๋จ์ผ ๋ ธ๋ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ ์คํํ๊ธฐ
๋ก์ปฌ์์ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ํ ์คํธํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๋ ๋ชฉ์ ์ผ๋ก ๋จ์ผ ๋ ธ๋ ํด๋ฌ์คํฐ๋ฅผ ์ค์นํ๋ ๋๊ตฌ์ด๋ค.
์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ๋ค๋ฃจ๋ ค๋ฉด kubectl CLI ํด๋ผ์ด์ธํธ๊ฐ ํ์ํ๋ค
2.2.2 ๊ตฌ๊ธ ์ฟ ๋ฒ๋คํฐ์ค ์์ง์ ํ์ฉํ ๊ด๋ฆฌํ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ ์ฌ์ฉํ๊ธฐ
์์ ํ ๋ค์ค ๋ ธ๋ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ์ดํด๋ณด๋ ค๋ฉด GKE ํด๋ฌ์คํฐ๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
- ๊ฐ ๋ ธ๋๋ ๋์ปค, kubelet, kube-proxy๋ฅผ ์คํํ๋ค.
- kubectl ํด๋ผ์ด์ธํธ ๋ช ๋ น์ด๋ ๋ง์คํฐ ๋ ธ๋์์ ์คํ์ค์ธ ์ฟ ๋ฒ๋คํฐ์ค API ์๋ฒ๋ก REST ์์ฒญ์ ๋ณด๋ด ํด๋ฌ์คํฐ์ ์ํธ์์ฉํ๋ค.
$ gcloud container clusters create kubia --num-nodes 3
// ์์ปค๋
ธ๋๊ฐ 3๊ฐ์ธ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ์์ฑ
$ kubectl get nodes
// ๋
ธ๋ ํ์ธ
$ kubectl describe [node] [๋
ธ๋ID]
// describe ๋ช
๋ น์ด๋ฅผ ํตํด cpu,๋ฉ๋ชจ๋ฆฌ,์์คํ
์ ๋ณด,๋
ธ๋์ ์คํ ์ค์ธ ์ปจํ
์ด๋ ๋ฑ์ ํฌํจํ ์ํ๋ฅผ ๋ณด์ฌ์ค๋ค.
- 2.3 ์ฟ ๋ฒ๋คํฐ์ค์ ์ฒซ ๋ฒ์งธ ์ ํ๋ฆฌ์ผ์ด์ ์คํํ๊ธฐ
๋ณดํต ๋ฐฐํฌํ๊ณ ์ ํ๋ ๋ชจ๋ ๊ตฌ์ฑ ์์๋ฅผ ๊ธฐ์ ํ JSON์ด๋ YAML ๋งค๋ํ์คํธ๋ฅผ ์ค๋นํ๋ค.
2.3.1 Node.js ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ๋ํ๊ธฐ
kubectl run ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์์ฑํ๋ค.
$ kubectl run kubia --image=[๋์ปคํ๋ธID]/kubia --port=8080 --generator=run/v1replicationcontroller "kubia" created
// --image=[๋์ปคํ๋ธID]/kubia ์คํํ๊ณ ์ ํ๋ ์ปจํ
์ด๋ ์ด๋ฏธ์ง ๋ช
์
// -port=8080 ์ฟ ๋ฒ๋คํฐ์ค์ ์ ํ๋ฆฌ์ผ์ด์
์ด 8080ํฌํธ๋ฅผ ์์ ๋๊ธฐ
// --generator ๋ก ๋ ํ๋ฆฌ์ผ์ด์
์ปจํธ๋กค๋ฌ๊ฐ ์์ฑ๋๋ค.
ํ๋ ์๊ฐ
์ฟ ๋ฒ๋คํฐ์ค๋ ๊ฐ๋ณ ์ปจํ ์ด๋๋ค์ ์ง์ ๋ค๋ฃจ์ง ์๋๋ค.
๋์ ํจ๊ป ๋ฐฐ์น๋ ๋ค์์ ์ปจํ ์ด๋๋ผ๋ ๊ฐ๋ช ๋ฅด ์ฌ์ฉํ๋ค.
์ด ์ปจํ ์ด๋์ ๊ทธ๋ฃน์ ํ๋(pod)๋ผ๊ณ ํ๋ค.
- ํ๋๋ ํ๋ ์ด์์ ๋ฐ์ ํ๊ฒ ์ฐ๊ด๋ ์ปจํ ์ด๋์ ๊ทธ๋ฃน์ผ๋ก ๊ฐ์ ์์ปค ๋ ธ๋์์ ๊ฐ์ ๋ฆฌ๋ ์ค ๋ค์์คํ์ด์ค๋ก ํจ๊ป ์คํ๋๋ค.
- ๊ฐ ํ๋๋ ์์ฒดIP, ํธ์คํธ์ด๋ฆ, ํ๋ก์ธ์ค ๋ฑ์ด ์๋ ๋ ผ๋ฆฌ์ ์ผ๋ก ๋ถ๋ฆฌ๋ ๋จธ์
- ํ๋์์ ์คํ ์ค์ธ ๋ชจ๋ ์ปจํ
์ด๋๋ ๋์ผํ ๋
ผ๋ฆฌ์ ์ธ ๋จธ์ ์์ ์คํ์ค์ธ ๊ฒ ์ฒ๋ผ ๋ณด์ธ๋ค.
๋ฐ๋ฉด ๋ค๋ฅธ ํ๋์ ์คํ ์ค์ธ ์ปจํ ์ด๋๋ ๊ฐ์ ์์ปค ๋ ธ๋์์ ์คํ ์ค์ด๋ผ๋ ๋ค๋ฅธ ๋จธ์ ์์ ์คํ ์ค์ธ ๊ฒ ์ฒ๋ผ ๋ณด์ธ๋ค.
๋ฐฑ๊ทธ๋ผ์ด๋์ ์ผ์ด๋ ๋์ ์ดํดํ๊ธฐ
- ๋ก์ปฌ์ ๋น๋ํ ์ด๋ฏธ์ง๋ ๋ก์ปฌ์์๋ง ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ๋์ปค ํ๋ธ์ ํธ์ฌํ๋ค.
- Kubectl ๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด ์ฟ ๋ฒ๋คํฐ์ค์ API ์๋ฒ๋ก REST HTTP ์์ฒญ์ ๋ณด๋ด์ ํด๋ฌ์คํฐ์ ์๋ก์ด ๋ํ๋ฆฌ์ผ์ด์ ์ปจํธ๋กค๋ฌ ์ค๋ธ์ ํธ๋ฅผ ์์ฑํ๋ค.
- ๋ํ๋ฆฌ์ผ์ด์ ์ปจํธ๋กค๋ฌ๋ ์ ํ๋๋ฅผ ์์ฑํ๊ณ ์ค์ผ์ค๋ฌ์ ์ํด ์์ปค ๋ ธ๋ ์ค ํ๋์ ์ค์ผ์ค๋ง ๋๋ค.
- ํด๋น ์์ปค ๋ ธ๋์ kubelet์ ๋ก์ปฌ์ ์ด๋ฏธ์ง๊ฐ ์๋ค๋ ๊ฒ์ ์๊ณ ๋์ปค์๊ฒ ์ด๋ฏธ์ง๋ฅผ ํ ํ๋๋ก ์ง์ํ๋ค. ์ดํ ๋์ปค๋ ์ปจํ ์ด๋๋ฅผ ์์ฑ ์คํํ๋ค.
2.3.2 ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๊ทผํ๊ธฐ
ํ๋์ ์ด๋ป๊ฒ ์ ๊ทผํ ๊น? → ๊ฐ ํ๋๋ ์์ฒด IP๋ฅผ ๊ฐ์ง๊ณ ์์ง๋ง ํด๋ฌ์คํฐ ๋ด๋ถ์ ์์ผ๋ฉฐ ์ธ๋ถ์์ ์ ๊ทผ ๋ถ๊ฐ๋ฅํ๋ค. → ์๋น์ค ์ค๋ธ์ ํธ๋ฅผ ํตํด ๋ ธ์ถํด์ผ ์ธ๋ถ์์ ์ ๊ทผ ๊ฐ๋ฅํ๋ค.
์๋น์ค ์ค๋ธ์ ํธ ์์ฑํ๊ธฐ
$ kubectl expose rc kubia --type=LoadBalancer --name kuia-http service "kubia-http" exposed
// replicationcontroller ๋์ rc๋ผ๋ ์ฝ์ด๋ฅผ ์ฌ์ฉํ๋ค.
$ kubectl get services
// ์๋น์ค ์ค๋ธ์ ํธ ์กฐํ
์ ํ๋ฆฌ์ผ์ด์ ์์ ํ๋ ์ด๋ฆ์ ํธ์คํธ ์ด๋ฆ์ผ๋ก ์ฌ์ฉํ๋ค. → ์ ํ๋ฆฌ์ผ์ด์ ์ด ์์ปค ๋ ธ๋ ์ด์์ฒด์ ์์ ์คํ ์ค์ด๋ผ ํ ์ง๋ผ๋ ์ ์ฉ์ผ๋ก ๋ถ๋ฆฌ๋ ๋จธ์ ์์ ์คํ ์ค์ธ ๊ฒ์ผ๋ก ๋ํ๋๋ค.
2.3.3 ์์คํ ์ ๋ ผ๋ฆฌ์ ์ธ ๋ถ๋ถ
์์งํ ๋ง์คํฐ ๋
ธ๋๊ฐ ๋จ์ผ ๋ง์คํฐ ๋
ธ๋์ธ์ง ์ฌ๋ฌ ๋์ ๋ง์คํฐ ๋
ธ๋์ ๋ถ์ฐ๋ ๊ฒ์ธ์ง ์ ์ ์๋ค.
→ ๋จ์ผ ์๋ํฌ์ธํธ๋ก ์ ๊ทผ ๊ฐ๋ฅํ API ์๋ฒ๋ฅผ ํตํด ์ํธ์์ฉํ๊ณ ์๊ธฐ ๋๋ฌธ์ด๋ค.
- kubectl run ๋ช ๋ น์ ์ํํ๋ฉด ๋ ํ๋ฆฌ์ผ์ด์ ์ปจํธ๋กค๋ฌ๋ฅผ ์์ฑํ๋ค.
- ๋ ํ๋ฆฌ์ผ์ด์ ์ปจํธ๋กค๋ฌ๊ฐ ์ค์ ํ๋๋ฅผ ์์ฑํ๋ค.
- ํด๋ฌ์คํฐ ์ธ๋ถ์์ ํ๋์ ์ ๊ทผ์ผ ํ๊ธฐ ์ํด ๋ ํ๋ฆฌ์ผ์ด์ ์ปจํธ๋กค๋ฌ์ ์ํด ๊ด๋ฆฌ๋๋ ๋ชจ๋ ํ๋๋ฅผ ๋จ์ผ ์๋น์ค๋ก ๋ ธ์ถํ๋๋ก ๋ช ๋ นํ๋ค.
ํ๋์ ์ปจํ ์ด๋์ ์ดํด
๋ณดํต ํ๋๋ ์ํ๋ ๋งํผ์ ์ปจํ ์ด๋๋ฅผ ํฌํจ์ํฌ ์ ์๋ค.
ํ๋๋ ์์ฒด์ ๊ณ ์ ํ ์ฌ์ค IP ์ฃผ์์ ํธ์คํธ ์ด๋ฆ์ ๊ฐ๋๋ค.
๋ ํ๋ฆฌ์ผ์ด์ ์ปจํธ๋กค๋ฌ์ ์ญํ ์ดํด
ํญ์ ์ ํํ ํ๋์ ํ๋ ์ธ์คํด์ค๋ฅผ ์คํํ๋๋ก ์ง์ ํ๋ค.
ํ๋๋ฅผ ๋ณต์ ํ๊ณ ํญ์ ์คํ ์ํ๋ก ๋ง๋ ๋ค.(๋ณต์ ๋ณธ์ ๋ง๋ ๋ค)
์๋น์ค๊ฐ ํ์ํ ์ด์
kubia-http ํ๋๊ฐ ์ด๋ ํ ์ด์ ์์ ๋ณ๊ฒฝ๋๊ฑฐ๋ ์ ๊ฑฐ๋ ์ ์๋ค.
๊ทธ๋ฌ๋ฉด ๋ ํ๋ฆฌ์ผ์ด์ ์ปจํธ๋กค๋ฌ์ ์ํด ์๋ก ์์ฑ๋ ํ๋๋ก ๋์ฒด๋๋ค.
์๋ก์ด ํ๋๋ ๋ค๋ฅธ IP์ฃผ์๋ฅผ ํ ๋น๋ฐ๋๋ฐ ์ด๊ฒ์ด ์ด์ ์ด๋ค.
ํญ์ ๋ณ๊ฒฝ๋๋ ํ๋์ IP์ฃผ์ ๋ฌธ์ ์ ์ฌ๋ฌ ๊ฐ์ ํ๋๋ฅผ ๋จ์ผ IP์ ํฌํธ์ ์์ผ๋ก ๋ ธ์ถ์ํค๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.
2.3.4 ์ ํ๋ฆฌ์ผ์ด์ ์ํ ํ์ฅ
$ kubectl get replicationcontrollers
//kubectl get์ผ๋ก ๋
ธ๋, ํ๋, ์๋น์ค, ๋ ํ๋ฆฌ์ผ์ด์
์ปจํธ๋กค๋ฌ ์ค๋ธ์ ํธ๋ฅผ
์กฐํํ๋๋ฐ ์ฌ์ฉํ๋ค.
$ kubectl scale rc kubia --replicas=3
//๋ ํ๋ฆฌ์นด ์ 3๊ฐ ์ ์ง
์ฟ ๋ฒ๋คํฐ์ค ์์น ์ค ํ๋ →
์ด๋ค ์ก์
์ ์ํํด์ผ ํ๋์ง ์ ํํ๊ฒ ์๋ ค์ฃผ๋ ๋์ ์ ์์คํ
์ ์๋ํ๋ ์ํ๋ฅผ ์ ์ธ์ ์ผ๋ก ๋ณ๊ฒฝ,
์ฟ ๋ฒ๋คํฐ์ค๊ฐ ์ค์ ํ์ฌ ์ํ๋ฅผ ๊ฒ์ฌํด ์๋ํ ์ํ๋ก ์กฐ์ ํ๋ค.
์๋น์ค ํธ์ถ ์ ๋ชจ๋ ํ๋๊ฐ ์์ฒญ์ ๋ฐ๋์ง ํ์ธ
๋ฌด์์๋ก ๋ค๋ฅธ ํ๋๋ฅผ ํธ์ถํ๊ณ ์๋ค.
์๋น์ค๋ ๋ค์ ํ๋ ์์์ ๋ก๋๋ฐธ๋ฐ์ ์ญํ ์ ํ๋ค.
์๋น์ค๋ฅผ ์ง์ํ๋ ํ๋๊ฐ ํ๋๋ ์ง ๊ทธ๋ฃน์ด๋ ์ง ๊ด๊ณ์์ด ํด๋น ํ๋๊ฐ ํด๋ฌ์คํฐ ๋ด์์ ์ด๋ํ๋ฉด์ ์์ฑ๋๊ณ ์ญ์ ๋๋ฉฐ IP๊ฐ ๋ณ๊ฒฝ๋์ง๋ง,
์๋น์ค๋ ํญ์ ๋์ผํ ์ฃผ์๋ฅผ ๊ฐ์ง๋ค.
์์คํ ์ ์๋ก์ด ์ํ ์๊ฐํ
- ํ๋์ ์๋น์ค์ ํ๋์ ๋ ํ๋ฆฌ์ผ์ด์ ์ปจํธ๋กค๋ฌ๊ฐ ์๋ค.
- ๋ชจ๋ ํ๋ ์ธ์คํด์ค ์ธ๊ฐ๊ฐ ๋ชจ๋ ๋ ํ๋ฆฌ์ผ์ด์ ์ปจํธ๋กค๋ฌ์ ์ํด ๊ด๋ฆฌ๋๋ค.
- ์๋น์ค๋ ๋ชจ๋ ์์ฒญ์ ํ๋์ ํ๋๊ฐ ์๋ ์ธ๊ฐ์ ๋ชจ๋ ์ ์กํ๋ค.
2.3.5 ์ ํ๋ฆฌ์ผ์ด์ ์ด ์คํ ์ค์ธ ๋ ธ๋ ๊ฒ์ฌํ๊ธฐ
์ฟ ๋ฒ๋คํฐ์ค์์ ํ๋๊ฐ ์ ์ ํ ๋ ธ๋์ ์ค์ผ์ค๋ง๋๋ค๋ฉด, ์ด๋ค ๋ ธ๋์ ํ๋๊ฐ ์คํ ์ค์ธ์ง๋ ์ค์ํ์ง ์๋ค.
๊ฐ ํ๋๋ ์์ฒด IP๋ฅผ ๊ฐ์ง๊ณ ๋ค๋ฅธ ํ๋๊ฐ ๊ฐ์ ๋ ธ๋์ ์๋์ง ๋ค๋ฅธ ๋ ธ๋์ ์๋์ง ์๊ด์์ด ํต์ ํ ์ ์๋ค.
$ kubectl get pods -o wide
// -o wide ์ต์
์ ์ฌ์ฉํด ์ถ๊ฐ ์ ๋ณด๋ฅผ ํ์ธ
$ kubectl describe pod kubia-hczji
// ํ๋ ์ธ๋ถ ์ ๋ณด๋ฅผ ์ดํด๋ณผ ์ ์๋ค
2.3.6 ์ฟ ๋ฒ๋คํฐ์ค ๋์๋ณด๋ ์๊ฐ
$ kubectl cluster-info | grep dashboard
// ํด๋น ๋ช
๋ น์ด๋ฅผ ํตํด ๋์๋ณด๋ url์ ๋ฐ์ ์ ์๋ค.
// GKE์์ ์ฌ์ฉ
$ gcloud container clusters describe kubia | grep -E "(username|password):"
// ๋์๋ณด๋ ์ฌ์ฉ์ ์ด๋ฆ๊ณผ ํจ์ค์๋ ํ์ธ
2.4 ์์ฝ
- ๊ณต๊ฐ๋ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ํํ๊ณ ์คํ ํ ์ ์๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ์ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ก ํจํค์งํด ์๊ฒฉ ์ด๋ฏธ์ง ๋ ์ง์คํธ๋ฆฌ์ ํธ์ฌํ๊ณ ๋๊ตฌ๋ ์ฌ์ฉํ ์ ์๋ค.
- GKE์ ๋ค์ค ๋ ธ๋ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ์ค์ ํ ์ ์๋ค.
- ํ๋, ๋ ํ๋ฆฌ์ผ์ด์ ์ปจํธ๋กค๋ฌ, ์๋น์ค ์ ๊ธฐ๋ณธ๊ฐ๋ ๋ฐ ์ฐ๊ด๊ด๊ณ
- ๋ ํ๋ฆฌ์ผ์ด์ ์ปจํธ๋กค๋ฌ์ ๋ ํ๋ฆฌ์นด ์๋ฅผ ๋ณ๊ฒฝํด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ์ผ๋ก ํ์ฅ ํ ์ ์๋ค.
์ด์ ๋ถ๋งํฌ ๐ฅ
*์ถ์ฒ - ์ฟ ๋ฒ๋คํฐ์ค ์ธ ์ก์ / ์ ์: ๋ง๋ฅด์ฝ.๋ฃฉ์ค / ์ถํ: ์์ด์ฝ์ถํ / 2020.03.31