일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 코틀린 코루틴의 정석
- kotlin querydsl
- Java
- Linux
- kotlin
- 정보처리기사 실기 기출문제
- minikube
- AWS EKS
- 오블완
- MySQL
- Pinpoint
- AI
- 티스토리챌린지
- CKA 기출문제
- 정보처리기사실기 기출문제
- aws
- tucker의 go 언어 프로그래밍
- golang
- CloudWatch
- 기록으로 실력을 쌓자
- Elasticsearch
- PETERICA
- go
- CKA
- APM
- kotlin coroutine
- Spring
- SRE
- Kubernetes
- 공부
- Today
- Total
목록전체 글 (886)
피터의 개발이야기

[kubernetes] 개발환경 목차 ㅁ 개요 쿠버네티스를 사용하면서 가장 많이 접하는 것은 kubectl이라는 커맨드라인이다. 쿠버네티스 자원들의 CRUD, 생성된 자원들의 모니터링 및 트러블 슈팅, 트래픽 운영상황에서의 클러스터 관리까지 다양한 명령어가 존재한다. Devops 시스템을 운영하면서 꼭 필요했던 명령어, 혹은 미쳐 몰랐지만 꼭 필요한 명령어를 빠르게 찾아가는 방법을 이 글에서 정리하고자 한다. ㅁ kubectl help! ㅇ 명령어 사용법에 대해 가장 빠르게 확인 할 수 있는 방법은 --help를 통한 방법이다. $ kubectl --help ✔ 5518 20:57:16 kubectl controls the Kubernetes cluster manager. Find more i..

ㅁ 개요 ㅇ 시스템 점검 시 SQLException이 발견되었다. 원인은 텍스트 중에 포함되어 있던 이모지를 디비에 Insert할 때에 Incorrect string value 에러가 발생하였고, 이를 조치하는 과정을 정리하였다. ㅁ 에러 확인 uncategorized SQLException; SQL state [HY000]; error code [1366]; (conn=322423) Incorrect string value: '\xF0\x9F\x8E\x81\xEB\xA8...' for column 'FORMATTEDSTRING' at row 1; nested exception is java.sql.SQLException: (conn=322423) Incorrect string value: '\xF0\x..

[kubernetes] 쿠버네티스 목차 ㅁ 개요 이 글은 쿠버네티스 입문, 동양북스 책을 보고 공부한 내용을 정리하였다. 웹을 통해 쿠버네티스 설치 과정을 공부할 수 있는 사이트를 소개하고 그 과정을 정리하였다. ㅁ 웹 브라우저에서 사용할 수 있는 사이트 1. 카타코다 쿠버네티스 플레이그라운드 O'Reilly는 2019년 말에 Katacoda를 인수하였다. 그 결과 katacoda.com을 더 이상 공용으로 사용할 수 없으며 2022년 6월 15일에 사이트를 폐쇄되었다. 책에서는 소개해 주고 있지만 현재는 사용할 수 없게 되었다. 페이지 이동 2. Play with Kubernetes ㅇ Play with Kubernetes는 Docker에서 제공 하고 Tutorius에서 만든 랩 사이트이다. Play ..

[kubernetes] 쿠버네티스 목차 ㅁ 개요 ㅇ 이 글은 쿠버네티스 공식 문서 중 "쿠버네티스란 무엇인가?" 를 바탕으로 쿠버네티스 개요를 정리하였다. ㅁ Kubernetes란 쿠버네티스는 컨테이너화된 워크로드와 서비스를 관리하기 위한 이식성이 좋고, 확장이 용이한 오픈소스 플랫폼이다. 쿠버네티스는 선언적 구성과 자동화를 모두 용이하게 해준다. 쿠버네티스는 크고, 빠르게 성장하는 생태계를 가지고 있다. 쿠버네티스 서비스, 기술 지원 및 도구는 어디서나 쉽게 이용할 수 있다. 컨테이너 가상화 기술은 서비스간에 자원격리를 하는데 OS를 별도로 띄우지 않아도 되기에 자동화에 빠르고, 자원 효율이 매우 높습니다. ㅁ Kubernetes 어원과 역사 쿠버네티스란 명칭은 '키잡이'(helmsman)나 '파일럿'..

