전체 글

전체 글

    [Kubernetes] Cilium

    Cilium 이란?cilium의 기반에는 ebpf라는 리눅스 커널 기술이 사용된다. ebpf는 보안/가시성/네트워킹 제어 로직을 커널에 동적으로 삽입할 수 있는 Linux 커널 기술이다.또한 cilium은 kube-proxy를 완전히 대체할 수 있다.  cilium은 iptables을 이용한 쿠버네티스 트래픽 라우팅의 단점을 보완하여 네트워크 성능을 높히고자 하는 목적을 갖고있다.iptables를 기반으로 IP/PORT 기반의 전통적인 포워딩 기술은 오랫동안 널리 사용되었고 퍼블릿/프라이빗 클라우드 제품군들 모두 iptables 기반의 Security Group등을 기본으로 제공하고 있고 쿠버네티스마저도 CNI 핵심으로 iptables를 활용하고 있다.하지만 동적으로 변화하고 복잡한 마이크로서비스를 사용..

    [kubernetes] Service (Headless Service, ExternalName), Endpoint

    Headless ServiceHeadless 서비스는 서비스를 이용한 로드밸런싱 기능이 지원되지 않는다. 서비스를 거치지 않고 파드에 직접 접근한다.서비스 생성 시 .spec.clusterIP 필드 값을 None으로 설정하면 클러스터 IP가 없는 서비스를 만들 수 있다.❯ cat headless-svc.yamlapiVersion: v1kind: Servicemetadata: name: my-headless-service namespace: service-testspec: clusterIP: None selector: app: my-app ports: - port: 80 targetPort: 80❯ kubectl get svcNAME TYPE ..

    [Kubernetes] ArgoCD

    개념Argo CD 란?Manifest(yaml) 파일의 변경 사항을 감시하며, 현재 배포된 환경의 상태와 Manifest(yaml) 파일에 정의된 상태를 동일하게 유지하는 역할을 수행한다.한마디로 Argo CD는 쿠버네티스를 위한 CD 툴이라고 할 수 있다.GitOps는 DevOps의 실천 방법 중 하나로 애플리케이션의 배포와 운영에 관련된 모든 요소들을 Git에서 관리한다는 뜻이다.컴포넌트❯ kubectl get deployNAME READY UP-TO-DATE AVAILABLE AGEargocd-applicationset-controller 1/1 1 1 65sargocd-dex-serve..

    kube-proxy, CNI, coreDNS

    kube-proxy"쿠버네티스 서비스/파드 IP들을 iptables로 관리해주는 친구"https://kubernetes.io/docs/reference/networking/virtual-ips/#proxy-modes서비스의 IP를 Pod IP로 변환해주는 역할모든 worker node에 하나씩 위치한다. (daemonset 형태)kube-proxy는 클러스터의 각 노드에서 실행되는 네트워크 프록시로, 쿠버네티스 서비스 개념의 일부를 구현한다.kube-proxy의 주요 작업은 패킷을 라우팅하지 않고 서비스를 호출할 때 패킷이 목적지에 도달할 수 있도록 구성하는 것이다.kube-proxy는 생성된 서비스에 대한 iptables 규칙을 생성한다.kube-proxy는 각 노드에서 실행되며 APIServer와 통..

    [쿠버네티스] 클러스터 구축

    설치 아키텍처master 1대worker 1대haproxy 1대multi master 구축에 대한 방향성을 위해 haproxy에 master를 연결하여 구성하였으나, 간단한 테스트를 위해 1개의 master를 두고 haproxy와 연결하였다.사전 작업hostname 설정- 노드별로 고유한 hostname을 가지고 있어야 한다방화벽 해제 or 방화벽 규칙 구성- https://v1-27.docs.kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/- 노드끼리 많은 통신을 통해 쿠버네티스가 정상 동작하기 때문에 적절하게 방화벽을 구성하거나 방화벽을 해제해야 정상적으로 클러스터 구축이 가능하다NTP 서버 동기화- 쿠버네티스..

    [네트워크] 허브 / 브릿지 / 스위치 / 라우터

    허브 같은 허브에 연결된 PC끼리는 서로 통신이 가능하다. 허브는 서로 연결하게되면 마치 1대의 허브처럼 동작이 가능하다. 허브 역시 랜카드처럼 이더넷용과 토큰링용이 있다. 이더넷 허브도 속도에 따라 그냥 허브와 패스트 허브가 있다. 허브는 네트워크에서 없으면 안되는 가장 기본이 되는 장비 중 하나이다. (물론 요즘은 스위치가 싸서 네트워크 장비에서 허브를 찾아보기 어렵게됐디만 배우는 단계에서 무시하면 안된다.) 랜카드, 케이블, 허브만 있으면 내부에서 허브에 접속된 모든 PC가 서로 통신이 가능하다. (물론 외부 인터넷은 못나간다.) 허브는 '멀티포트 리피터'라고 말할 수 있다. 멀티포트는 말 그대로 포트가 많이 붙어있다는 뜻이고, 리피터는 들어온 데이터를 그대로 재전송한다는 의미를 가지고 있다. 즉,..

    [네트워크] 유니캐스트, 브로드캐스트, 멀티캐스트

    유니캐스트, 멀티캐스트, 브로드캐스트 등 캐스트 3형제는 한마디로 네트우크에서 통신을 하는 방식에 따른 구분이다. 즉, 1대1로 한느 통신 방식이냐, 어떤 그룹을 대상으로 하는 통신 방식이냐, 아니면 전부를 대상으로 하는 통신방식이냐 하는 것이다. 유니캐스트 현재 우리가 네트워크상에서 가장 많이 사용되는 트래픽이 무엇인가 하면 바로 유니캐스트이다. 유니캐스트란, 우리가 랜에서 통신을 한다고 할 때 데이터를 보내고자 하는 PC의 맥 어드레스 주소를 프레임 안에 써넣는데, 이때 PC가 하나여야 한다. 즉, 특정 목적지의 주소 하나만을 가지고 통신하는 방식이다. 편지를 보내는 방식과 비교했을때 봉투에 받는 사람 주소를 적고 보내는 사람 주소를 적은 다음에 우체통에 넣는 방식이다. 이런 방식으로 어떤 PC가 유..

    [React] VSCode React Debugging

    1. VSCode Extension 설치 (JavaScript Debugger) 2. .vscode/launch.json 파일에 아래와 같이 설정 { "version": "0.2.0", "configurations": [ { "type": "chrome", "request": "launch", "name": "Launch Chrome against localhost", "url": "http://localhost:3000", "webRoot": "${workspaceFolder}" } ] } 3. yarn/npm 명령으로 프로젝트 실행 후 F5 클릭 새로운 크롬 페이지로 설정한 url 페이지가 열린다 이제 디버깅 포인트를 잡아 디버깅을 할 수 있다