728x90
๐ Label & Selector
๋ ์ด๋ธ (Label)
- ๋ ์ด๋ธ์ ์ฟ ๋ฒ๋คํฐ์ค ๋ฆฌ์์ค์ ๋ถ์ฌ๋๋ ํค-๊ฐ ์์ผ๋ก, ๋ฆฌ์์ค๋ฅผ ์๋ณํ๊ณ ๋ถ๋ฅํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
- ๋ ์ด๋ธ์ ์ฌ์ฉ์๊ฐ ์ ์ํ๋ฉฐ ๋ฆฌ์์ค์ ์ ์ฐํ๊ฒ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๋ ๋ฐ ์ ์ฉํ๋ค.
- ์๋ฅผ ๋ค์ด, "app: frontend"๋ผ๋ ๋ ์ด๋ธ์ ๊ฐ์ง ํ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๋ฐํธ์๋ ์๋น์ค์์ ๋ํ๋ผ ์ ์๋ค.
- ๋ ์ด๋ธ์ ํน์ ๋ฆฌ์์ค์ ์ฌ๋ฌ ๊ฐ ํ ๋นํ ์ ์์ผ๋ฉฐ, ๋ค์ํ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
์ ๋ ํฐ (Selector)
- ์ ๋ ํฐ๋ ๋ ์ด๋ธ์ ์ฌ์ฉํ์ฌ ํน์ ๋ฆฌ์์ค๋ฅผ ์ ํํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
- ๋ฆฌ์์ค๋ฅผ ๊ทธ๋ฃนํํ๊ณ ์ฟผ๋ฆฌ๋ฅผ ๋ง๋ค ์ ์์ผ๋ฉฐ ์ด๋ ํน์ ๋ ์ด๋ธ๊ณผ ์ผ์นํ๋ ๋ฆฌ์์ค๋ฅผ ์ ํํ๊ธฐ ์ํ ๊ฒ์ด๋ค.
- ์๋ฅผ ๋ค์ด "app=frontend"๋ผ๋ ์ ๋ ํฐ๋ฅผ ์ฌ์ฉํ๋ฉด "app: frontend" ๋ ์ด๋ธ์ ๊ฐ์ง ๋ชจ๋ ํ๋๋ฅผ ์ ํํ ์ ์๋ค.
- ์ด๋ฅผ ํตํด ํ๋๋ฅผ ๊ทธ๋ฃนํํ๊ณ ์ ํ๋ ํ๋์ ๋ํด ์ผ๊ด์ ์ธ ์์ ์ ์ํํ๊ฑฐ๋ ๋ค๋ฅธ ๋ฆฌ์์ค์ ์ฐ๊ฒฐํ ์ ์๋ค.
๐ ์ ๋ฆฌ
- ๋ ์ด๋ธ๊ณผ ์
๋ ํฐ์ ์กฐํฉ์ ์ฟ ๋ฒ๋คํฐ์ค์์ ๋ฆฌ์์ค ๊ฐ์ ๊ด๊ณ๋ฅผ ์ค์ ํ๊ณ ๊ด๋ฆฌํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํ๋ค.
- ์๋ฅผ ๋ค์ด ์๋น์ค ๋ฆฌ์์ค๋ ์ ๋ ํฐ๋ฅผ ์ฌ์ฉํ์ฌ ํน์ ๋ ์ด๋ธ์ ๊ฐ์ง ํ๋๋ฅผ ์ ํํ๊ณ , ํด๋น ํ๋๋ก์ ํธ๋ํฝ์ ๋ก๋๋ฐธ๋ฐ์ฑํ๋ค.
- ์ด๋ฅผ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๋๋ฅผ ๋์ ์ผ๋ก ํ์ฅํ๊ฑฐ๋ ์ถ์ํ ์ ์๋ค.
๐ ์์
โจ๏ธ ReplicaSet์์์ ๋ ์ด๋ธ๊ณผ ์ ๋ ํฐ
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: my-replicaset
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-container
image: my-image
- my-replicaset์ด๋ผ๋ ์ด๋ฆ์ ๋ ํ๋ฆฌ์นด์ ์ ์์ฑํ๋ yml ํ์ผ์ด๋ค.
- replicas: 3์ ๋ ํ๋ฆฌ์นด์ ์ด ์ ์งํด์ผ ํ ํ๋์ ๊ฐ์๋ฅผ 3๊ฐ๋ก ์ง์ ํจ์ ์๋ฏธํ๋ค.
- selector.matchLabels๋ฅผ ํตํด my-replicaset์ app: my-app ๋ ์ด๋ธ์ ๊ฐ์ง ํ๋๋ฅผ ์ ํํ ๊ฒ์์ ๋ช ์ํ๋ค.
- template๋ ๋ ํ๋ฆฌ์นด์
์ด ์์ฑํ๋ ํ๋์ ํ
ํ๋ฆฟ์ ์ ์ํ๋ค.
- ์ฌ๊ธฐ์์๋ metadata.labels๋ฅผ ํตํด ๋ ํ๋ฆฌ์นด์ ์ด ์์ฑํ๋ ํ๋์ app: my-app์ด๋ผ๋ ์ด๋ฆ์ ๋ ์ด๋ธ์ ๋ถ์ฌํ๋ค.
โจ๏ธ Deployment์์์ ๋ ์ด๋ธ๊ณผ ์ ๋ ํฐ
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-container
image: my-image
- my-deployment์ด๋ผ๋ ์ด๋ฆ์ ๋ํ๋ก์ด๋จผํธ๋ฅผ ์์ฑํ๋ yml ํ์ผ์ด๋ค.
- replicas: 3์ ๋ํ๋ก์ด๋จผํธ๊ฐ ์ ์งํด์ผ ํ ํ๋์ ๊ฐ์๋ฅผ 3๊ฐ๋ก ์ง์ ํจ์ ์๋ฏธํ๋ค.
- selector.matchLabels๋ฅผ ํตํด my-deployment๋ app: my-app ๋ ์ด๋ธ์ ๊ฐ์ง ํ๋๋ฅผ ์ ํํ ๊ฒ์์ ๋ช ์ํ๋ค.
- template์ ๋ํ๋ก์ด๋จผํธ๊ฐ ์์ฑํ๋ ํ๋์ ํ
ํ๋ฆฟ์ ์ ์ํ๋ค.
- ์ฌ๊ธฐ์์๋ metadata.labels๋ฅผ ํตํด ๋ํ๋ก์ด๋จผํธ๊ฐ ์์ฑํ๋ ํ๋์ app: my-app์ด๋ผ๋ ์ด๋ฆ์ ๋ ์ด๋ธ์ ๋ถ์ฌํ๋ค.
Service์์์ ์ ๋ ํฐ
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 8080
- my-service๋ผ๋ ์ด๋ฆ์ ์๋น์ค๋ฅผ ์์ฑํ๋ yml ํ์ผ์ด๋ค.
- selector๋ฅผ ํตํด my-service๋ app: my-app ๋ ์ด๋ธ์ ๊ฐ์ง ํ๋๋ฅผ ์ ํํ ๊ฒ์์ ๋ช ์ํ๋ค.
- ports๋ ์๋น์ค๊ฐ ๋
ธ์ถํ ํฌํธ๋ฅผ ์ ์ํ๋ค.
- ์ฌ๊ธฐ์์๋ 80๋ฒ ํฌํธ๋ก ๋ค์ด์ค๋ ์์ฒญ์ 8080๋ฒ ํฌํธ๋ก ์ ๋ฌํ๋ค.
๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ์ธ ๋ํ๋ก์ด๋จผํธ & ์๋น์ค์์์ Label & Selector์ ์ฌ์ฉ ์์๋ฅผ ์ดํด๋ณด์.
โจ๏ธ ํ๋ก ํธ์๋ Deployment & Service
apiVersion: apps/v1
kind: Deployment
metadata:
name: frontend-deployment
spec:
replicas: 3
selector:
matchLabels:
app: frontend
template:
metadata:
labels:
app: frontend
spec:
containers:
- name: frontend-container
image: frontend-image
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: frontend-service
spec:
selector:
app: frontend
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer
- frontend-deployment๋ผ๋ ์ด๋ฆ์ ํ๋ก ํธ์๋ ๋ํ๋ก์ด๋จผํธ๋ฅผ ์์ฑํ๋ค.
- replicas: 3์ ํ๋ก ํธ์๋ ํ๋์ ๋ณต์ ๋ณธ ๊ฐ์๋ฅผ 3๊ฐ๋ก ์ง์ ํจ์ ์๋ฏธํ๋ค.
- selector.matchLabels๋ฅผ ํตํด frontend-deployment๋ app: frontend๋ผ๋ ์ด๋ฆ์ ๋ ์ด๋ธ์ ๊ฐ์ง ํ๋๋ฅผ ์ ํํ ๊ฒ์์ ๋ช ์ํ๋ค.
- template์ frontend-deployment๊ฐ ์์ฑํ๋ ํ๋์ ํ
ํ๋ฆฟ์ ์ ์ํ๋ค.
- ์ฌ๊ธฐ์์๋ metadata.labels๋ฅผ ํตํด frontend-deployment๊ฐ ์์ฑํ๋ ํ๋์ app: frontend๋ผ๋ ์ด๋ฆ์ ๋ ์ด๋ธ์ ๋ถ์ฌํ๋ค.
- frontend-container๋ผ๋ ์ด๋ฆ์ ์ปจํ ์ด๋๋ฅผ ์ ์ํ๊ณ frontend-image๋ฅผ ์ฌ์ฉํ๋ค.
- ํ๋ก ํธ์๋ ํ๋์ 80๋ฒ ํฌํธ๋ฅผ ์ด์ด์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ค.
- frontend-service๋ผ๋ ์ด๋ฆ์ ์๋น์ค๋ฅผ ์์ฑํ๋ค.
- selector๋ฅผ ํตํด app: frontend ๋ ์ด๋ธ์ ๊ฐ์ง ํ๋๋ฅผ ์ ํํ๋ค.
- 80๋ฒ ํฌํธ๋ก ๋ค์ด์ค๋ ์์ฒญ์ ํ๋ก ํธ์๋ ํ๋์ 80๋ฒ ํฌํธ๋ก ์ ๋ฌํ๋ค.
- type: LoadBalancer๋ฅผ ์ง์ ํ์ฌ ๋ก๋ ๋ฐธ๋ฐ์๋ฅผ ํตํด ์ธ๋ถ๋ก ์๋น์ค๋ฅผ ๋ ธ์ถํ๋ค.
โจ๏ธ ๋ฐฑ์๋ Deployment & Service
apiVersion: apps/v1
kind: Deployment
metadata:
name: backend-deployment
spec:
replicas: 2
selector:
matchLabels:
app: backend
template:
metadata:
labels:
app: backend
spec:
containers:
- name: backend-container
image: backend-image
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: backend-service
spec:
selector:
app: backend
ports:
- protocol: TCP
port: 8080
targetPort: 8080
- backend-deployment๋ผ๋ ์ด๋ฆ์ ๋ฐฑ์๋ ๋ํ๋ก์ด๋จผํธ๋ฅผ ์์ฑํ๋ค.
- replicas: 2๋ ๋ฐฑ์๋ ํ๋์ ๋ณต์ ๋ณธ ๊ฐ์๋ฅผ 2๊ฐ๋ก ์ง์ ํจ์ ์๋ฏธํ๋ค.
- selector.matchLabels๋ฅผ ํตํด backend-deployment๋ app: backend๋ผ๋ ์ด๋ฆ์ ๋ ์ด๋ธ์ ๊ฐ์ง ํ๋๋ฅผ ์ ํํ ๊ฒ์์ ๋ช ์ํ๋ค.
- template์ backend-deployment๊ฐ ์์ฑํ๋ ํ๋์ ํ
ํ๋ฆฟ์ ์ ์ํ๋ค.
- ์ฌ๊ธฐ์์๋ metadata.labels๋ฅผ ํตํด backend-deployment๊ฐ ์์ฑํ๋ ํ๋์ app: backend๋ผ๋ ์ด๋ฆ์ ๋ ์ด๋ธ์ ๋ถ์ฌํ๋ค.
- backend-container๋ผ๋ ์ด๋ฆ์ ์ปจํ ์ด๋๋ฅผ ์ ์ํ๊ณ , backend-image๋ฅผ ์ฌ์ฉํ๋ค.
- ๋ฐฑ์๋ ํ๋์ 8080๋ฒ ํฌํธ๋ฅผ ์ด์ด์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ค.
- backend-service๋ผ๋ ์ด๋ฆ์ ์๋น์ค๋ฅผ ์์ฑํ๋ค.
- selector๋ฅผ ํตํด app: backend ๋ ์ด๋ธ์ ๊ฐ์ง ํ๋๋ฅผ ์ ํํ๋ค.
- 8080๋ฒ ํฌํธ๋ก ๋ค์ด์ค๋ ์์ฒญ์ ๋ฐฑ์๋ ํ๋์ 8080๋ฒ ํฌํธ๋ก ์ ๋ฌํ๋ค.
๐ค matchLabels VS labels
matchLabels
- ์ด ํ๋๋ ReplicaSet๊ณผ Pod๋ฅผ ์ ํํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
- matchLabels์ ์ง์ ๋ ๋ผ๋ฒจ๊ณผ ๋์ผํ ๋ผ๋ฒจ์ ๊ฐ์ง๊ณ ์๋ ReplicaSet๊ณผ Pod๋ง์ด Deployment์ ์ํด ๊ด๋ฆฌ๋๋ค.
- ์๋ฅผ ๋ค์ด ์์ YAML ํ์ผ์์ matchLabels๋ [app: frontend] or [app: backend]๋ก ์ง์ ๋์ด ์๋ค.
- ์ด๋ Deployment๊ฐ app์ด๋ผ๋ ๋ผ๋ฒจ์ ๊ฐ์ด frontend or backend์ธ ReplicaSet๊ณผ Pod๋ง์ ์ ํํ์ฌ ๊ด๋ฆฌํ๋ค๋ ์๋ฏธ์ด๋ค.
labels
- labels๋ Pod ํ
ํ๋ฆฟ์์ ์ฌ์ฉ๋๋ค.
- Pod์ ๋ผ๋ฒจ์ ๋ถ์ฌํ๋ ์ญํ ์ ํ๋ค.
- Deployment๊ฐ ๊ด๋ฆฌํ๋ Pod๋ Pod ํ ํ๋ฆฟ์ ์ง์ ๋ labels๋ฅผ ๊ฐ์ง๊ฒ ๋๋ค.
- ์๋ฅผ ๋ค์ด ์์ YAML ํ์ผ์์ labels๋ [app: frontend] or [app: backend]๋ก ์ง์ ๋์ด ์๋ค.
- ์ด๋ Deployment์ ์ํด ์์ฑ๋๋ Pod๊ฐ "app" ๋ผ๋ฒจ์ ๊ฐ์ผ๋ก frontend or backend๋ผ๋ ์ด๋ฆ์ ๊ฐ์ง๊ฒ ๋๋ค๋ ์๋ฏธ์ด๋ค.
๐ ์ ๋ฆฌ
- matchLabels๋ Deployment์ selector๋ฅผ ์ง์ ํ์ฌ ํน์ ReplicaSet๊ณผ Pod๋ฅผ ์ ํํ๊ณ ๊ด๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋๋ฉฐ, labels๋ Deployment์ ์ํด ์์ฑ๋๋ Pod์ ๋ผ๋ฒจ์ ๋ถ์ฌํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
- ์ด๋ฅผ ํตํด Deployment๋ ํน์ ํ ๋ผ๋ฒจ์ ๊ฐ์ง ReplicaSet๊ณผ Pod๋ง์ ๊ด๋ฆฌํ๊ณ ์ ์ดํ ์ ์๋ค.
์ฐธ๊ณ
๋คผํผ
728x90
'[DevOps] > Kubernetes' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ฟ ๋ฒ๋คํฐ์ค Labels & Selector ๊ฐ๋จ ์ ๋ฆฌ (0) | 2023.11.10 |
---|---|
์ฟ ๋ฒ๋คํฐ์ค์ ์ค์ผ์ค๋ฌ ๊ฐ๋จ ์ ๋ฆฌ (0) | 2023.11.10 |
ReplicationController์ ReplicaSet ๊ฐ๋จ ์ ๋ฆฌ (3) | 2023.10.25 |
CKA ํ์น ๋ ธํธ (0) | 2023.10.18 |
kubernetes - Volumes (0) | 2023.07.30 |