본문 바로가기
반응형

K8S53

[kubernetes] CSI(pv, pvc) 에대해 , pvc가 필요한 이유가 무엇일까? 목차 docker를 사용할때 persist volume을 사용해본 경험이 있을것이다. 그런데 kubernets를 사용하게되면서 pvc라는게 생겼다 그러다보니 pv에 pod를 연결하면 되는데 왜 굳이 pvc 를 사용하는것일까? 라는 의문이 생겼다. pvc 를 사용하는 이유 MSA 구조를 적용하게 되면서 pod마다 격리되는 환경을 구성을 하게 된다. 그런데 기존의 docker에서는 하나의 서버내에서 스토리지를 공유하여 사용하는게 보통이다. 물론 외부 스토리지를 바인딩하여 사용하면 되겠지만 후술할 동적 프로비저닝이 없어서 가용성이 docker에서는 kubernetes에 비해 없다시피하다. 1. 추상화 PVC를 사용하면 개발자는 기본 인프라 세부 정보를 알 필요 없이 스토리지 리소스를 요청할 수 있으므로 애플리.. 2024. 3. 15.
[Kubernetes] Service와 비교한 ingress Ingress에는Service에 비해 다음과 같은 장점을 가지고 있다. 단일 진입점 (Single Entry Point): Ingress를 사용하면 클러스터 외부에서 여러 서비스에 대한 액세스를 하나의 진입점을 통해 관리할 수 있습니다. 이는 외부에서 내부 서비스로의 접근을 허용하거나 필요에 따라 트래픽을 다른 서비스로 라우팅할 수 있도록 해줍니다. HTTP(S) 트래픽 관리: Ingress는 HTTP 및 HTTPS 트래픽을 관리하고 라우팅할 수 있습니다. 특정 경로에 따라 트래픽을 다른 서비스로 라우팅하거나, 호스트 헤더를 기반으로 다른 서비스로 리디렉션할 수 있습니다. SSL 종료 및 보안 기능: Ingress를 사용하면 SSL 종료 및 보안 관련 기능을 구성할 수 있습니다. 클러스터 외부에서 HTT.. 2024. 2. 29.
[Docker] 다중 아키텍처 빌드를 위한 buildx buildx는 하나의 이미지로 다양한 아키텍처(arm,amd 같은) 를 사용할수 있게 빌드하는 방식 docker build: 기본적인 Docker 이미지 빌드 명령어입니다. 단일 아키텍처 이미지를 빌드하는 데 주로 사용됩니다. 기본적으로 로컬 Docker 엔진에 의해 실행됩니다. 다중 아키텍처를 지원하지 않습니다. docker buildx: Docker BuildKit을 사용하여 Docker 이미지를 빌드하는 확장된 도구입니다. 다중 아키텍처 이미지를 빌드하고 관리할 수 있습니다. 로컬 Docker 엔진 뿐만 아니라 원격 Docker 엔진 및 다른 빌드 환경과 통합할 수 있습니다. 다양한 빌드 환경과 통합하여 복잡한 빌드 프로세스를 관리할 수 있습니다. 참고 https://github.com/docker.. 2024. 2. 22.
Docker 로그 관리 목차 서론 docker를 설치한뒤 로그가 많이 생기는 컨테이너가 있다. docker의 /var/lib/docker/containers 경로를 보면 생성한 컨테이너에 로그를 보면 보통은 별로 안쌓이는데 큰 여러가지 많은 것이 설치된 컨테이너의 경우는 로그의 용량이 순식간에 늘어난다. logrotate로 관리하면 될것 같은데 docker인데 docker 만의 로그 관리 기법이 있어서 포스팅한다. 관리 방법 /etc/docker/폴더에 들어가서 daemon.json파일을 생성하여 다음과 같은 양식으로 만들어 준다. { "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "5" } } 형식과 파일 사이즈와 파일 갯수로 설정하면 됩니다... 2024. 1. 22.
kubernetes 트러블슈팅 쿠버네티스 홈페이지에 있는 트러블슈팅 방법 가이드 이다. 쿠버네티스 애플리케이션 트러블슈팅 https://kubernetes.io/ko/docs/tasks/debug/debug-application/ 애플리케이션 트러블슈팅하기 일반적인 컨테이너화된 애플리케이션 이슈를 디버깅한다. kubernetes.io 쿠버네티스 클러스터 트러블슈팅 https://kubernetes.io/ko/docs/tasks/debug/debug-cluster/ 클러스터 트러블슈팅 일반적인 클러스터 이슈를 디버깅한다. kubernetes.io 2023. 10. 23.
Raft 알고리즘 k8s 의 etcd 나 kafka에서 사용되는 Raft 알고리즘에 대해 알아보자 Raft 알고리즘은 분산 시스템에서 노드 간 합의를 돕는 합의 알고리즘 중 하나입니다. 이 알고리즘은 리더 선출, 로그 복제 및 안정성을 포함한 중요한 컨셉을 가지고 있습니다. 리더 선출 (Leader Election): 모든 노드는 세 가지 상태 중 하나를 가집니다: 리더, 후보, 팔로워. 처음에는 모든 노드가 팔로워 상태입니다. 리더 선출을 위해 후보 노드는 랜덤한 타임아웃 후, 다른 노드로부터 투표를 요청하여 리더로 선출되기 위해 경쟁합니다. 로그 복제 (Log Replication): 리더는 클라이언트의 요청을 받아들이고, 해당 로그 항목을 자신의 로그에 기록한 뒤 팔로워 노드들에게 전파합니다. 팔로워 노드는 리더의 .. 2023. 10. 19.
Falco pod 두개 인 이유 - falcoctl 추가 버전이 올라가면서 falco 설치하면 pod가 두개가 올라간다. facloctl이 생겨서 그렇다고하는데 문서에 보면 engine과 sidecar로 두개가 띄워진다. sidecar를 falcoctl이라고 하는건지 확실하지는 않다. 주요기능은 다음과 같다. 이전 구성을 사용합니다. Falco 0.34.0.버전을 실행합니다 falcoctl을 사용하여 falco-rules를 설치하고 자동으로 업데이트합니다 . 6시간마다 새 업데이트를 확인합니다(기본값). v2.0.0차트 버전부터 falcosecurity/falco-no-driver기본 이미지로 사용한다. Reference 3.0.0 변경점 https://github.com/falcosecurity/charts/blob/master/falco/BREAKING-C.. 2023. 8. 23.
Falco 란? 목차 Falco 란 무엇입니까? Falco는 Linux 운영 체제용 클라우드 네이티브 런타임 보안 도구입니다. 비정상적인 행위와 잠재적인 보안 위협을 실시간으로 탐지하고 경고하도록 설계되었습니다. 기본적으로 Falco는 사용자 정의 규칙을 기반으로 syscall과 같은 이벤트를 관찰하는 커널 모니터링 및 탐지 에이전트입니다. Falco는 컨테이너 런타임과 Kubernetes의 메타데이터를 통합하여 이러한 이벤트를 향상할 수 있습니다. 수집된 이벤트는 SIEM 또는 데이터 레이크 시스템에서 호스트 외부에서 분석될 수 있습니다. 원래 Sysdig 에서 만든 Falco는 이제 다양한 조직 에서 프로덕션에 사용되는 CNCF( Cloud Native Computing Foundation ) 프로젝트입니다 . 팔코.. 2023. 8. 23.
kubernetes kude 설치 mac, linux 목차 요구사항 kubectl version 1.13.0 or newer 윈도우는 지원을 안하는듯, mac, linux만 가능 MAC down and install brew tap kudobuilder/tap brew install kudo-cli Make executable and add to your path VERSION=x.y.z # look up the current stable release at https://github.com/kudobuilder/kudo/releases/latest OS=$(uname | tr '[:upper:]' '[:lower:]') ARCH=$(uname -m) wget -O kubectl-kudo https://github.com/kudobuilder/kudo/re.. 2023. 8. 20.
kubernetes CRD v1에서 작성 방법 (no matches for kind "CustomResourceDefinition" in version "apiextensions.k8s.io/v1beta1", "v1" cannot be handled as a CustomResourceDefinition: strict decoding error: unknown field "spec.version") 목차 증상 아래명령어를 입력 kubectl apply -f .\test-crd.yaml error: resource mapping not found for name: "test.extension.example.com" namespace: "" from ".\\test-crd.yaml": no matches for kind "CustomResourceDefinition" in version "apiextensions.k8s.io/v1beta1" 원인 v1beta1이 1.16부터 지원되지 않는다. apiVersion: apiextensions.k8s.io/v1 로 변경하면 이런 에러가 나오는데 Error from server (BadRequest): error when creating ".\\test-crd.. 2023. 8. 19.
AWS EKS 에서 docker desktop kubenetes로 전환, 변경하는 방법 목차 minikube설치 안하고도 간단하게 할수 있다 특정한버전을 사용해야하는것이 아니라면 macOS나 windows환경이라면 docker desktop k8s를 사용하는것이 훨씬 좋은 선택이 될수 있다. 그래서 aws eks를 사용하다가 docker desktop에서 지원하는 kubernetes를 사용하려고 한다. docker desktop에서 kubenetes를 사용하는 방법은 간단하다. Docker Desktop에 Kubernetes 설치 우선 dd를 설치 후 오른쪽위 톱니바퀴 아이콘인 설정에 들어간뒤 kubernetes 탭 클릭후 enable kubernetes를 클릭한뒤 리스타트 하면된다. docker desktop kubernetes 설치후 AWS EKS 설정 불러오는 에러 하지만 aws ek.. 2023. 8. 15.
docker에서 as builder 를 사용하는 이유 목차 왜 쓸까? docker에서 as builder를 사용하는 경우가 있더라구요 로컬에서 빌드하고 아티팩트를 컨테이너에 복사하면 되는데 굳이 그럴 필요가 있나 싶었습니다. 하지만 사람마다 빌드하는 환경이 달라서 해당 환경을 모두 동일하게 하기 위해 builder 이미지를 따로 사용하는 것 같습니다. 해당 이미지를 가지고 개발을 하기 때문이죠. 설명 Docker는 소프트웨어 빌드를 위한 표준화되고 격리된 환경을 제공하기 때문에 종종 빌더로 사용됩니다. 개발자는 Docker를 사용하여 애플리케이션을 빌드하는 데 필요한 모든 종속성 및 도구를 포함하는 컨테이너 이미지를 생성할 수 있습니다. 그런 다음 이 컨테이너를 다른 팀 구성원과 공유할 수 있으므로 모든 사람이 동일한 환경에서 작업하는지 쉽게 확인할 수 있.. 2023. 2. 16.
반응형