쿠버네티스 정리

devswansong·2025년 1월 10일
  • 파드
    쿠베의 가장 작은 배포 단위
    하나 이상의 컨테이너 가짐, 같은 네트워크 네임스페이스(아이피, 포트)를 가진다.
    동일한 저장소 (볼륨) 접근 가능하다.

특징
IP 가 고정되지 않고 한 번 쓰면 버림
파드가 새로 생성되면 아이피가 달라질 수 있다.
같은 네트워크 네임스페이스와 볼륨을 가집니다.
실제론 레플리카셋, 디플로이먼트에서 관리되지만 최소 배포 단위다.

파드 내부에선 브릿지 통신 (컨테이너들이)

파드는 같은 노드 안의 다른 파드에 접근 가능
서비스 인그레스를 통해 커베 클러스터 외로도 갈 수 있다.


  • 레플리카셋
    파드를 지정한 수만큼 유지시키는 오브젝트
    라벨 셀럭트를 통해서 파드들을 관리하고
    오토스케일링이 가능하며
    디플로이먼트 바로 아래에 있는 오브젝트다 포함되는 느낌.

  • 디벨롭먼트
    애플리케이션 배포와 업데이트 등 관리를 담당하는 오브젝트
    선언적으로 애플리케이션을 구성할 수 있고 롤링 배포가 가능하며 롤백이 쉽습니다. 레플리카셋이 가지고 있던 스케일링, 파드 레플리카 수 유지가 가능

  • 서비스
    외부 네트워크 트래픽을 파드로 제공하는 오브젝트

클러스터아이피 : 클러스터 내부에서 다루는 아이피 (사설 아이피 냄새)
노드포트 : 외부와 연결될 노드포트 (30000번대 를 사용)
externalName : 외부 DNS 레코드와 내부 DNS 레코드를 매핑한다.
로드밸런스 : 로드밸런스는?! 로드밸런스다. ...
Selector : 라벨을 기준으로 트래픽 보낼 파드들을 구분
port/target port : 서비스로 들어오는 포트와 파드의 내부 포트를 매핑
DNS 통합 : 클러스터 내부에서 사용하는 DNS 로 서비스 주소를 해석 가능

인그레스를 통해 외부 트래픽을 받고 이게 서비스에 들어간다. 이 서비스는 클러스터 아이피를 가지며 변경되지 않아 고정 아이피처럼 사용할 수 있다 그리고 로드밸런싱을 통해 파드들에게 전달하고 파드들은 라벨 셀렉터를 통해서 할 수 있다. 서비스는 DNS 로 해석도 가능하다. 복잡한 구조에서 변하지 않는 것은 정말 소중한것 같다.


  • CNI (container network interface)
    컨테이너 환경에서 네트워크를 쉽게 구성하고 관리하기 위한 표준 인터페이스

새로운 파드로 이어질 수 있는 환경을 만들어준다.

워커노드 kubelet 가 파드를 생성하란 명령어 받는다.
도로를 만들어야하는데..

우선 cni 플러그인에 진입하면 가상 이더넷을 만들고 브릿지가 생성되고 아이피테이블을 생성하고 파드와 연결할 수 있는 환경을 구축한다.
(요구사항에 맞게 네트워크 인터페이스를 생성)

  • kubernates API Server : 사용자의 요청을 받아 각 노드 kubelet 에게 전달
  • kubelet (Node) : 노드 내 파드를 생성하고 CNI 에게 네트워크 인터페이스를 위임
  • CNI : 네트워크 인터페이스 구성 (가상 이더넷, 브릿지, 아이피설정)
  • 파드 : CNI 가 설정한 네트워크로 통신한다.
  • 가상이더넷 : 이더넷은 랜카드?! 인터넷 선 꼽는.. 그걸 소프트웨어적으로 만든 것. 컨ㅌ이너와 호스트를 연결하며 양쪽 끝에 서로의 네트워크 공간을 연결한다..
  • 브릿지 : 여러 네트워크 세그먼트를 전달하는 가상의 L2 스위치 , 컨테이너간 통신을 중계한다..
  • iptables : 리눅스의 패킷 필터링 도구 컨테이너 트래픽의 라우팅, NAT, 보안규칙

Calico
으악! 진짜 넘! 어렵다! 으악!
클라우드 네이티브 환경에서 네트워크 설정과 네트워크 보안을 제공하는 오픈소스 프로젝트.
L3 라우팅을 방식을 사용하며 IP 계층에서 파드간 통신을 단순히 하며 확장성 있게 한다.
eBPF 모드 지원 (높은 성능 , 유연성을 제공하며 다양한 기능 제공.. 어우 어려워)
Felix 는 에이전트로 라우팅, 네트워크 보안 설정(iptables, ) 을 담당한다.
Typha 는 대규모 클러스터에서 etcd 로의 접근을 최소화하기 위한 캐시 레이어? (팬아웃 감소 효과)
BGP (Border Gateway Protocol) 노드 간 BGP 를 통해 라우팅 정보를 교환하여 L3 라우팅 방식으로 처리한다..
(네트워크 지식이 너무 부족하다... )


  • 인그레스
    외부 트래픽을 서비스에 라우팅되는 트래픽을 제어하는 리소스
    클러스터 외부에서 클러스터에 접근할 땐 노드포트, 인그레스, 로드밸런스 타입이 있어야한다..
    인그레스 컨트롤러가 라우팅 규칙을 확인하고 도악한다.

L7 스위치를 지향해 패스와 도메인으로 라우팅이 가능하며 HTTPS, TLS 가 가능하다.

스위치와는 Nodeport, clusterIp, 로드밸런스 타입, 를 통해서 상호작용한다
DNS 는 도메인을 통해서 라우팅할 때 아이피 주소로 도메인 매핑이 필요할 때 사용한다.


칼리코는 파드와 파드, 노드와 파ㅏ드 사이 통신을 위해 사용한다 그리고 L3, 4 수준에서 트래픽 차단이 가능하다 (NetworkPolicy)

인그레스 는 클러스터 외부 -> 클러스터 내부를 위해 사용
L7 레벨에서 적절한 service로 라우팅한다.


  • job
    일회성 작업을 위한 리소스. 지정된 작업을 완료할 때 까지 반복한다.
    병렬로 실행 가능하고 특정 완료 횟수를 지정할 수 있다.

  • CronJob
    반복 스케줄 작업을 위한 리소스.
    수행 시간이 너무 길어 다음 주기에 닿으면 또 작업이 실행되니 주의하자.
    Job 축적이 가능하니 히스토리를 관리하자
    타임존은 UCT 기준이라 한국 시간대로 바꿔야한다.
    성공했다 떴는데 실패하는 경우 있을 수 있으니 성공했을 때 로그도 기록하자 (휴먼 에러에 가까운듯)
profile
unagi.zoso == ziggy stardust == devswansong

0개의 댓글