전체 글
플랫폼을 유지보수 하면서 플랫폼에 올라간 컨테이너들이 메모리 부족으로 죽는 현상이 다분하게 발생합니다. 따라서 왜/언제 컨테이너가 메모리 때문에 crash가 발생되는지 알아보고자 글을 작성하게 되었습니다.1. JVM이란?Java 프로그램 = 영화 대본 (스크립트)JVM = 배우 + 무대 + 연출자 (대본을 실제로 연기해주는 존재) ▶ 대본(바이트코드)을 해석해서 실제로 "연기"(실행) 해주는 게 JVM이라고 쉽게 설명 할 수 있습니다. 💡 JVM이 하는 일역할설명1. 바이트코드 실행.class 파일을 읽고 프로그램을 실행해줘요2. 메모리 관리어떤 객체를 만들고 언제 없앨지 결정해요 (GC: Garbage Collection)3. 예외 처리에러가 나면 어떻게 처리할지 도와줘요4. 플랫폼 독립성 제공Wi..
Azure 환경에 Kubernetes 실습 환경 구축1. 가상 머신 생성- 최소 스펙(2ea-Master 노드/Worker 노드) cpu : 2core mem : 4GiB 2. Master 노드 구성- 환경설정# Swap 비활성화 sudo swapoff -a # 부팅 시 swap이 다시 활성화되지 않도록 설정 sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab # conf 설정 # 1. sysctl conf 설정 cat /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward ..
📦 쿠버네티스 기본 아키텍처CKS 자격증 준비를 위해 쿠버네티스의 기본 구조를 먼저 공부해봅시다.쿠버네티스는 크게 Master 노드와 Worker 노드로 구성됩니다. 🧠 Master 노드클러스터 전체를 관리하고 상태를 조율하는 두뇌 역할을 담당합니다.주요 구성요소구성요소설명API Server클러스터의 모든 요청을 받아들이는 진입점이며, etcd와 직접 통신하는 유일한 구성요소입니다.etcd클러스터의 상태와 설정 정보를 키-값 저장소 형태로 저장합니다.Scheduler새로운 파드를 어떤 노드에 배치할지 결정합니다.Controller Manager다양한 컨트롤러를 통해 클러스터 상태를 유지합니다. (예: 파드 수 조정, 노드 상태 감시 등)Cloud Controller Manager클라우드 환경과 통합하..
1. RabbitMQ 란 무엇인가.기본 개념 : 애플리케이션 간에 메시지를 전송하고 수신하는 역할을 하는 오픈 소스 메시지 브로커 소프트웨어 입니다. 이 시스템은 AMQP(Advanced Message Queuing Protocol)를 기반으로 동작합니다. ▷ AMQP 란 : 메시지 지향 개방형 프로토콜로, 메시지 큐 시스템 간에 메시지를 전송하는 표준을 정의합니다.RabbitMQ를 사용이유 : RabbitMQ는 분산 시스템과 애플리케이션 간의 메시징을 처리하는 데 매우 유용한 도구 역할을 합니다.효과설명비동기 메시징 및 비동기 처리시스템 간에 메시지를 보내고 받는 동안 송신자와 수신자가 동시에 작업을 할 수 있습니다. 이로 인해 시스템 간의 처리 효율이 늘어 날 수 있습니다.확장성과 부하 분산여러 ..
TKG(v.1.3.1) + Kubeapps Kubeapps 테스트 2가지 방법 - token 인증을 통하여 port-forward 방법을 사용하여 kubeapps 접근 (실습내용) - TMC / console.cloud 인증을 통하여 kubeapps 접근 1. Token 인증을 통한 Kubeapps 접근 Step 1 helm 을 통하여 kubeapps 설치 $ helm repo add bitnami https://charts.bitnami.com/bitnami $ kubectl create namespace kubeapps $ helm install kubeapps --namespace kubeapps bitnami/kubeapps Step 2 클러스터로 보안 접근을 하기 위해 OAuth/OIDC pro..
kubectl 명령어 기본구조 kubectl [Command] [Type] [Name] [Flags] nginx pod 1개 실행 > 1개 실행 시 run 명령어 사용가능 $ kubectl run webserver --image=nginx:1.14 --port 80 httpd pod 3개 실행 > 1개 이상 pod 생성 시 create 명령어 사용 $ kubectl create deployment mainui --image=httpd:latest --replicas=3 httpd 뒤에 : 을 생략하면 latest 버전을 당겨온다 $kubectl get deployments.apps 배포된 app들을 확인 현재 올라 와 있는 pod들 중 webserver 컨테이너에 들어가서 index.html 파일을 수정..
쿠버네티스란? - 쿠버네티스란 확장 가능한 오픈소스 플랫폼 입니다. 쿠버네티스의 필요성 프로덕션 환경에서는 애플리케이션을 실행하고 관리하고 다운이 되었는지 확인이 필요합니다. 만약 컨테이너가 다운 되었다 가정한다면 장애를 막기 위해 다른 컨테이너를 시작해야 할 것입니다. 이를 위해 쿠버네티스가 필요합니다. 쿠버네티스는 탄력적으로 확장과 장애 조치를 처리하고 배포 패턴을 통해 관리합니다. 기존 PaaS와 다른 쿠버네티스 쿠버네티스는 모든것이 제공되는 PaaS와 다릅니다. 컨테이너 수준에서 운영되기 때문에 PaaS는 일반적으로 배포, 스케일링, 로드 밸런싱과 같은 기능을 제공하고 여기에 사용자는 로깅, 모니터링 등 다양한 솔루션을 추가하고 사용할 수 있습니다.
tomcat 8.0 대 설치 할 경우 1. jdk 설치 jdk파일 다운받기 ( oracle에서 다운받기) 다운 받은 파일을 winscp로 옮기기 cd /usr/local/src에 옮긴 파일 넣기 gunzip jdk~ tar jdk~ 압축을 풀면 jdk폴더 생성 mv jdk~ /usr/local cd /usr/local ln -s jdk~ java (java로 심볼릭 링크) /etc/profile을 열어서 추가하기 JAVA_HOME=/usr/local/java CLASSPATH=.:$JAVA_HOME/lib/tools.jar PATH=$PATH:$JAVA_HOME/bin export JAVA_HOME CLASSPATH PATH source /etc/profile java -version javac -ver..



