워크로드 관리하기
워크로드 관리하기 (Managing Workloads)
앱을 배포하고 Service로 노출했다면, 이제 무엇을 할까요? Kubernetes는 스케일링과 업데이트를 포함해 애플리케이션 배포를 관리하는 여러 도구를 제공해요.
리소스 구성 정리 (Organizing resource configurations)
많은 애플리케이션은 Deployment와 함께 Service처럼 여러 리소스를 생성해야 해요. 여러 리소스의 관리는 같은 파일에 그룹화해 단순화할 수 있어요 (YAML에서 ---로 구분).
apiVersion: v1
kind: Service
metadata:
name: my-nginx-svc
labels:
app: nginx
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: nginx
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
여러 리소스도 단일 리소스와 같은 방식으로 생성할 수 있어요.
kubectl apply -f https://k8s.io/examples/application/nginx-app.yaml
리소스는 매니페스트에 나타난 순서대로 생성돼요. 따라서 Service를 먼저 지정하는 게 좋아요. 그러면 스케줄러가 Deployment 같은 컨트롤러가 생성하는 Service 관련 Pod를 펼칠 수 있음을 보장할 수 있어요.
kubectl apply는 여러 -f 인자도 받아요.
kubectl apply -f https://k8s.io/examples/application/nginx/nginx-svc.yaml \
-f https://k8s.io/examples/application/nginx/nginx-deployment.yaml
같은 마이크로서비스나 애플리케이션 티어와 관련된 리소스를 같은 파일에 두고, 앱과 관련된 모든 파일을 같은 디렉터리에 그룹화하는 것이 권장 관행이에요. URL을 구성 소스로 지정할 수도 있어요 (소스 컨트롤 시스템의 매니페스트에서 직접 배포할 때 편리함).
kubectl apply -f https://k8s.io/examples/application/nginx/nginx-deployment.yaml
외부 도구 (External tools)
Helm
Helm은 사전 구성된 Kubernetes 리소스 패키지를 관리하는 도구예요. 이 패키지를 Helm chart라고 불러요.
Kustomize
Kustomize는 Kubernetes 매니페스트를 탐색해 구성 옵션을 추가·제거·업데이트해요. kubectl의 일부로도 제공되고 standalone 도구로도 사용할 수 있어요.