ㅇ DevOps는 일종의 문화이다. 개발과 운영을 통합하여 전인적인 개발자로 성장할 수 있는 길이라고 생각한다. 전체를 바라보고 미쳐 알지 못했던 DevOps로서 알아야 할 덕목들을 한분에 볼 수 있는 로그맵을 발견하려 글을 남겨본다. DevOps는 한사람으로 하여금 정말 많은 역할을 수행할 수 있는 기술력을 갖추게 한다.

ㅁ 개요 ㅇ Amazon Elastic Kubernetes Service(Amazon EKS)환경에서 Jenkins를 Pod로 생성하여 사용 중이다 ㅇ 검수계의 경우 비용절감을 위해 일과시간만 사용하다보니 포드가 생성되는 과정에서 에러가 발생할 때가 있다. ㅇ 젠킨스의 error 상황을 확인하고 조치하는 과정을 정리해 보았다. ㅁ 포드 상태 확인 kubectl get pod | grep jenkins ㅇ CrashLoopBackOff 상태로 현재 포드는 기동되어 있지 않은 상태이다. ㅇ CrashLoopBackOff에 걸린 포드가 반복적으로 시작되고 충돌합니다. ㅇ "Back-Off restarting failed container" 출력 메시지를 수신하는 경우 Kubernetes가 컨테이너를 시..

ㅁ 개요 ㅇ Kubernetes환경에서 시스템을 운영하면서 트래픽에 따라 수시로 scale In/Out된다. ㅇ 이런 과정에서 pod가 종료되는 시점에 502 에러가 발생하여 이를 해결하기 위해 고민하게 되었다. ㅇ [Kubernetes] Kubernetes환경에서 graceful shutdown이란 글을 작성하였고, 이 글에서는 graceful shutdown을 적용하는 방법에 대해서 정리하였다. ㅁ SpringBoot에서 graceful Shutdown이란 graceful Shutdown이란 할건 하고 종료하자이다. graceful shutdown은 SpringBoot 어플리케이션 서버 종료 시 webserver를 우선 종료시켜 새로운 요청을 받지 않고, 처리 중인 요청을 완료한 후에 종료하는 것이다..

ㅁ SpringBoot 2.3 이전 버젼에서 graceful shutdown 구현 import org.apache.catalina.connector.Connector; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.web.embedded.tomcat.TomcatConnectorCustomizer; import org.springframework.context.ApplicationListener; import org.springframework.context.event.ContextClosedEvent; import java.util.concurrent.Executor; import java.u..

ㅁ 개요 Kubernetes환경에서 graceful shutdown의 적용방법을 공부하면서 Kubernetes환경에서 오케스트레이션 작업 중 Pod가 종료되는 과정이 많다. 로드밸런싱 역할을 하는 Service와 속해 있는 Pod 들이 종료하는 과정을 정리하였습니다. ㅁ Kubernetes의 Pod 종료과정 1- Pod가 Terminating 상태로 전환되고 새 트래픽 수신을 중지합니다. 컨테이너는 여전히 Pod 내에서 실행 중입니다. 2- preStop hook은 특별한 명령이나 HTTP 요청이 실행되어 Pod 내부의 컨테이너로 전송됩니다. Termination 상태가 된 Pod은 Service의 로드밸런싱 대상에서 제외된다. 로드 밸런싱 대상에서 제외됐으므로 더이상 해당 Pod으로 트래픽이 전달되지 ..

ㅁ 개요 ㅇ Kubernetes가 배포 절차를 수행해 주지만 컨테이너 안에서 Spring Boot 애플리케이션의 정상적인 종료를 위해서는 Graceful shutdown이 필요하다. ㅇ 트래픽에 따라 AutoScaling 되면서 502error가 발생하기 때문이다. ㅇ 502 Error가 발생하는 과정을 설명하고 graceful shutdown의 적용필요성을 정리하였다. ㅁ Graceful shutdown이란 우아한 종료라고 직역할 수 있을 것이다. 이 말을 생각해보면, 마무리를 잘하여 좋게 끝난다는 의미를 내포하고 있다. 다시 말해 할일을 다 마치고 우아하게 종료하는 것이다. 예를 들어 생각해보자. 우리가 문서작업을 할 때에 우리가 원하는 작업이 정상적으로 완료되면, 파일을 저장하고 해당 문서편집파일을..

