개요 클라우드 환경에서의 가용성 테스트는 레가시 환경과는 다르다. 직접 테스트를 수행하면서 알게된 Lessons learned을 통해 Kubernetes Node Failover에 대한 가용성 검증 과정에 대해 알아보자. Kubernetes가 관리하는 클러스터 내의 노드 장애 발생 시 어떻게 빠르게 인지하고 대응할 것인지 과정에 대해 검증해 보고, 최적 구성에 대해 알아보자. Kubernetes 노드 가용성 관련 구성 1) kubelet node-status-update-frequency : default 10s (api-server에 노드의 상태를 게시하는 주기) / recommand 4s node-status-report-frequency : default 5m (node-status-update-f..
개요 Pod는 Kubernetes의 최소 배포 단위이다. 어플리케이션은 Container로 구성되지만, Kubernetes에 배포하여 서비스하기 위해서는 Pod의 일부로 동작해야 한다. Kubernetes Object는 다음과 같은 종속성을 갖고 동작한다. Pod는 컨테이너 Spec을 포함하여 선언되며, 하나 이상의 컨테이너를 선언할 수 있다. 이때 각 컨테이너는 독립된 어플리케이션으로 구성되며, 독립된 Process로 기동된다. 이로 인해 가능하면 Pod 당 1개의 Container 구성을 권고하지만, 때로 Multi Container 구성이 필요한 경우가 있다. 지금부터 Multi Container를 설계하는 프로젝트에서 고려해야 할 사항에 대해 알아보자. Multi Container 설계 고려 사항..
개요 Kubernetes는 수 많은 객체들의 집합으로 구성되어 있으며, 이는 확장성 가능하게 구성되어 클러스터 내 장애 상황을 식별하는 것은 굉장히 번거로운 일이라고 볼 수 있다. 이로 인해 Kubernetes 클러스터 내의 다양한 각도에서 모니터링할 수 있는 환경을 구성하는 것은 장애 발생으로 인한 가동 중지 시간을 줄이거나 피할 수 있다. 대표적인 장애 상황은 다음을 예로 들 수 있다. 노드 문제 : 실패 상태의 Docker 데몬/Kubelet, CNI 실패로 인한 할당되지 않은 IP 주소 등 포드 문제 : Health Check 실패, Running 상태가 아닌 포드 등 네임스페이스 문제 : Pod를 배치할 수 없는 Namespace DNS 확인 문제 : CoreDNS lookup 실패 네트워크 문..
개요 Kubernetes가 대세로 자리 잡은 이후 다양한 3rd Party 솔루션과의 연동이슈는 끊임없이 발생하고 있다. Container Orchestrator(CO)와의 단일화된 인터페이스를 제공하기 위해 CRI(Container Runtime Interface), CNI(Container Network Interface), CSI(Container Storage Interface)가 등장하고 발전해 오고 있다. CSI의 등장이전에는 특정 볼륨에 대한 연결 방식을 Kubernetes가 제공하는 방식으로 구현되었다. 하지만 새로운 볼륨 플러그인이 지속적으로 추가되고, 특히 특정 볼륨을 제공하는 솔루션의 버전 변화에 일일이 대응하기에는 어려움이 있었다. 또한 볼륨 스토리지와의 연결을 위해 SDK 코드가 ..
개요 기본적으로 Kubernetes는 클러스터 내에서 실행되는 Pod 간 트래픽을 제한하지 않는다. 이와 같은 특징은 때때로 보안과 성능 또는 장애와 연관이 되는 문제들이 발생할 수 있다. NetworkPolicy는 Pod간 통신을 제어하는 오브젝트이다. 통신이 허용되는 네임스페이스를 지정하거나 더 구체적으로 각 정책을 적용할 수 있다. 즉 NetworkPolicy는 Pod 간 ACL을 수행하는 Kubernetes 오브젝트이다. NetworkPolicy는 실시간으로 적용되며, Pod 간에 연결이 열려 있는 경우 해당 연결을 방지하는 NetworkPolicy를 적용하면 연결이 즉시 종료된다. 제약조건 NetworkPolicy는 Inbound 트래픽과 Outbount 트래픽을 구분하여 정의할 수 있으며, 사..
개요 Kubernetes는 강력한 확장성과 안정성을 제공하는 Container Management Platform으로 이미 대표적인 클라우드 컴포넌트로 자리를 확고히 하고 있다. 많은 기업에서 Kubernetes를 활용하고 있지만, 정작 Container에 대한 보안이나, Kubernetes에 대한 보안 정책은 자리잡지 못하고 있으며, 이로 인해 보안 침해 사고가 터져 나오고 있는 실정이다. 보안문제는 개인이나, 중-소 규모의 기업에서 온전히 대응하는 것은 조직을 구축하는 것부터 체계를 수립하는 것까지 쉽지 않은 일이라는 점때문에 여전히 대응 방안을 수립하기 어려운 실정이다. 이에 여러 오픈소스 소프트웨어들의 조합으로 최소한의 문제들을 진단하고 사전에 검증할 수 있는 방법을 살펴보도록 하자. 지금부터 프..
개요 Polaris는 Kubernetes Pod 및 Controller가 모범 사례를 사용하여 구성되었는지 확인하기 위해 다양한 검사를 실행하여 향후 발생 가능한 문제를 사전에 방지하는데 도움을 주는 도구이다. Polaris는 세 가지 모드로 실행할 수 있다. 대시보드로 클러스터 내에서 실행 중인 항목을 감사할 수 있다. 승인 컨트롤러로서 조직의 정책을 준수하지 않는 워크로드를 자동으로 거부할 수 있다. CLI로 CI/CD 프로세스의 일부로 로컬 YAML 파일을 테스트할 수 있다. 설치 대시보드는 아래와 같이 yaml 파일을 통해 다운로드 받아 설치 할 수 있다. yaml 파일위치는 각 최신 버전을 기준으로 아래 경로에서 다운로드 받을 수 있다. https://github.com/FairwindsOps/..
Kubernetes Tools 활용 Kubernetes는 수많은 api의 조합으로 이뤄져 있다. 이를 조합하여 Kubernetes를 효율적으로 운영할 수 있는 다양한 도구를 만들어 낼 수 있다. 이미 수많은 플러그인이 개발되어 활용되고 있으며, 개발환경은 물론 운영환경에서도 효과적으로 사용할 수 있다. 지금부터는 Kubernetes를 사용하는 환경에 적용하기 용이한 플러그인들을 소개하고 직접 구축해 보도록 하자. kubectl krew 먼저 살펴볼 내용은 kubernetes cli 도구 kubectl의 플러그인을 관리하는 패키지 매니저 krew에 대해 알아보자. krew를 사용하면, 손쉽게 kubernetes 관련 플러그인들을 설치할 수 있다. https://github.com/kubernetes-sig..
개요 Pod는 Kubernetes에 어플리케이션을 배치하기 위한 최소 오브젝트 단위이다. 하나 이상의 컨테이너를 가질 수 있고, 짧은 라이프사이클을 통해 생성되고 삭제된다. 마이크로서비스와 같은 분산 환경에서 수 많은 Pod 들의 상태를 관리하는 것은 굉장히 어려운 일이다. 컨테이너로 세분화 된 어플리케이션은 잦은 상태 변화(Pod의 동작에 이상이 발생하거나, 상태가 변화할 경우)가 발생되며, 이에 따른 변화 요소를 수동으로 찾아가기 어렵기 때문에, 시스템이 스스로 감지하고 해결해야 하며, 이 모든 작업은 자동으로 수행될 수 있도록 구축해야 한다. 또한, 분산 시스템의 경우 실패 처리가 핵심이다. Container Management Platform은 시스템 상태를 감시하고 수행이 중지된 서비스를 다시 ..
개요 Kubernetes는 Cluster, User, Namespace를 조합한 Context라는 오브젝트를 제공한다. Context는 독립적인 단위로 흔히 우리가 생각하는 클러스터를 Context 단위로 볼 수도 있지만, 사실 그보다 더 세분화된 단위라고 볼 수 있다. 이번 포스팅에서는 멀티 Cluster 환경에 각 클러스터에 보다 빠르게 접근하여 변경을 관리할 수 있는 Context 적용 방법에 대해 알아보도록 하자. 멀티 클러스터 접근 구성 Kubernetes 클러스터를 처음 설정할 때 $HOME/.kube 디렉토리에 config 파일이 생성된다. config 파일은 우리가 흔히 이야기 하는 kubeconfig 파일이며, Kubernetes 클러스터와의 연결에 대한 정보를 저장하는데 사용된다. ku..
- Total
- Today
- Yesterday
- JEUS7
- node.js
- SA
- jeus
- MSA
- API Gateway
- openstack token issue
- OpenStack
- 마이크로서비스 아키텍처
- SWA
- kubernetes
- aa
- 마이크로서비스
- JEUS6
- Architecture
- webtob
- TA
- Da
- 아키텍처
- git
- wildfly
- k8s
- aws
- JBoss
- openstack tenant
- 오픈스택
- nodejs
- apache
- Docker
- 쿠버네티스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |