[정리] 기능별 개념 정리(105)
-
쿠버네티스 입문 - 11 - 로깅과 모니터링
컨테이너의 로그 수집 컨테이너 로그 수집은 보통 컨테이너 런타임인 도커가 담당한다. 앱컨테이너가 stdout, stderr 스트림을 이용해 로그를 출력하면 로그 드라이버로 리다이렉트하여 출력하게 설정되어있다. 파드의 로그 확인하기 kubectl logs -f 파드이름 명령어를 이용하면 파드가 떠있는 노드에 접근하지 않아도 파드의 로그를 확인할 수 있다. -f 옵션은 로그를 지속해서 수집하는 테일링 옵션이다. 실시간으로 여러개 파드의 로그를 지켜보고 싶을 때는 실시간 로그모니터링 도구인 스턴을 사용할 수 있다. 전통적인 어플리케이션 운영 환경에서의 로깅 로컬 파일 시스템의 지정된 위치에 로그를 저장한다. 로그로테이트를 이용해 로그를 일정 기간만 보관한다. 이런 방식은 항상 지정된 장비에서만 실행된다는 것이..
2020.04.08 -
쿠버네티스 입문 - 10 - 쿠버네티스 DNS
쿠버네티스 DNS 파드 사이에 통신할 때 IP 가 아닌 도메인을 사용할 수 있다. 특정 서비스에 접근하는 도메인은 "서비스이름.네임스페이스.svc.cluster.local" 이다. 특정 파드에 접근하는 도메인은 "파드IP주소.네임스페이스.pod.cluster.local" 이다. 하지만 파드의 IP 를 도메인에 포함시키면 도메인을 사용할 이유가 없다. DNS 를 클라이언트나 API 게이트웨이가 호출할 서비스를찾는 서비스 디스커버리 용도로 사용할 수 도 있다. DNS 질의 구조 DNS 도 쿠버네티스 클러스터 안에서 파드로 실행되는 것이다. 파드마다 도메인이름을 어떤 순서로 찾을지 설정할 수 있다. 이 때 .spec.dnsPolicy 를 사용한다. .spec.dnsPolicy 는 다음 과 같은 타입을 가질 수..
2020.04.08 -
쿠버네티스 입문 - 09 - 클러스터 네트워킹
도커 컨테이너의 네트워킹 일반적인 도커 컨테이너 네트워크는 브리지 타입 네트워크 구조로 되어있다. 브리지 타입 네트워크 구조는 아래와같다. 호스트는 호스트 네트워크 네임스페이스를 가진다. 그리고 여기에 docker0 라는 브리지를 만든다. 컨테이너는 컨테이너 네트워크 네임스페이스를 가진다. 그리고 여기에 컨테이너를 만든다. 컨테이너 네트워크 네임스페이스에는 가상 이더넷(베스)을 가지고 있다. 도커는 docker0에 베스들을 연결하여 통신한다. 네트워크 네임스페이스는 서로 연결되기 전까지 독립적으로 동작한다. 네트워크 네임스페이스는 별도의 ARP, 라우팅, iptable 을 가진다. 도커 컨테이너의 네트워크 타입 브리지 : 호스트에 브리지를 만들고 컨테이너와 호스트는 가상 이더넷(베스)을 이용해 연결한다...
2020.04.08 -
쿠버네티스 입문 - 08 - 볼륨
볼륨 컨테이너는 기본적으로 상태가 없는 앱 컨테이너를 사용한다. 컨테이너가 실행 되지 않거나 삭제되었을 때 현재까지 저장한 데이터가 사라진다. 한편 앱의 특성에 따라 컨테이너에 문제가 생겨도 데이터를 보존해야할 때가 있다. 대표적인 예가 데이터를 파일로 저장하는 젠킨스, 데이터베이스인 MySQL 등이 있다. 이럴 때 볼륨을 사용한다. 볼륨 관련 필드중에 .spec.container.volumeMounts.mountPropagation 이 있다. 이 설정을 이용하면 파드 하나 안의 컨테이너들끼리 볼륨을 공유할지 같은 노드 안의 파드들 끼리 볼륨을 공유할지 설정할 수 있다. 이는 다음 3가지 타입을 가진다. None 호스트에서 해당 볼륨 하위에 마운트 된 다른 디렉토리들은 해당 볼륨이 볼 수 없게한다. 컨테..
2020.04.08 -
쿠버네티스 입문 - 07 - 파드 스케줄링
파드 스케줄링 기법 노드 셀렉터 : 특정 노드에 스케줄링 되도록 하는 가장 간단한 설정 노드 어피니티 : 파드를 노드의 레이블 기반으로 스케줄링한다. 파드 어피니티 : 파드를 지정한 레이블을 가진 파드들이 있는 노드로 스케줄링한다. 테인트와 톨러레이션 : 테인트가 걸린 노드에 요구하는 톨러레이션이 설정되있지 않은 파드라면 생성하지 못하도록한다. 어피니티가 적용된 파드 샘플 apiVersion: v1 kind: Pod metadata: name: kubernetes-nodeaffinity-pod spec: containers: - name: kubernetes-nodeaffinity-pod image: arisu1000/simple-container-app:latest ports: - containerPo..
2020.04.05 -
쿠버네티스 입문 - 06 - 컨피그맵, 시크릿
컨피그맵 컨테이너에 필요한 환경설정을 분리해서 저장할 수 있다. 클라우드 네이티브 아키텍쳐에서 컨테이너는 템플릿에 맞춰 변하지 않는 자원이여야한다. 그런데 개발용과 프로덕션용 서비스를 다르게 설정해야하는 경우가 생긴다. (ex. DB 설정, 로그 출력 레벨...) 이럴때 컨피그맵을 사용한다. 컨피그맵 샘플 configmap-dev.yml apiVersion: v1 kind: ConfigMap metadata: name: config-dev namespace: default data: DB_URL: localhost DB_USER: myuser DB_PASS: mypass DEBUG_INFO: debug configmap-prod.yml apiVersion: v1 kind: ConfigMap metadat..
2020.04.04