[컴][네트워크] 쿠버네티스의 Resource & Controllers

 쿠버네티스 리소스 컨트롤러

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

Reference

  1. Resources + Controllers Overview | SIG CLI

댓글 없음:

댓글 쓰기