쿠버네티스 리소스 컨트롤러
Resource + Controllers
- 리소스들(Resources) 는 yaml, 또는 json 형식으로 정의된 객체들이고 clutser 에 write 하게 된다.
- Controller 들은 Resources들이 저장되면 비동기적으로 이것을 작동시킨다.
Resources
- Kubernetes objects의 instance 들이 Resource이다.
- Kubernetes objects는 Deployment, Services, Namespaces 등이 있다.
- Resource 중에 container 를 run 하는 것을 Workload 라 한다.
- Workload 예
- Deployment
- StatefulSet
- Job
- CronJob
- DaemonSet
Resource Config
user는 file 에 Resource들을 선언(declare)하고, 그것을 Kubernetes cluster 에 적용해서 사용할 수 있다.
아래처럼 kubectl apply
에 사용하는 file 이 Resource Config file 인데 저 안에 Resource 에 대한 내용을 적으면 된다.
kubectl apply -f a.yml
위의 Resouce Config 가 kubectl 에 의해 cluster 에 반영이 되고, Controller 에 의해 작동된다.(actuate)
Resource ID
이 Resource 는 <apiVersion, kind, metadata.namespace, metadata.name>
로 고유한 ID를 만들게 된다. namesapce 를 생략하게 되면, default namespace 가 적용된다.
ref.1 에서는 kustomization.yaml
을 이용해서 Application 의 namespace 를 항상 명시하라고 한다.
Resources 구조
Resource 는 다음 4개의 component 를 갖는다.
- TypeMeta : apiVersion, kind
- ObjectMeta : name, namespace, 다른 metadata(labels, annotations, 등)
- Spec: user 가 cluster에게 원하는 Resource의 state를 적는다.
- Status : user 가 작성한 Resource Config 에서는 status 는 생략된다.
참고: ConfigMaps and Secrets 은 Status 가 없다. 그래서 Spec 도 없다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.15.4
댓글 없음:
댓글 쓰기