728x90

Kubernetes 21

Tekton CI/CD 활용한 지속적 통합 및 배포

Tekton CI/CD 활용한 지속적 통합 및 배포 Tekton CI/CD는 클라우드 네이티브 환경에서 애플리케이션 개발 및 배포를 자동화하기 위한 오픈소스 프레임워크입니다. Kubernetes 위에서 실행되며, 컨테이너 기반 워크로드를 처리하기 위한 도구로 설계되었습니다. Tekton은 파이프라인을 기반으로 작동하며, 각 단계를 컨테이너로 패키징하여 실행합니다. 이를 통해 애플리케이션의 빌드, 테스트, 이미지 빌드, 배포 등의 작업을 자동화할 수 있습니다. Tekton CI/CD 장점 1. 유연성: Tekton은 파이프라인의 작업 단계를 세분화할 수 있어 매우 유연합니다. 각 단계는 컨테이너로 실행되므로, 언어나 도구에 구애받지 않고 작업을 정의할 수 있습니다. 2. 확장성: Tekton은 Kubern..

Kubernetes 2023.07.17

Fluent Bit - Kubernetes Filter를 사용하여 POD 로그 제외하기

Fluent Bit - Kubernetes Filter를 사용하여 POD 로그 제외하기 kubernetes에서 fluent-bit를 사용하여 로그를 CloudWatch 또는 다른데로 전송할때 특정 POD로그를 제외하는 방법입니다. fluent-bit의 kubernetes filter가 제공해주는 기능이고, fluent-bit가 지정된 로그파일을 읽지만 output 설정을 통한 전송은 하지 않습니다. Fluent Bit 설정 아래의 예제는 output을 AWS cloudwatch로 설정하였습니다. kubernetes filter에서 K8S-Logging.Exclude 설정은 On으로 설정해야합니다. [SERVICE] Flush 5 Log_Level info Daemon off HTTP_Server on H..

Kubernetes 2023.07.14

Kubernetes shareProcessNamespace

Kubernetes shareProcessNamespace Kubernetes shareProcessNamespace는 동일한 Pod 내의 여러 컨테이너가 하나의 프로세스 네임스페이스를 공유하게 해주는 기능입니다. 이를 통해 컨테이너 간에 프로세스를 공유하고 상호작용할 수 있게 되며, 디버깅 및 모니터링 작업을 더욱 용이하게 합니다. 프로세스 네임스페이스란 리눅스 시스템에서 프로세스를 격리하고 서로의 프로세스 목록을 볼 수 없게 하는 메커니즘입니다. Kubernetes shareProcessNamespace를 사용하려면, Pod 스펙(spec)에서 shareProcessNamespace 필드를 true로 설정해야 합니다. 이 기능을 사용할 때는 보안과 호환성 문제에 주의해야 하며, 프로세스 간 격리가 이..

Kubernetes 2023.03.30

Kubernetes podAntiAffinity

Kubernetes podAntiAffinity Kubernetes podAntiAffinity는 Pod을 배포할 때, 특정 조건에 따라 서로 다른 노드에 Pod 스케줄 되도록 지정하는 방법입니다. 이를 통해 노드에 동일한 애플리케이션 또는 작업이 과도하게 집중되는 것을 피할 수 있으며, 노드 장애 시 애플리케이션의 가용성을 높일 수 있습니다. Kubernetes podAntiAffinity는 두 가지 유형이 있습니다. preferredDuringSchedulingIgnoredDuringExecution와 requiredDuringSchedulingIgnoredDuringExecution 두 유형의 차이점은 다음과 같습니다. preferredDuringSchedulingIgnoredDuringExecut..

Kubernetes 2023.03.23

Kubernetes Headless Service

Kubernetes Headless Service Kubernetes Headless Service는 클러스터 내의 동일한 작업 집합의 파드에 대한 서비스 디스커버리를 제공하는 데 사용되는 특별한 종류의 Kubernetes 서비스입니다. 기본 Kubernetes 서비스와는 다르게, kubernetes headless service는 로드 밸런싱을 위한 클러스터 IP를 제공하지 않습니다. 대신, 헤드리스 서비스는 각 파드에 대해 고유한 네트워크 주소를 제공하고, 이를 통해 클라이언트가 직접 파드와 통신할 수 있습니다. 1. statefulset: 헤드리스 서비스는 stateful 애플리케이션에 적합하며, 각 파드가 고유한 데이터를 저장하거나 처리해야 하는 경우에 유용합니다. 예를 들어, 분산 데이터베이스 ..

