- 환경변수
-
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 셋팅.
- 멀티플 스케줄러 설정 : 디폴트 스케줄러 이외에 특정 필요사항이 있을시, 추가적인 스케줄러 실행가능.
- ...
- 매뉴얼 스케줄링 : 특정 성능의 Node에서 실행이 되도록~ 지정 할 수 있음.
- 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 : 클러스터 자체의 노드를 늘리는 방법.
- ...
- HPA : POD를 늘려서, 처리량을 높이는 방법.
-끝-
'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 |