k8s
-
쿠버네티스 커스텀 리소스(kubernetes Custom Resources)Kubernetes 2019. 1. 11. 09:00
쿠버네티스는 api 구조 들이 잘 정의되어 있습니다. 그래서 뛰어난 확장성을 가지고 있습니다. 쿠버네티스에서 제공하는 내장된 리소스 뿐만 아니라 사용자가 필요한 리소스를 쿠버네티스 내부에 정의해서 사용할 수 있습니다. 이렇게 커스텀리소스(CustomResource)를 정의해 놓으면 쿠버네티스 시스템 내부에 녹아들어서 kubectl같은 쿠버네티스 기본 명령어들과 함께 사용하는 것이 가능해 집니다. 그리고 그런 리소스들을 이용하는 자신만의 api 컨트롤러들을 만들어서 사용하는 것이 가능합니다. 쿠버네티스에서 사용자가 원하는 모든 기능들을 기본 기능으로 제공하려 하기 보다는 자신들에게 필요한 기능들은 직접 추가해서 사용할 수 있도록 커스텀 리소스 관련 기능들을 제공하고 있습니다. 커스텀 컨트롤러 커스텀 리소스..
-
helm 차트 사용하기Kubernetes 2018. 12. 24. 09:00
helm 차트 구조 helm에서 사용하는 차트는 디렉토리 하나에 들어가 있는 파일들의 집합입니다. 디렉토리 이름을 차트이름으로 지정하고 그 안에 필요한 파일들을 넣습니다. 디렉토리안의 파일들은 대략 다음과 같은 구조를 가집니다. wordpress/ Chart.yaml # 차트에 대한 정보를 가지고 있음. LICENSE # 옵션 : 차트 라이센스에 대한 정보를 가지고 있음. README.md # 옵션 : 차트에 대한 설명 파일 requirements.yaml # 옵션 : 차트의 의존성을 명시한 파일 values.yaml # 이 차트에서 사용하는 기본 설정 값 charts/ # 이 차트에 관련되어 있는 차트들 templates/ # 쿠버네티스 매니페스트 파일들로 변환될 YAML템플릿 파일들 templates..
-
helm 기본Kubernetes 2018. 12. 21. 09:00
helm 소개 helm은 쿠버네티스 패키지 매니저 입니다. 쿠버네티스를 사용하다보면 결국 수많은 YAML파일들을 관리해야 됩니다. helm에서는 이런 YAML파일들의 집합을 차트(chart)라고하고, 이 차트를 관리할 수 있게 해주는 도구가 helm입니다. helm은 쿠버네티스의 하위 프로젝트로 시작되었다가 2018년 6월에 CNCF재단의 정식 프로젝트로 승격되었습니다. Helm은 차트를 만들고, 차트 압축 파일(tgz)를 만들수 있습니다. 그리고 차트들이 저장되어 있는 차트 저장소(chart repository)와 연계해서 쿠버네티스 클러스터에 차트를 설치하거나 삭제할 수 있습니다. helm으로 설치된 차트들의 배포 주기를 관리할 수도 있습니다. helm을 이용하면 잘 정리된 차트들을 이용해서 필요한 ..
-
쿠버네티스 DNS(kubernetes dns)Kubernetes 2018. 9. 17. 09:00
쿠버네티스에서는 클러스터 내부에서만 사용가능한 DNS를 설정해 놓고 사용할 수 있습니다. 그래서 포드간 통신을 할때나 IP가 아닌 도메인을 설정해 두고 사용할 수 있습니다. 그렇게해서 한 클러스터에서 사용하던 yaml파일에서 포드간 통신을 도메인으로 설정해 둔다면 그걸 별다른 수정 없기 그대로 다른 클러스터로 가져가서 사용하는 것도 가능합니다. ip로 통신하도록 되어 있다면 한곳에서 세팅해놨던 yaml파일을 다른곳으로 옮겨 가져가서 사용하려고 할때 그 클러스터에서 사용하는 ip 대역이 다른 것이라면 그대로 사용할 수가 없게 됩니다. 이럴때 설정이 도메인을 사용하도록 되어 있다면 별다른 수정없이 그대로 사용할 수가 있습니다. 그 뿐만 아니라 일부의 경우에는 서비스디스커버리(service discovery)..
-
쿠버네티스 오토스케일링(kubernetes autoscaling)Kubernetes 2018. 9. 12. 09:00
클라우드를 사용하면서 유용한 기능으로 언급하는 것중에 가장 많이이야기하는게 오토스케일링이 아닐까 싶습니다. 컨테이너 오케스트레이션 쪽에서는 컨테이너만 잘 준비되어 있으면 오토스케일링이 더욱 쉬워지게 되었습니다. 쿠버네티스에서도 HPA(Horizontal Pod Autoscaler)라는 기본 오토스케일링 기능이 내장되어 있습니다. HPA는 CPU 사용률 기반으로 디플로이먼트로 실행된 포드의 개수를 개수를 늘리거나 줄이는 역할을 해줍니다. HPA 설정하기 오토스케일링 설정을 해보도록 하겠습니다. 다음 파일을 autoscaling.yaml로 저장한 다음에 kubectl apply -f autosclinging.yaml로 적용시키면 됩니다. apiVersion: autoscaling/v1 kind: Horizo..
-
쿠버네티스 모니터링 : 프로메테우스(kubernetes monitoring : phrometheus)Kubernetes 2018. 9. 10. 09:00
모니터링 솔루션으로 최근 가장 많이 주목받고 있는건 프로메테우스(phrometheus)입니다. 프로메테우스는 사우드클라우드(SoundCloud)에서 최초 개발했고 현재는 CNCF에 속한 프로젝트입니다. CNCF에 속한 여러가지 프로젝트들 중에서 쿠버네티스가 첫번째 졸업생이고 프로메테우스가 두번째 졸업생일 정도로 많은 주목을 받고 있는 프로젝트 입니다. 프로메테우스 주요 기능 프로메테우스의 주요 기능으로는 시계열(time series) 데이터를 저장할 수 있는 다차원(multi-dimensional) 데이터 모델과 이 데이터 모델을 효과적으로 활용할 수 있는 PromQL이라는 쿼리 언어가 있습니다. 기본적인 데이터 수집은 pull 구조로 되어 있어서 프로메테우스 서버가 수집하려는 대상에게서 데이터를 가져오..
-
쿠버네티스 모니터링 : metrics-server (kubernetes monitoring : metrics-server)Kubernetes 2018. 9. 7. 09:00
메트릭서버(metrics-server) 개념 쿠버네티스의 메트릭 수집 모니터링 아키텍처에서 코어메트릭 파이프라인 쪽을 가볍게 하기 위해서 힙스터를 deprecated시키고 그 다음으로 쿠버네티스에서 모니터링 표준으로 도입하려고 하는건 메트릭서버(metrics-server)입니다. 메트릭서버는 힙스터를 간소화한 버전이라고 생각하면 됩니다. kubelet에서 메트릭데이터를 수집해서 메모리에 저장하고 있습니다. 또한 apiserver를 통해 포드나 노드의 메트릭을 조회하는데 사용되는 메트릭 API(Metrics API)를 제공해 줍니다. 쿠버네티스에서 필요한 핵심 데이터들은 대부분 etcd에 저장되지만 메트릭 데이터들을 etcd에 저장하면 etcd의 부하가 너무 커지기 때문에 그렇게 하지 않고 메모리에 저장하..
-
쿠버네티스 모니터링 아키텍처(kubernetes monitoring architecture)Kubernetes 2018. 9. 3. 11:32
메트릭 분류 쿠버네티스에서 수집하는 메트릭은 크게 2개의 메트릭으로 분류됩니다. 시스템 메트릭(system metrics)과 서비스 메트릭(service metrics)으로 나눠집니다. 시스템 메트릭(system metrics) 시스템 메트릭은 노드나 컨테이너의 CPU, 메모리 사용량 같은 일반적인 시스템 관련 메트릭들입니다. 시스템 메트릭은 다시 코어 메트릭(core metrics)과 비코어메트릭(non-core metrics)으로 나뉩니다. 코어 메트릭은 쿠버네티스 내부 컴포넌트들이 사용하는 메트릭들입니다. 현재 클러스터내의 가용자원이 얼마나 되는지 파악하는데도 사용하고 내장된 오토스케일링등에서도 사용합니다. 대시보드에서도 사용하고 “kubectl top” 같은 명령어에서 사용하는 메트릭 데이터도 여..