• 환경변수
    • apiVersion: v1
      kind: ConfigMap
      metadata:
         name: test-configmap
         namespace: default
      data:
         hello.id: 이이이
      ---
      apiVersion: v1
      kind: Secret
      metadata:
         name: test-secret
         namespace: default
      data:
         hello.pw: 12345
      
    • apiVersion: v1
      kind: Pod
      metadata:
         name: test-env-pod
      spec:
         containers:
            - image: repo/hellotest
              ...
              env:
              - name: HELLO_ID # 애플리케이션에서 사용할 환경변수
                valueFrom:
                   configMapKeyRef: test-configmap
              - name: HELLO_PW # 애플리케이션에서 사용할 환경변수
                valueFrom:
                   secretKeyRef: test-secret
      
    • 다양한 여러환경에서 하드코딩으로 관리하면, 어려움.
    • kubectl get configmap test-configmap
    • kubectl get secret test-secret
    • kubectl exec -it test-env-pod -- /bin/bash # 진입후, printenv 으로 확인가능.
  • INIT Cmd&Args
    • ...
      containers:
         ...
         env:
         - name: HELLO
           value: hello
         command: ["/bin/echo"]
         args: ["$(HELLO)"]   
      restartPolicy: # OnFailure, Never 등 옵션 있음.
    • 해당 POD의 컨테이너가 부팅 된 뒤, 실행함.
    • 이를 응용하여, 'main 컨테이너'를 위해~ 여러 이미지들 환경을 구성하는 'init 컨테이너'를 할 수 있음.
  • 리소스 제약설정
    • ...
  • DaemonSet
    • ReplicaSet은 무작위로 워커노드에 POD를 할당.
    • DaemonSet은 각각 워커노드에 꼭 하나씩만 POD 할당. (데몬역할 용도에 적용하기 유용)
    • 예) kube-proxy 가 대표적인 DaemonSet POD 리소스.
  • Static POD
    • 각각의 노드에서, 시스템 내부적으로 kubelet이 직접 실행하는 POD
    • 기본적으로 /etc/kubernetes/manifests 경로에 정의되어 있다.
    • 예) etcd.yaml , kube-apiserver.yaml , kube-controller-manager.yaml , kube-scheduler.yaml
  • POD Scheduling
    • 매뉴얼 스케줄링 : 특정 성능의 Node에서 실행이 되도록~ 지정 할 수 있음.
      • 1안) POD.yaml에 'spec.nodeName'를 셋팅.
      • 2안) kubectl label node 노드명 라벨=true 이후, POD.yaml에 nodeSelector 셋팅.
    • 멀티플 스케줄러 설정 : 디폴트 스케줄러 이외에 특정 필요사항이 있을시, 추가적인 스케줄러 실행가능.
      • ...
  • Rolling-Update & RollBack
    • 업데이트
      • (POD1,POD1POD1) -> (POD2,POD2,POD2)
    • 롤링-업데이트
      • Replica-Set의 POD를 하나씩 단계적으로 업데이트.
      • 즉, POD는 Replica-Set으로 관리되고~ 업데이트시 Relica-Set를 Deployment가 통제하는것.
      • 옵션)
        • spec.strategy.type : RollingUpdate 혹은 Recreate
        • spec.strategy.rollingUpdate.maxSurge 및 maxUUnvailable
        • spec.minReadySeconds : 속도조절
        • spec.processDeadlineSeconds : 실패시 중단 대기시간
      • 커맨드)
        • kubectl rollout status deployment 이름
        • kubectl rollout history deployment 이름
        • kubectl rollout undo deployment 이름 # 롤백
        • kubectl rollout pause deployment 이름 # 업데이트 일시중지
        • kubectl rollout undo deployment 이름 # (업데이트 일시중시 시) 업데이트 취소
        • kubectl rollout resume deployment 이름 # (업데이트 일시중시 시) 업데이트 재시작
  • Auto-Scaling
    • HPA : POD를 늘려서, 처리량을 높이는 방법.
      • kubernetes.io/ko/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough
    • VPA : 리소스를 향상 시켜서, POD의 리소스 사용량을 높이는 방법.
    • CA : 클러스터 자체의 노드를 늘리는 방법.
    • ...

-끝-

'DevOps' 카테고리의 다른 글

Argo CD  (0) 2020.11.23
CircleCI  (0) 2020.11.23
K8S 리소스  (0) 2020.07.17
Dockerfile  (0) 2020.07.09
Docker-Swarm  (0) 2020.04.06

+ Recent posts