ㅁ Amazon ECR plugin 에러 발생 Amazon ECR Failed to load: Amazon ECR plugin (amazon-ecr 1.6) - Failed to load: Amazon Web Services SDK :: All (aws-java-sdk 1.12.215-339.vdc07efc5320c) Amazon Web Services SDK :: All Failed to load: Amazon Web Services SDK :: All (aws-java-sdk 1.12.215-339.vdc07efc5320c) - Plugin is missing: aws-java-sdk-codebuild (1.12.215-339.vdc07efc5320c) ㅁ 프로젝트 빌드 실패 ERROR: Could ..

ㅁ Minikube 관련 글 ㅇ [minikube] 맥에 minikube를 사용해 로컬 kubernetes 설치 ㅇ [minikube] minikube 기본 명령어 정리 ㅇ [minikube] minikube 다중노드 구성하기 ㅇ [minikube] minikube에서 meteric server 실행하기 ㅇ [minikube] minikube dashboard 활성화 방법 ㅁ 개요 ㅇ 로컬에서 쿠버네티스 공부를 시작하는 경우, minikube를 사용해 간단하게 단일 노드 클러스터를 구성할 수 있다 ㅇ 단일 노드의 가상머신에서만 실행되기 때문에 분산된 쿠버네티스 클러스터의 안정성은 보장할 수 없다. ㅇ Mac OS에서 minikube를 설치하는 과정을 정리하였다 ㅁ Minikube란? Minikube는 K..

ㅁ 개요 ㅇ 개발 젠킨스 플러그인이 문제가 발생하여 이를 조치하는 과정을 정리하였다. ㅁ Dependency errors Dependency errors: SSH Credentials Plugin (277.v95c2fec1c047) Update required: Trilead API Plugin (trilead-api 1.0.8) to be updated to 1.0.13 or higher Jackson 2 API Plugin (2.13.3-285.vc03c0256d517) Update required: JAXB plugin (jaxb 2.3.0) to be updated to 2.3.6-1 or higher Jenkins GIT server Plugin (1.11) Update required: SSH..

ㅁ 개요 ㅇ API 요청에 대한 상세정보의 히스토리 관리를 위해 사용하고 있던 MongoDB에 부하가 발생하였다. ㅇ 부하의 원인이 된 요청을 찾고 Kill하여 부하를 해소하였고, 그 과정을 정리하였다. ㅁ 장애인지 ㅇ MongoDB가 사용하는 볼륨의 DISK I/O가 96%가 넘었다고 알람이 발생하였다. ㅇ DISK I/O가 100%가 되었다. ㅇ CPU 사용량을 30%미만이었고, DISK I/O만 높은 상태였다. ㅇ 히스토리 관리를 위한 저장용으로 사용하다보니 단건에 대한 확인용으로만 설계되어 있어서 Collection당 많은 데이터가 존재하였다. ㅇ Key값이 아닌 다른 비교조건을 넣는 경우 상당한 데이터가 조회되는 구조였다. ㅇ 어떤 요청인지 정확히 알 수는 없지만(사실 원인파악보다 ..

ㅁ 개요 ㅇ mysql의 성능향상을 위한 구체적인 지표를 얻을 수 있는 방법을 찾고 있었다. ㅇ profiling을 통해 디비 프로세스의 다양한 성능지표를 확인하여 쿼리 성능을 확인할 수 있다. ㅁ Mysql 버젼확인 ㅇ 참고로 현재 테스트 중인 Mysql은 회사에서 사용 중인 AWS Aurora RDS와 동일한 5.7버젼에 맞추었다. ㅁ SHOW PROFILE 이란? MySQL 에서 쿼리가 처리되는 동안 각 단계별 작업에 시간이 얼마나 걸렸는지 확인 할 수 있는 기능을 제공하며 쿼리 프로파일링(Query Profiling) 기능을 제공하고 있다. 쿼리 프로파일링(Query Profiling)는 MySQL 5.1 이상에서 부터 지원한다. 메모 SHOW PROFILE은 향후 MySQL 릴리스에서 제거될 것..