1. 이슈RKE2 클러스터 연결시 워커 노드에서 NotReady 이슈.워커 노드 RKE2-Canal 파드 CrashLoopBackOff 이슈. (install-cni 컨테이너)RKE2-Server 와 RKE2-Agent 간 내부 통신 이슈. 2. 구성 환경마스터 노드를 담당하고 있는 VM은 Oracle Cloud 에 올라가있고 워커 노드를 담당하고 있는 VM 은 GCP 에 올라가 있는 상태이다.따라서 각 노드는 다른 네트워크 대역에 있으며 공인IP 도 다른 상황이다. 따라서 RKE2 에서 제공하는 가이드에 의한 config 설정은 server 의 주소인 공인IP 로 설정하였다. 또한 인증서 발급은 정상적으로 이루어진 상황이었다. 3. 원인 RKE2-Agent 가 API-Server 와 연결하지 못하는 문..
분류 전체보기
지금까지 GCP에서 제공하는 콘솔창에서 SSH로 접근하는 방식을 사용하였다. 하지만 이제 RKE2 을 사용하기로 방향이 잡혀졌고, 서비스를 구축하는데 콘솔창에 접근해야 하는 경우가 많아지기 시작했다. 매번 콘솔창에 접근하여 접속하는 방법이 귀찮아지고, 추후 접근을 더 용이하게 하기 위해 SSH 키를 등록하여 외부터미널에서 접근하고자 한다. 1. 새로운 PEM 키 준비기존에 저는 라즈베리파이에 접근하기 위해 PEM 키를 다운받은 경험이 있습니다. 해당 키를 이용하여 접근해도 괜찮지만, GCP 용 PEM 키를 하나 더 생성하여 사용하기로 하였습니다. 클라이언트에서 새로운 PEM 키를 생성하기위해 다음 명령어를 실행한다.$ ssh-keygen -t rsa -b 2048 -f ~/.ssh/gcp -C "you..
·개인공부
이전 글에서 RKE2 Master Node 를 설치하였다. 이번에는 Work Node 를 설치하는 과정을 정리한다.https://jeenukchung.tistory.com/51 VMware Fusion, RKE2 Master Node 설치 (1)0. 공부 목적ST00CK 에 RKE2 를 기반으로 프로젝트를 개발하기로 위해 직접적인 구성 전에 간단한 설정을 하기 위해 연습 목적으로 작성하게 되었다. GCP 의 무료 크레딧을 활용하고 있기 때문에 크jeenukchung.tistory.com 1. Worker NodeWorker Node 는 클러스터 내에서 컨테이너화된 애플리케이션을 실행하는 역할을 하며, Master Node 와 통신하여 작업을 수행한다. 그렇기 때문에 당연하게도 Master Node 가 정..
·개인공부
0. 공부 목적ST00CK 에 RKE2 를 기반으로 프로젝트를 개발하기로 위해 직접적인 구성 전에 간단한 설정을 하기 위해 연습 목적으로 작성하게 되었다. GCP 의 무료 크레딧을 활용하고 있기 때문에 크레딧이 소진되면 개인 리소스에 이사를 해야하고, Docker 기반으로 K8S 를 설정하는 것 보다 Containerd 기반으로 설정하는것이 더 리소스적으로 효율적이기 때문에 해당 기술을 채택하게 되었다. 1. REK2 RKE2는 Rancher Kubernetes Engine 2의 약자로, Rancher에서 제공하는 엔터프라이즈급 Kubernetes 배포 도구이다. RKE2는 표준 Kubernetes와의 호환성을 유지하면서 보안과 안정성을 강화한 Kubernetes 배포판이다. 다음은 RKE와 RKE2의..
Node.js 와 Socket.IO 를 활용하여 양방향 통신에 성공하였다. 하지만 해당 방식은 클라이언트가 접속하는 경우 바로 연결되는 방식이다. 그렇기 때문에 클라이언트가 해당 페이지를 벗어날 경우 대화 내용이 사라진다. 따라서 채팅방을 개설하고, 개설된 채팅방에 유저를 초대하고, 대화방을 벗어나도 대화의 기록이 저장되어 있게끔 구성하기 위하여 ScyllaDB 를 연결하기로 한다. 1. Kafka 를 사용하는 이유Socket.IO 만으로도 실시간 양방향 통신이 가능하다. 하지만 Kafka 를 추가로 사용하는 이유는 실시간 통신 외에 데이터의 안정적인 처리, 확장성, 그리고 데이터 보존이 필요하기 때문이다. 즉, 채팅방에서 상대방의 연결이 끊기더라도 채팅 메시지가 유실되지 않고 나중에 다시 접속했을 때 ..
Socket.IO 와 친해지기 위해 일단 먼저 코드부터 작성해보기로 했다.1. 통신 흐름[클라이언트]사용자가 메시지 입력 ↓socket.emit('chatMessage', message) ↓[서버]socket.on('chatMessage', callback)io.emit('chatMessage', { id, message }) ↓[다른 클라이언트]socket.on('chatMessage', callback) → UI 업데이트2. 파일 구성 및 역할client.js :클라이언트 측 코드로, 브라우저에서 실행된다.사용자 입력 처리, 서버와의 통신, UI 업데이트를 담당한다.server.js :Node.js 기반 서버 코드로, 클라이언트와의 연결 관리 및 이벤트 처리를 담당한다.Socket.I..
·개인공부
1. Socket.IOSocket.IO 는 클라이언트와 서버 간의 low-latency, bidirectional, and event-based 통신을 가능하게 하는 JavaScript 라이브러리이다. WebSocket 을 기반으로 동작하며 WebSocket의 한계를 보완하고, 더 안정적인 실시간 통신 기능을 제공한다.2. 기본 개념Socket : 소켓은 클라이언트와 서버간의 연결을 나타낸다. 소켓을 사용하여 실시간으로 데이터를 주고 받는다.Server : 서버는 클라이언트와의 소켓 연결을 설정하고 관리한다. 클라이언트로 이벤트를 송신하거나 클라이언트로부터 이벤트를 수신할 수 있다.Client : 클라이언트는 서버와의 소켓 연결을 설정하고 관리한다. 클라이언트는 서버와 양방향으로 이벤트를 송신하거나 수신..
GCP 에 VM 인스턴스를 설정하고, 프로젝트에 필요한 리소스를 설치하는 과정을 기록한다. 1. VM 인스턴스GCP에 접속한 후, 결제관리에 카드를 등록하면 90일, $300 를 무료로 사용할 수 있다. 물론 GCP 에서 바로 DB를 설정할 수 있는 항목이 있긴 한데, 그렇게 되면 따로 관리하기 힘들것 같아서 VM을 올리고 VM에 Docker Compose 방식으로 리소스를 설치하여 사용하기로 하였다. 처음 계획은 한달에 $100 씩 사용하여 총 3개월을 사용하려고 하였으나, 이것저것 설정하다 보니 가격이 올라 아래의 사진과 같은 스펙으로 합의하기로 하였다. OS 의 경우 Ubuntu 22.04 LTS 로 생성하였다. 2. 리소스 설치하기리소스는 전부 Docker Compose 방식으로 설치하였다. K..