Kubernetes
-
KafkaKubernetes 2020. 12. 15. 15:40
end-to-end 아키텍처의 문제점 실시간 트랜잭션(OLTP) 처리와 비동기 처리가 동시에 이뤄지지만 통합된 전송 영역이 없어 복잡도 증가 문제 발견과 조치를 위해서는 이와 관련된 여러 데이터 시스템을 확인해야함 장애 / OS update / scale out 과 같은 작업을 위해 많은 준비 시간이 필요 데이터 파이프라인 관리의 어려움 여러 시스템에 저장된 동일한 데이터를 개발자는 각기 다른 방법으로 파이프라인을 만들고 유지하게 된다. 각 파이프라인별로 데이터 포맷과 처리하는 방법들이 완전히 달라서 데이터 파이프라인의 확장이 어려움 데이터 파이프라인의 복잡성으로 인해 두 시스템 간의 데이터가 서로 달라져 데이터의 신뢰도 저하 Kafka의 등장 위와 같은 문제점을 해결하기 위해 모든 시스템으로 데이터 전..
-
-
Kubernetes AuthenticationKubernetes 2019. 11. 15. 14:30
회사에서 개발자 및 운영팀을 위한 격리된 환경을 만드는 것은 매우 유용하다. kubernetes를 활용할 때 개발자가 환경을 편안하게 사용할 수 있도록 해야 하며, 안전한 개발 공간(환경)을 제공하게 되면 해당 기술을 익히는 데 큰 도움이 된다. kubernetes는 namespace와 RBAC(Role-Based Access Control)를 이용하여 격리된 환경을 제공할 수 있다. namespace가 격리된 공간이라고 한다면, RBAC는 격리된 공간(namespace)에 대한 제한된 접근을 관리하는 역할을 한다. 이 글에서는 namespace를 통해 kubernetes cluster에서 격리된 공간을 만들고 RBAC를 통해 해당 namespace에 대해 유일하게 접근이 가능한 service accou..
-
Kubernetes Host Network ConfigurationKubernetes 2019. 11. 14. 15:49
Host OS : ubuntu 16.04 $ vi /etc/NetworkManager/NetworkManager.conf dnsmasq는 /etc/hosts를 그대로 서비스할 수 있다. 즉, /etc/hosts를 중앙에서 관리하는 효과를 누릴 수 있다. 또한 /etc/hosts 에서 이름을 찾지 못했다면, 자동으로 (미리 설정한) public dns에서 이름을 찾아서 되돌려 준다. $ sudo systemctl restart NetworkManager $ vi /run/resolvconf/resolv.conf $ ln -s /run/resolvconf/resolv.conf /etc/resolv.conf /run/resolvconf/resolv.conf는 NetworkManager에 의해 자동으로 생성된다..
-
Kubernetes TCP Load BalancerKubernetes 2019. 11. 8. 18:08
Bare-metal 환경에서 Kubernetes TCP load balancer 구축 Bare-metal 환경에서는 kubernetes에서 제공하는 port-forwarding을 사용할 수 없고 클라우드 환경에서 제공 가능한 Load balancer의 사용이 불가능하다. 이에 대한 해결방법으로 Bare-metal 환경에서 port-forwarding을 하기 위해서 주로 ingree-nginx를 사용한다. 이 글은 Bare-metal 환경에서 Kubernetes TCP load balancer를 구축하는 방법을 다룬다. Kubernetes 위에 HDFS를 올리기 위한 hdfs-k8s를 설치하던 중 발생한 문제를 해결하기 위한 글이다. hdfs-k8s에서 hdfs-datanode와 hdfs-namenode는..
-
hdfs-k8s helm deployKubernetes 2019. 11. 4. 17:57
zookeeper 변경 datanode, namenode { statefulset, deployment, daemonset : apiversion change } spec.selector.matchLabels.app = spec.template.metadata.labels.app 작성 Master node Taint Taints / Tolerations ? Kubernetes Node에는 Taint 설정을 통해 해당 노드에 Pod가 할당 또는 실행되는 것을 막을 수 있다. 하지만 Pod의 정의에 Toleration을 설정하면 Taint 설정되어 있는 노드에도 Pod를 할당할 수 있다. Master 노드는 기본적으로 Taint 설정이 되어 있다. yaml file에서 spec.tolerations 항목에 ..
-
Helm ChartsKubernetes 2019. 11. 1. 19:24
Helm은 charts라고 불리는 packaging format을 사용한다. charts는 kubernetes resource들과 관련하여 묘사하는 파일의 집합체이다. Charts는 특정 디렉토리 트리에 배치된 파일로 생성된 다음 배포 할 버전이 지정된 아카이브로 패키지화될 수 있다. Chart File Structure 차트는 디렉토리 내부의 파일 모음으로 구성되며, 디렉토리 이름은 차트의 이름입니다 (버전 정보 없음). 따라서 WordPress를 설명하는 차트는 wordpress/ 디렉토리에 저장됩니다. CHART DEPENDENCIES helm 안에서 하나의 chart는 또 다른 여러개의 chart들과 종속 관계를 갖고있다. 이러한 종속성은 requirements.yaml 파일을 통해 동적으로 연결..
-
Kubernetes Persistent VolumeKubernetes 2019. 10. 8. 17:43
Kubernetes는 다양한 스토리지 디스크에 대한 마운트 인터페이스를 지원하기 때문에 현재 환경에 적합한 스토리지를 선택해서 사용해야 한다. 1. Local Volume 1.1 emptyDir emptyDir은 Pod과 함께 생성되고, 삭제되는 임시 Volume이라고 볼 수 있다. 만약 Pod 내에 여러개의 컨테이너가 정의되어 생성될 경우 그 컨테이너들은 하나의 emptyDir을 공유한다. 또한 Pod가 삭제될 경우 emptyDir 또한 삭제되기 때문에 Pod 내부 컨테이너간에 공유해야 하는 휘발성 데이터를 저장하기 위해 사용될 수 있다. emptyDir을 사용할 경우 각 컨테이너에 다른 mountPath로 마운트할 수 있으며, emptyDir.medium을 memory로 설정하게 되면 emptyDir..