Kubernetes 2023.03.21

AWS Fluent Bit error 수정

AWS Fluent Bit error 수정 AWS EKS에서 AWS CloudWatch로 로그를 전송하기 위해 AWS-Fluent-Bit Daemonset을 사용하고 있습니다. 어느 날 확인해 보니 AWS-Fluent-Bit POD에서 아래의 로그와 같이 caught signal (SIGSEGV) 에러가 나오고 POD 재시작이 되는 현상이 생각보다 자주 발생하고 있었습니다. 2023-01-10T07:01:14.243917003Z [2023/01/10 07:01:14] [ info] [filter:kubernetes:kubernetes.0] token updated 2023-01-10T07:01:14.341788933Z [2023/01/10 07:01:14] [ info] [input:tail:tail.0..

Kubernetes 2023.03.14

AWS EKS 클러스터 버전 업그레이드

AWS EKS 클러스터 버전 업그레이드 AWS EKS 클러스터 버전 업그레이드 방법을 설명합니다. AWS는 일반적으로 Kubernetes 버전을 출시한 후 14개월 동안 해당 버전에 대한 지원을 보장합니다. EOS가 지나면 자동으로 업그레이드를 진행하고, 자동으로 진행 시 kubernetes로 운영 중인 애플리케이션에 장애가 발생할 수 있으므로 EOS가 되기 전에 업그레이드를 진행해야 합니다. AWS EKS 클러스터 버전 업그레이드 방법에는 크게 두 가지 방법이 있습니다. 1. 현재 사용 중인 클러스터의 버전을 업그레이드하는 방법 현재 사용 중인 클러스터를 버전업그레이드하는 방법이 가장 깔끔하지만 업그레이드 도중 애플리케이션에 장애가 발생할 수 있고, 업그레이드 중 문제가 생기면 운영 중인 애플리케이션에..

Kubernetes 2023.03.09

Kubernetes RuntimeClass 사용하여 gVisor로 컨테이너 실행

Kubernetes RuntimeClass 사용하여 gVisor로 컨테이너 실행 gVisor 란 gVisor는 Google에서 개발한 컨테이너 런타임으로, 샌드박스(Sandbox)라는 기술을 기반으로 합니다. 컨테이너 안에서 실행되는 프로세스는 호스트 시스템과 격리되며, 시스템 호출은 gVisor 커널을 통해 중개됩니다. 이를 통해 컨테이너가 안전하게 실행되고, 컨테이너 간의 간섭을 방지할 수 있습니다. gVisor는 커널 단위의 격리 기술인 네임스페이스와 cgroup을 사용하여 컨테이너를 격리합니다. 또한, gVisor는 기본적으로 제공되는 Linux 커널을 사용하지 않고, 고유한 가상 커널을 사용하여 컨테이너를 격리합니다. 이 가상 커널은 Linux 시스템 호출을 에뮬레이션 하며, 이를 통해 컨테이너..

Kubernetes 2023.03.03

Prometheus 메모리 튜닝

Prometheus 메모리 튜닝 Prometheus를 운영하다 보면 많은 메트릭 저장으로 인해 메트릭 보관주기를 짧게 설정해도 메모리를 많이 사용합니다. 과도한 메모리 사용 시 아래의 방법으로 메모리 사용율을 낮출 수 있습니다. TSDB analyze Prometheus와 함께 제공되는 promtool 명령어를 사용합니다. promtool tsdb analyze 사용하여 분석하고, 분석한 결과에서 Highest cardinality labels 목록에서 사용하지 않은 label을 골라 삭제하면 메모리 사용율을 낮출 수 있습니다. # promtool tsdb analyze [data path] $ promtool tsdb analyze /data Duration: 2h0m0s Series: 5547383 ..

Kubernetes 2023.02.22

containerd 로그 수집을 위한 AWS Fluent Bit 설정

containerd 로그 수집을 위한 AWS Fluent Bit 설정 Kubernetes 1.24부터 기본 container rumtime이 변경되었습니다. EKS도 1.24부터 container rumtime이 docker에서 containerd로 변경되었습니다. Fluent Bit를 통해서 로그를 수집하고 있었다면 containerd 설정으로 인해 로그 포맷이 변경되어 Fluent Bit 설정을 수정해야합니다. 로그 포맷 container rumtime - docker에서는 기본적으로 json 형식으로 로그를 출력합니다. { "log":"ts=2022-11-30T09:49:46.292Z caller=node_exporter.go:199 level=info msg=\"Listening on\" addr..

Kubernetes 2022.12.02
728x90