본문 바로가기

kubernetes, helm, rancher

kubernetes pod resources, env, ReplicationController

기본적인 kubernetes resource, option 등을 설명한 블로그입니다. 추가적인 기능을 보고싶으시면 docs를 참고바랍니다.

https://kubernetes.io/docs/home/

 

Kubernetes Documentation

Kubernetes is an open source container orchestration engine for automating deployment, scaling, and management of containerized applications. The open source project is hosted by the Cloud Native Computing Foundation.

kubernetes.io

  • resource limits를 초과해서 사용하는 파드들은 restart 시킨다.

 

spec:
  containers:
  - name: nginx-container
    ...
    resources:
      requests: # 요청
        cpu: 200m # 200m = 0.2
        memory: 250Mi
      limits: # 제한, limits만 있으면 동일한 requests 값이 저장됨.
        cpu: 1 # cpu=1 -> 1 AWS vCPU, 1 GCP Core, 1Azure Core, 1Hyperthread
        memory: 500Mi
# 1M = 1000K = 1000M, core는 코어 개수 혹은 코어 메모리.
# 1Mi = 1024Ki
# default 1 vCPU, 512Mi
# cpu가 초과되면 throttle되지만, 메모리는 넘어가면 바로 종료된다.

 

  • default로 limit을 정해주기 위해서는 LimitRange type을 지정해줘야한다.
apiVersion: v1
kind: LimitRange
metadata:
  name: mem-limit-range
spec:
  limits:
  - default:
      memory: 512Mi
    defaultRequest:
      memory: 256Mi
    type: Container

 

apiVersion: v1
kind: LimitRange
metadata:
  name: cpu-limit-range
spec:
  limits:
  - default:
      cpu: 1
    defaultRequest:
      cpu: 0.5
    type: Container

 

spec: 
  containers: 
    -name: nginx-container 
    ... 
    env: 
    - name: [환경변수 이름] 
      value: [환경변수 값] 
# pod container 내의 환경변수 설정.

 

  • controllers : DAEMON SET, DEPLOYMENT->REPLICASET, STATEFULE SETS, CRONJOB->JOB, RESPLICATION CONTROLLER
  • Deployment같은 경우 REPLICASET의 상위 개념, 즉 deployment을 생성하면 replicaset도 생성.
  • ReplicationController: pod 개수를 보장하며 가장 기본적인 controller

 

apiVersion: v1
kind: ReplicationController
metadata:
  name: rc
spec:
  replicas: [배포개수]
  selector:
    key: value
  template:
    [container 템플릿]
# selector의 label을 보고 replicas값만큼 유지하고 부족하면 template을 봐서 생성.
# 반드시 selector의 값이 해당 파드 yaml파일에 labels로 있어야 실행된다.
kind: ReplicationController
spec:
  replica: 3
  selector:
    app: webui
  template:
    metatdata:
      name: nginx-pod
      labels:
        app:webui
    spec:
      containers:
      - name: nginx-container
        image:nginx:1.14

 

  • ReplicationController는 pod의 개수만 보장하고 label만 보기때문에 image나 다른 속성을 edit해도 안바뀐다.