Infra

k8s 가이드 (2023. 5 ~)lasted updated : 2024. 9. 10.CreAIte 프로젝트 인프라를 구축하고, 공유 및 참고를 위해 작성한 가이드입니다. 당시 k8s 시스템 완성만을 위해 작업하여, 실제 운영 환경에 적합하지 않은 방법들이 다수 포함되어 있습니다. 따라서, 공부 및 실습 목적으로만 참고하시면 좋을 것 같습니다 :)  프로젝트 종료 이후에 작성하여 생략된 부분이 있을 수 있으니, 참고바랍니다.(2024. 9. 10 ~ ) 최신화 및 누락된 부분 업데이트 시작아키텍처아키텍처 구성클러스터 구성파이프라인 구성인프라 구축 환경 및 목표EC2 인스턴스를 2개 사용하는 상황에서 마스터 노드와 워커 노드를 각각 하나씩 운영하기 때문에, 가용성을 완벽하게 확보하기 어려운 상황.가용성을 ..
온프레미스 베어메탈 환경에서 쿠버네티스를 설치해서 사용하면서,PV와 PVC 문제로 파드가 정상적으로 동작하지 않는 상황이 자주 발생했었습니다.PV와 PVC에 대해서 알아보도록 하겠습니다.PersistentVolume(PV)클러스터의 스토리지 자원을 나타냅니다. PersistentVolumeClaim(PVC)사용자가 요청한 스토리지 자원을 나타냅니다. 쿠버네티스는 PV와 PVC를 사용하여 파드와 클러스터 스토리지 간의 추상화 레이어를 제공합니다.PV와 PVC의 관계PV는 클러스터에서 사용 가능한 스토리지를 나타내며, PVC는 파드가 사용할 수 있는 스토리지 요청을 나타냅니다. PVC가 생성되면, 쿠버네티스는 사용 가능한 PV 중에서 PVC의 요구 사항과 일치하는 PV를 찾아 바인딩합니다.  이를 통해 파드..
해당 에러는 Helm v2에서만 발생하는 에러입니다. Helm v3 에서는 잠재적인 보안 문제를 방지하기 위해, Tiller를 사용하지 않도록 변경되었습니다. 이제는, kubeconfig 파일의 RBAC 권한을 따라가게 되어, Tiller를 사용할 필요가 없어졌습니다. 문제 Helm을 통해 Jenkins 차트를 설치하려던 중 다음과 같은 에러가 발생 Error: release jenkins failed: namespaces "dev" is forbidden: User "system:serviceaccount:kube-system:default" cannot get resource "namespaces" in API group "" in the namespace "dev" Tiller : 클러스터에서 He..
k8s 환경을 처음 접하고 공부하면서 구축했던 경험으로 작성했으며,잘못된 정보를 포함하고 있을 수 있습니다.피드백 감사히 수용하겠습니다. 쿠버네티스 클러스터 아키텍처"2개의 EC2 인스턴스를 각각 마스터, 워커노드로 분산해서 사용" "비교적 많은 리소스가 남는 마스터 노드에 데이터베이스를 도커로 배포" "워커노드에는 Spring Cloud Gateway와 마이크로서비스들, 그리고 EFK 스택을 파드로 배포" "마이크로서비스들과 게이트웨이는 파드의 개수를 항상 2개로 유지(replicas = 2)" "비정상 종료 또는 변경 감지 시 쿠버네티스가 롤링업데이트를 수행하도록 설정" *롤링 업데이트 : 파드 인스턴스를 점진적으로 새로운 것으로 업데이트하여 디플로이먼트 업데이트가 서비스 중단 없이 이루어질 수 있도..
EFK Stack EFK stack이란 Elasticsearch, Fluentd, Kibana를 얹은 스택이다. 기존의 ELK stack과의 차이는 로그 파이프라인 역할을 하던 Logstash를 Fluentd로 대체 Fluentd Fluentd는 CNCF의 graduated project 중 하나다. - 규모가 크고 레퍼런스가 많다. Fluentd는 다양한 소스에서 로그를 수집해 중앙화할 수 있는 오픈소스 데이터 콜렉터다. - 다양한 시스템에서 들어오는 여러 로그들을 fluentd 하나로 수집하고 파싱하고 포워딩한다. 기존의 시스템마다 제각각의 로깅 툴을 사용하고 각기 다른 저장 장소에 로그가 흩어져 있던 로깅 아키텍처들을 통합할 수 있다는 장점이 있다. 점점 복잡해지고 있는 MSA 환경에서 이러한 장점..
· Infra
process apparently never started in /home/jenkins/agent/workspace/gateway@tmp/durable-8b1e819f 원인 파이프라인 내 sh 입력 단계에서 스크립트가 시작되지 않았거나, 실행 도중 문제가 발생한 경우에 발생 해결방법 여기서, docker 환경에서 -u root와 같은 root 권한을 주고 해결한 사례를 참고. kubernetes 환경이므로, pipeline에 kubectl 컨테이너 생성 구문을 다음과 같이 수정 - name: kubectl image: bitnami/kubectl:latest command: - cat tty: true workingDir: '/home/jenkins/agent' securityContext: runAs..
· Infra
IaC(Infrastructure as Code) 시스템, 하드웨어 또는 인터페이스의 구성정보를 파일(스크립트)을 통해 관리 및 프로비저닝 IT 인프라스트럭처, 베어 메탈 서버 등의 물리 장비 및 가상 머신과 관련된 구성 리소스를 관리 버전 관리를 통한 리소스 관리 Terraform 인프라를 구축 하는 용도로 주로 사용 Ansible 구성 관리 도구 선언적, 절차적으로 필요한 모든 작업들을 구성 문제점이 발생했을 때 왜 문제가 발생 했는지. 또는, 대응하기 위한 작업들을 스크립트를 통해 기록하고 작업. 여러 개의 서버를 효율적으로 관리할 수 있게 해주는 환경 구성 자동화 도구 - Configuration Managemment, Deployment & Orchestration tool - IT infras..
· Infra
프로젝트에서 MSA 아키텍처를 직접 구성했지만, 쿠버네티스를 사용하지 않아 무중단 배포를 시도하며 어려움을 겪었습니다. 이에 쿠버네티스를 학습할 필요를 느꼈으며, 진행 중인 프로젝트에 쿠버네티스를 적용해보고 싶었습니다. 이 게시글은 쿠버네티스 처음 공부하며, 학습 내용들을 정리하기 위해 작성한 게시글입니다. 쿠버네티스 쿠버네티스는 컨테이너 오케스트레이션 툴로, 여러 대의 서버에 걸쳐 컨테이너화된 애플리케이션을 배포하고 관리할 수 있도록 도와주는 도구입니다. 따라서, 쿠버네티스는 도커를 사용한 컨테이너화된 애플리케이션을 배포하고 관리하는 데 사용됩니다. 클러스터 쿠버네티스 클러스터는 마스터 노드와 워커 노드로 구성됩니다. 마스터 노드는 쿠버네티스 클러스터의 제어센터로, 쿠버네티스의 모든 컴포넌트가 실행됩니..
· Infra
MSA 아키텍쳐를 적용한 Spring Boot 프로젝트를 진행하던 중, SpringCloud를 활용한 API Gateway를 구현 했는데 이때, 라우팅 할 마이크로 서비스들을 직접 지정했습니다. 많은 수의 마이크로 서비스를 직접 지정하다가 이게 맞나.. 싶어 동적으로 라우팅을 하는 방법을 찾아보았습니다. 그렇게 서비스 디스커버리에 대해 조사하게 되었습니다. 1. 동적 서비스 위치 서비스 인스턴스의 위치가 변경되거나 새 인스턴스가 추가되어도 서비스 디스커버리를 통해 실시간으로 찾을 수 있습니다. 이를 통해 서비스 간의 결합도를 낮추고, 확장성을 높이는데 도움이 됩니다. 2. 로드 밸런싱 서비스 디스커버리를 사용하면, 여러 인스턴스 중에서 하나를 선택하는데 사용할 수 있는 로드 밸런싱 기능을 제공합니다. 이..
· Infra
AWS RDS 사용 중 SpringBoot에서 too many connections 에러가 발생했다. 원인은 이미 max_connections 설정값 만큼 connection 연결이 되어 있기 때문이었다. 해결 방법 1. AWS RDS 파라미터 그룹 열기 2. 기존에 생성해놓은 파라미터 그룹이 없을 경우 새로운 그룹 생성 3. 생성한 그룹 열고 max_connections 검색 후 파라미터 편집 클릭 후 원하는 값으로 수정 - max_connections = 100 4. 필요 시 connection이 종료되는 시간을 줄여 connection 초과를 방지 - interactive_timeout = 180 수정 - interactive_timeout 파라미터의 값은 초 단위이다. (기본 값은 8시간) 5. ..
· Infra/Linux
vi 내에서 사용하는 단축키를 기록하기 위해 작성 h, j, k, l - 좌,하,상,우 커서이동 i - 현재 커서 위치에 Insert 하기 I - 현재 줄 맨앞에 Insert 하기 a - 현재 커서 다음칸에 Insert 하기 A - 현재 줄 맨뒤에 Insert 하기 O - 윗줄에 Insert 하기 o - 아랫줄에 Insert 하기 w - 단어 첫글자로 이동하기 W - 화이트스페이스 단위로 다음 글자로 이동하기 b - 백워드 방향으로 단어의 첫글자로 이동하기 B- 백워드 방향으로 화이트스페이스 단위로 다음 글자로 이동하기 e - 단어의 마지막 글자로 이동하기 ge - 백워드 방향으로 단어의 마지막 글자로 이동하기 gg - 문서 맨 앞으로 이동 G - 문서 맨끝으로 이동 ^ - 문장 맨 앞으로 이동 0 - ..
· Infra/Linux
EC2 ubuntu에서 vi 사용 중 touch로 생성한 파일이 수정 후 저장이 되지 않는 문제를 해결 후 기록한다. 원인 :w 또는 :wq로 파일을 저장할 때 readonly 파일이라 저장되지 않을 경우 발생 해결 :w! 을 통해 강제로 저장
Sungwoo Koo
'Infra' 카테고리의 글 목록