Kubernetes 2
๐ฟ Liveness, Readiness, Startup Probes
Liveness Probes
- ์ปจํ ์ด๋๊ฐ ์ด์์๋์ง ํ๋จํ๊ณ ๋ค์ ์์ํ๋ ๊ธฐ๋ฅ
- ์ปจํ ์ด๋์ ์ํ๋ฅผ ์ค์ค๋ก ํ๋จํ์ฌ ๊ต์ฐฉ ์ํ์ ๋น ์ง ์ปจํ ์ด๋๋ฅผ ์ฌ์์
- ๋ฒ๊ทธ๊ฐ ์๊ฒจ๋ ๋์ ๊ฐ์ฉ์ฑ์ ๋ณด์
Readiness Probes
- ํฌ๋๊ฐ ์ค๋น๋ ์ํ์ ์๋์ง ํ์ธํ๊ณ ์ ์ ์๋น์ค๋ฅผ ์์ํ๋ ๊ธฐ๋ฅ
- ํฌ๋๊ฐ ์ ์ ํ๊ฒ ์ค๋น๋์ง ์์ ๊ฒฝ์ฐ ๋ก๋๋ฐธ๋ฐ์ฑ์ ํ์ง ์์
Startup Probes
- ์ ํ๋ฆฌ์ผ์ด์ ์์ ์๊ธฐ๋ฅผ ํ์ธํ์ฌ ๊ฐ์ฉ์ฑ์ ๋์ด๋ ๊ธฐ๋ฅ
- Liveness์ Readiness์ ๊ธฐ๋ฅ์ ๋นํ์ฑํ
- ์์ ์ ๊ณผ๋ํ๊ฒ ์์ ๋ Probe ๊ฐ ๋์ํ์ฌ Pod์ด ์์ฑ๋์ง ์์ ์ ์์ผ๋ฏ๋ก ์์ ์๊ฐ์ ๋ฒ์ด์ฃผ๋ ์ฉ๋
- ๋ถํ ์ด ์ค๋๊ฑธ๋ฆฌ๋ ์ปจํ ์ด๋๊ฐ ํฌํจ๋ ์๋ ์๊ธฐ ๋๋ฌธ
๐ฟ Liveness Probe
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
apiVersion: v1
kind: Pod
metadata:
labels:
test: liveness
name: liveness-http
spec:
containers:
- name: liveness
image: k8s.gcr.io/liveness
args:
- /server
livenessProbe:
httpGet:
path: /healthz
port: 8080
httpHeaders:
- name: Custom-Header
value: Awesome
initialDelaySeconds: 3
periodSeconds: 3
- Liveness Probe๋ ์ปค๋งจ๋ ์คํ(Http ์์ฒญ์ด๋ ๋ฆฌ๋
์ค ๋ช
๋ น)์ผ๋ก ์ปจํ
์ด๋ ํ์ธ
- ์์ yml์ Http ์์ฒญ์ผ๋ก ํ์ธ
- 200์ด์ 400๋ฏธ๋ง(์ปจํ ์ด๋ ์ ์ง)
- ์๋ฒ ์๋ต ์ฝ๋๊ฐ ๊ทธ ์ธ์ผ ๊ฒฝ์ฐ(์ปจํ ์ด๋ ์ฌ์์)
- ์์ yml์ Http ์์ฒญ์ผ๋ก ํ์ธ
๐ฟ Readiness Probe
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
apiVersion: v1
kind: Pod
metadata:
name: goproxy
labels:
app: goproxy
spec:
containers:
- name: goproxy
image: k8s.gcr.io/goproxy:0.1
ports:
- containerPort: 8080
readinessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
livenessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 15
periodSeconds: 20
- Readiness TCP ์ค์
- ์ค๋น ํ๋ก๋ธ๋ 8080ํฌํธ ๊ฒ์ฌ
- 5์ด ํ ๊ฒ์ฌ ์์
- ๊ฒ์ฌ ์ฃผ๊ธฐ 10์ด
- ์๋น์ค๋ฅผ ์์ํด๋ ๋๋ค
- Liveness TCP ์ค์
- ํ์ฑํ ํ๋ก๋ธ๋ 8080 ํฌํธ ๊ฒ์ฌ
- 14์ด ํ ๊ฒ์ฌ ์์
- ๊ฒ์ฌ ์ฃผ๊ธฐ 20์ด
- ์ปจํ ์ด๋๋ฅผ ์ ์งํ๋ค.
๐ฟ Startup Probe
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
ports:
- name: liveness-port
containerPort: 8080
hostPort: 8080
livenessProbe:
httpGet:
path: /healthz
port: liveness-port
failureThreshold: 1
periodSeconds: 10
startupProbe:
httpGet:
path: /healthz
port: liveness-port
failureThreshold: 30
periodSeconds: 10
- ์์ํ ๋๊น์ง ๊ฒ์ฌ๋ฅผ ์ํ
- http ์์ฒญ์ ํตํด ๊ฒ์ฌ
- 30๋ฒ์ ๊ฒ์ฌํ์ฌ 10์ด ๊ฐ๊ฒฉ์ผ๋ก ์ํ
- 300์ด ํ์๋ ํฌ๋๊ฐ ์ ์์ ์ผ๋ก ๋์ํ์ง ์๋ ๊ฒฝ์ฐ ์ข
๋ฃ
- ์ฆ 300์ด ๋์ ํฌ๋๊ฐ ์ ์ ์คํ๋ ์๊ฐ์ ๋ฒ์ด์ค๋ค.
๐ฟ ๋ ํ๋ฆฌ์ผ์ด์ ์ (๋ ํ๋ฆฌ์ผ์ด์ ์ปจํธ๋กค๋ฌ)
- ํฌ๋๊ฐ ํญ์ ์คํ๋๋๋ก ์ ์งํ๋ ์ฟ ๋ฒ๋คํฐ์ค ๋ฆฌ์์ค
- ๋ ธ๋๊ฐ ํด๋ฌ์คํฐ์์ ์ฌ๋ผ์ง๋ ๊ฒฝ์ฐ ํด๋น ํฌํธ๋ฅผ ๊ฐ์งํ๊ณ ๋์ฒด ํฌ๋ ์์ฑ
- ์คํ ์ค์ธ ํฌ๋์ ๋ชฉ๋ก์ ์ง์์ ์ผ๋ก ๋ชจ๋ํฐ๋ง ํ๊ณ โ์ ํโ์ ์ค์ ํฌ๋ ์๊ฐ ์ํ๋ ์์ ์ผ์นํ๋์ง ํ์ธ
- ์ธ๊ฐ์ง ์์
- R.C๊ฐ ๊ด๋ฆฌํ๋ ํฌ๋์ ๋ฒ์๋ฅผ ๊ฒฐ์ ํ๋ ๋ ์ด๋ธ ์ ๋ ํฐ
- ์คํํด์ผ ํ๋ ํฌ๋์ ์๋ฅผ ๊ฒฐ์ ํ๋ ๋ณต์ ๋ณธ์ ์
- ์๋ก์ด ํฌ๋์ ๋ชจ์์ ์ค์ ํ๋ ํฌ๋ ํ ํ๋ฆฟ
- ์ฅ์
- ํฌ๋๊ฐ ์์ ๊ฒฝ์ฐ ์ ํฌ๋๋ฅผ ํญ์ ์คํ
- ๋ ธ๋๊ฐ ์ฅ์ ๋ฐ์ ์ ๋ค๋ฅธ ๋ ธ๋์ ๋ณต์ ๋ณธ ์์ฑ
- ์๋, ์๋์ผ๋ก ์ํ ์ค์ผ์ผ๋ง
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
apiVersion: v1
kind: ReplicationController
metadata:
name: nginx
spec:
replicas: 3
selector:
app: nginx
template:
metadata:
name: nginx
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80