본문 바로가기

kubernetes

(7)
K6로 부하테스트 하기(도커, 쿠버네티스 환경) K6란? Grafana에서 만든 오픈 소스 부하테스팅 툴로, 성능 테스트를 쉽게 수행할 수 있다. 부하테스트를 통해 성능 테스트를 수행함으로써 시스템의 신뢰성을 높일 수 있다. K6+도커로 부하테스트 먼저 테스트용 스크립트를 만든다. import http from 'k6/http'; import { check } from 'k6'; export const options = { stages: [ { target: 200, duration: '30s' }, { target: 0, duration: '30s' }, ], }; export default function () { const result = http.get('https://test-api.k6.io/public/crocodiles/'); check..
Kubernetes 배포 시 가능한 hook 들 + 특정 스크립트 hook으로 실행하기 AWS ECS(관리형 컨테이너)나 CodeDeploy에는 위와 같은 LifeCycle이 있어, 해당 단계에 hook을 걸 수 있다. hook이란? 배포 Life Cycle의 특정한 부분에 개입할 수 있게 해준다. version: 0.0 os: linux files: - source: /index.html destination: /var/www/html hooks: BeforeInstall: - location: scripts/install_dependencies.sh timeout: 300 runas: root AfterInstall: - location: scripts/change_permissions.sh timeout: 300 runas: root ApplicationStart: - location..
Mac ssh to docker-desktop node https://github.com/luksa/kubectl-plugins GitHub - luksa/kubectl-plugins: My own plugins for kubectl My own plugins for kubectl. Contribute to luksa/kubectl-plugins development by creating an account on GitHub. github.com 위 플러그인을 사용한다. /usr/local/bin 위치에 kubectl-ssh 파일을 아래의 내용으로 생성한다. https://github.com/luksa/kubectl-plugins/blob/master/kubectl-ssh chmod +x kubectl-ssh kubectl-ssh node docker-des..
Kubernetes - Fluent Bit 로 사용자 로그 S3에 output 설정하기 부제 : 온갖 예외 케이스를 가정하여 사용자 로그의 S3 경로 잡기 1. Fluent Bit에서 S3으로 output 보내기 Fluent Bit 에서 S3 output을 쓰는 건 쉽다. [OUTPUT] Name s3 Match * bucket my-bucket region us-west-2 s3_key_format /$TAG[2]/$TAG[0]/%Y/%m/%d/$UUID.gz s3_key_format_tag_delimiters .- 이렇게 s3 output 설정을 넣어주고 butket과 key format을 지정해주면 된다. 나의 경우는 EKS 안의 애플리케이션에서 발생한 사용자 로그를 시스템 로그(var/log/containers/$podname~.log 식으로 저장되는 파드의 로그)와 분리하여 S3 ..
Fluent Bit에서 특정 경로의 로그 파일 받아와 쿠버네티스 메타데이터 추가하기 한줄 미리보기 : 제목처럼 안 됩니다. 이거 되게 하려고 몇 시간을 허비했는지..... 저같이 '이거 설정 좀만 바꾸면 되는 거 아냐?' 하고 매달리실 분들을 위해 씁니다... 환경 : EKS (쿠버네티스 버전 1.8) fluent bit : latest fluent bit의 tail의 인풋 설정은 다음과 같은데, [INPUT] Name tail Tag kube.* Path /var/log/containers/*.log 여기서 Path를 /var/log/containers/custom-*.log 와 같이 조금이라도 바꾸면... 쿠버네티스 메타정보가 추가되지 않습니다. 시스템 로그(var/log/containers/~ 하위의 podname별로 생기는 {podname}_{namespace}_{containe..
Kubernetes 특정 경로로 로그 파일 수집하기(nginx access 로그 만들기) nginx같은 경우는 /var/log/nginx/ 경로 하위에 access.log, error.log가 만들어진다. 이렇게 쌓이는 로그를 쿠버네티스에 띄운 Logstash로 수집할 수 있다. nginx.yaml apiVersion: apps/v1 kind: Deployment metadata: name: my-nginx namespace: test spec: replicas: 3 selector: matchLabels: run: my-nginx template: metadata: labels: run: my-nginx spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchE..
Kubernetes에서 Logstash(sqs output)를 사용해 elasticsearch, kibana로 로그 확인 1. Hombrew를 사용하여 logstash 설치 brew tap elastic/tap brew cask install homebrew/cask-versions/adoptopenjdk8 brew install elastic/tap/logstash-full 로그스태시가 최신버전으로 설치된다. 2. 폴더 생성 후 conf 파일 생성 input { file { path => "/usr/share/logstash/data/*.log" codec => "json" } } output { stdout { } sqs { access_key_id => "***" secret_access_key => "****" codec => "json" queue => "test_queue" region => "ap-northea..