본문 바로가기

전체 글

CRD, CR, Operator - Zalando PostgreSQL Operator로 확인해보기 오퍼레이터 (Operator) - 건설회사(CRD+CRD Controller)CRD (Custom Resource Definition) - 건축물 설계서CRD Controller - 건축물 설계서의 변경, 추가사항 등을 확인 CR (Custom Resource) - 설계서로 만들어진 건물(인스턴스) PostgresDB 클러스터 관련해서 Zalando PostgreSQL Operator를 많이 사용-> 이것을 만들어보면서 CRD, CR, 오퍼레이터가 뭔지 알아보려고 함 기본개념yaml에 적히는 kind에는 Pod, service, Deployment....등등이 존재하지만 사용자가 기본 kind들이 아닌 새로운 사용자만의 kind를 추가하고싶을때 등장하는것이 오퍼레이터와 CRD오퍼레이터가 CRD를 통해 새.. 더보기
쿠버네티스 네트워킹 헷갈리는 사항 1. 같은 노드의 서로 다른 파드1-1. 클러스터IP로 통신하는 경우송신 파드A 내의 프로세스가 특정 서비스(B)와 통신을 시도함 -> vethA1(파드 네임스페이스와 연결) -> vethA2(호스트 네임스페이스와 연결) -> kube-proxy (ClusterIP로 가는 흐름 인터셉트)가 파드 DNAT -> 호스트 브릿지 인터페이스 -> 브릿지 인터페이스에 추가된 상대 파드쪽 vethB2 -> vethB1*참고사항리눅스에서 브리지 인터페이스(cni0, br0 등)는 물리적인 네트워크 스위치와 유사하게 동작합니다.스위치는 여러 개의 포트를 가지고 있으며, 각 포트에 연결된 장치들의 MAC 주소를 학습하여 효율적으로 트래픽을 전달합니다. 브릿지 인터페이스는 네트워크 인터페이스를 브리지의 포트로 추가합니다... 더보기
Pipe - 컨테이너 런타임이 어떻게 컨테이너의 로그를 캡쳐하는가? 1. 컨테이너는 본질적으로 리눅스 프로세스이며, 모든 프로세스는 기본적으로 stdout과 stderr를 가지고 있음. 2. 컨테이너 프로세스의 표준출력과 표준입력을 Pipe를 통해 컨테이너 런타임으로 전달3. Pipe로 전달될때 파일 디스크립터 리디렉션(File Descriptor Redirection)의 방식으로 전달됨.   단계별 설명:프로세스 생성 및 초기 파일 디스크립터: 컨테이너 런타임은 새로운 컨테이너를 실행하기 위해 fork() (또는 유사한 시스템 호출)를 통해 새로운 프로세스를 생성합니다. 이 자식 프로세스(컨테이너의 메인 프로세스)는 부모 프로세스(컨테이너 런타임)의 열려 있는 파일 디스크립터들을 복사하여 상속받습니다. 일반적으로 부모 프로세스의 표준 입력(stdin, 파일 디스크립터 .. 더보기
unshare() 시스템 콜, namespace, context switching 셋의 관계 1. unshare 시스템콜이 어떻게 동작하는지- task_struct와의 관계2. PID네임스페이스와 다른 네임스페이스가 어떤 차이인지- fork()3. unshare로 네임스페이스가 생성되었을때 새로운 네임스페이스로 어떻게 프로세스가 격리되는지- context switching   1. unshare() 시스템 콜의 역할: 사용자 공간에서 커널 공간으로의 요청unshare() 는 시스템 콜입니다. 시스템 콜은 사용자 공간의 프로그램이 커널의 기능을 사용하기 위해 호출하는 특별한 인터페이스입니다. 프로세스가 unshare() 를 호출하는 것은 "커널에게 특정 네임스페이스 관련 작업을 요청하는 것"으로 이해할 수 있습니다.2. 커널 내부의 프로세스 표현: task_struct (프로세스 구조체)리눅스 커.. 더보기
TCP handshake Deep-dive (4) Window Size  수신 버퍼: 네트워크에서 받은 데이터가 애플리케이션이 읽을 때까지 임시로 저장되는 공간.수신 윈도우: 현재 수신 버퍼에서 남아있는 공간 크기.-> 만약 수신자의 윈도우 크기보다 더 많은 데이터를 한 번에 보내면, 수신자는 데이터를 제대로 처리하지 못하고 손실이 발생할 수 있음  TCP 헤더에서 윈도우 크기(Window Size) 필드는 16비트(2바이트) 길이.즉, 윈도우 크기 값의 최대 크기는 2^16 - 1 = 65,535 바이트(64KB - 1B).(현재 테스트 사오항은 윈도우 스케일링이 사용되고있지 않음.)   수신측으로 데이터를 보내면 Window Size가 줄어든다. 수신버퍼에 클라이언트가 보낸 데이터가 보관되기 때문이다.  Zero Window   데이터 "수신자 (R.. 더보기
TCP handshake Deep-dive (3) - Flag TCP 패킷의 플래그SYN, ACK, FIN은 3way, 4way 핸드쉐이크의 패킷에서 감지,TCP연결의 첫 번째 패킷만이 ACK비트가 설정되지 않음.   *RST비정상적인 이유로 연결을 즉시 종료할 때 사용. 존재하지 않는 포트에 접속하거나 앱에서 강제로 연결을 종료할 때 사용된다. RST 플래그는 FIN 플래그와 달리 "양방향 "즉시 "연결 종료" 를 유발합니다. FIN 플래그는 "graceful close" (우아한 종료) 를 위한 것이고, RST 플래그는 "abrupt close" (갑작스러운 종료) 를 위한 것입니다.   *PSH"수신측 애플리케이션에게 "데이터를 "즉시 "처리해달라고 "요청" 하는 깃발입니다. 일반적으로 TCP는 효율적인 전송을 위해 데이터를 버퍼에 모아서 한 번에 처리하지만,.. 더보기
TCP handshake Deep-dive (2) SYN-ACK 수신 후 ACK 패킷 확인  클라이언트 -> 서버 첫 SYN패킷의 Sequence Number : 313520895서버 -> 클라이언트 SYN-ACK 패킷의 Acknowledgment Number : 313520896 (1 증가)서버 -> 클라이언트 SYN-ACK 패킷의 Sequence Number : 1876124418클라이언트 -> 서버 ACK 패킷의 Acknowledgment Number : 1876124419 "랜덤 초기 시퀀스 번호 (ISN)" 사용: TCP 연결을 시작할 때 (3-way handshake), 클라이언트와 서버는 각자 "무작위로 생성된 "초기 시퀀스 번호 (Initial Sequence Number, ISN)"" 를 사용합니다.  * TCP 세그먼트는 "TCP 헤더.. 더보기
TCP handshake Deep-dive (1) TCP관련하여 질문이 들어왔을때, 단순 3 way handshake 과정만 설명하기에는 부족하다는 것을 알게 되었음AI한테 물어봐도 깊게 물어보지않으면 그 이상 안알려주는 경우가 많아서 키워드를 직접 서칭하여 테스트  Epimeral Port일시적인 포트Ephemeral 포트는 주로 클라이언트 프로그램 (웹 브라우저, 앱 등) 이 서버에 연결을 "요청할 때" 자신의 "출발지 포트 (Source Port)" 로 사용함.  VM에서 파이어폭스 실행 시 맨 처음 확인되는 TCP 패킷Src Port: 38772  그렇다면 왜 이렇게 높은 포트를 사용하는가?  1. 동시 접속의 필요성: 클라이언트 (예: 여러분의 컴퓨터) 는 동시에 여러 웹사이트에 접속하거나, 여러 개의 앱을 실행하는 등 동시에 여러 서버와 여러.. 더보기