Kubernetes(k8s) (33) 썸네일형 리스트형 ConfigMap 1. ConfigMap 1.1. 정의 컨피그맵은 키-값 쌍으로 기밀이 아닌 데이터를 저장하는 데 사용하는 API 오브젝트이다. 파드는 볼륨에서 환경 변수, 커맨드-라인 인수 또는 구성 파일로 컨피그맵을 사용할 수 있다. 컨피그맵을 사용하면 컨테이너 이미지에서 환경별 구성을 분리하여, 애플리케이션을 쉽게 이식할 수 있다. 컨피그맵은 보안 또는 암호화를 제공하지 않는다. 저장하려는 데이터가 기밀인 경우, 컨피그맵 대신 시크릿(Secret) 또는 추가(써드파티) 도구를 사용해야 한다. 1.2. 사용 이유 애플리케이션 코드와 별도로 구성 데이터를 설정하려면 컨피그맵을 사용한다. 컨피그맵은 많은 양의 데이터를 보유하도록 설계되지 않았다. 컨피그맵에 저장된 데이터는 1MiB를 초과할 수 있다. 이 제한보다 큰 설정.. Taint 1. Taint 1.1. 정의 쿠버네티스의 Taint는 노드를 구성하여 특정 pod만 해당 노드에 스케줄링할 수 있도록 제한하는 방법이다. 특정 노드에는 Taint에 의해 영향을 받지 않는 pod만 스케줄링 된다. 쿠버네티스에는 이러한 테인트를 처리하기 위해 Toleration이라는 개념이 있다. Toleration은 pod에 설정되며, 해당 pod가 어떤 Taint에 영향을 받지 않을지 지정한다. Taint는 “key=value:effect” 형식으로 세 가지 구성 요소가 있다. ● key: Taint를 구분하는 항목 ● value: key와 연관된 값, 즉 key의 상세한 속성 ● effect 1.2. Taint 옵션 ● NoSchedule 이 taint를 toleration 하지 않는 pod는 사용.. Cordon & Drain 1. Cordon & Drain 1.1. 정의 1.1.1. Cordon Cordon은 노드를 제외하고 스케줄링 되는 것을 막는 방법이다. 이를 통해 노드에 있는 pod를 안전하게 관리할 수 있다. 노드가 다운되거나 유지보수를 위해 임시적으로 사용 불가능한 경우, 쿠버네티스는 pod를 다른 노드에 재배치한다. Cordon이 적용된 노드에 있는 기존 pod들은 계속 실행되지만, 새로운 pod는 배치되지 않는다. 1.1.2. Drain 쿠버네티스에서 drain은 노드 유지보수를 위해 사용되는 중요한 작업이다. 노드의 유지보수를 위해 일시적으로 노드에서 pod를 안전하게 이동시키는 작업이다. drain 작업을 수행하면 해당 노드에서 실행중인 pod가 다른 노드로 옮겨지고, 해당 노드는 유지 보수 작업을 위해 사.. 쿠버네티스의 자동 복구 기능 1. 쿠버네티스의 자동 복구 기능 1) 상태 확인 2) ubu22-03 강제 shutdown 3) 복구 노드 03이 다운되자 노드 03의 pod들이 노드 02로 전부 옮겨졌다. 쿠버네티스 트러블 슈팅의 기본 프로세스 1. 쿠버네티스 트러블 슈팅의 기본 프로세스 1.1. 디버깅 프로세스 쿠버네티스의 여러 장점 중 하나는 에러 메시지가 굉장히 직관적이라 이해하기 쉽다는 것이다. 또한 기존 가상 머신 환경과 달리 컨테이너 기반이라 이식성(portabiliy)이 뛰어나다. 따라서 호스트의 운영체제나 환경설정 등에 관계없이 컨테이너는 대부분의 환경에서 동일하게 동작하며, 에러 상황 및 관련 조치도 마찬가지로 다양한 환경에서 동일한 방법으로 처리할 수 있다. 쿠버네티스 환경에서 발생하는 대부분의 문제는 아래와 같은 순서의 디버깅 프로세스로 해결할 수 있다. Apply -> Get -> Describe -> Logs -> Get Event 1) Apply : Yaml 파일을 이용해 오브젝트 생성 2) Get : 생성한 오브젝트 .. 트러블슈팅 1. Trouble Shooting Kubernetes에 배치된 CoreDNS Pod가 루프를 감지하면 CoreDNS Pod는 "CrashLoopBackOff"로 시작한다. Kubernetes는 CoreDNS가 루프를 감지하고 나올 때마다 Pod를 다시 시작하려고 하기 때문이다. [admin@ubu22-01 ~ (kubernetes-admin@cluster.local:kube-system)]$ kgp NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES ... nodelocaldns-gbbh4 1/1 CrachLoopBackOff 0 14s 192.168.100.40 ubu22-02 nodelocaldns-m8pwg 1/1 Crach.. Kubelet 1. Kubelet 1.1. 정의 kubelet은 각 노드에서 실행되는 기본 노드 에이전트다. api-server와 통신하며, podspec을 사용해 podspec에 기술된 컨테이너들이 정상적으로 작동되도록 돕는다. Worker Node가 배라면 kubelet은 선장과 같은 역할을 맞는다고 할 수 있다. 관리자가 pod을 배포하려고 할 경우, api-server를 비롯한 컨트롤 플레인의 컴포넌트들은 명령에 대한 인가 및 인증을 수행하고, 선언된 상태와 일치하지 않는 pod가 있는지 확인하며, 어떤 노드에 pod을 배치하면 좋을지를 결정한다. 배치하는 역할은 컨트롤 플레인의 스케줄러가 결정하지만 실제로 컨테이너 런타임에 배치를 명령하는 것은 kubelet의 역할이다. 만약 kubelet이 정지되면 컨테이너.. Deployment models 1.1. Deployment 정의 Deployment는 ReplicaSet의 상위 개념으로, Pod와 ReplicaSet에 대한 배포를 관리한다. 운영 중에 애플리케이션의 새 버전을 배포하거나 부하가 증가하면서 Pod를 추가하는 등 여러 가지 동작을 Deployment로 관리할 수 있다. 또한 Deployment는 배포에 대한 이력을 관리하는데 만약 배포한 새버전의 문제가 생긴 경우 Deployment를 통해 쉽게 이전 버전으로 롤백할 수 있다. 쿠버네티스 서비스를 운영하는 상황이라면 ReplicaSet만으로 운영하기 보다는 대부분 Deployment 단위로 Pod와 ReplicaSet을 관리하여 운영한다. 1.2. Big Bang Big Bang은 업데이트 혹은 업그레이드를 애플리케이션 전체 혹은 주요.. 이전 1 2 3 4 5 다음