목록Infra (23)
miinsun
💻 실습 환경 MacBook M1 Pro iterm 📌 Minikube 설치 $ brew install minikube 📌 Docker Desktop 설치 https://docs.docker.com/desktop/install/mac-install/ docker desktop을 설치하고 minikube의 driver를 docker로 지정한 채 실행하자 $ open -a docker $ minikube start --drive=docker 📌 Master 1개 , Node 2개 구성 처음에 get nodes를 하면 master(control-plane)인 minikube만 보인다. $ kubectl get nodes NAME STATUS ROLES AGE VERSION minikube Ready contr..
유튜브 강의 '따배쿠'와 책 '쿠버네티스 입문'을 정리한 자료입니다. 📌 Kubernetes Contoroller란? 쿠버네티스의 컨트롤러는 파드들을 관리하는 역할을 한다. 또한 파드의 개수를 보장해준다. 또한 쿠버네티스 안에는 다양한 역할을 하는 컨트롤러들이 존재한다. 웹 서비스처럼 오랜 시간동안 계속 실행되어야하는 파드 --> Replication Controller, Replicaset, Deployment 등 클러스터의 전체 노드에 같은 파드를 실행할 때 --> DaemonSet 1회성 작업을 할 때 사용하는 Job, 주기적인 배치 작업을 할때 CronJob 컨트롤러 등이 있다 📌 Replication Contoroller Replication Contoller는 쿠버네티스 프로젝트의 초기..
💻 실습 환경 OS : Ubuntu 20.04 LTS RAM : 바꾸는 즉시 반영 됨 $ vim nginx.yaml # stastic pod 삭제 --> 바꾸는 즉시 반영 됨 $ rm nginx.yaml static pod는 master에서 조회만 가능하고, 따로 명령을 줄 수 는 없다. # 마스터에서 삭제해도 다시 실행 됨 $ kubectl delete pod nginx-pod-liveness-node1.example.com pod "nginx-pod-liveness-node1.example.com" deleted ※ static pod 디렉토리 경로 바꾸기 node01의 kubelet confing 파일을 수정해줌 # config 파일 수정 $ vim /var/lib/kubelet/config.yam..
TCP의 흐름제어 TCP연결이 성립되면 전송자와 수시자 모두 sendBuffer와 receiveBuffer를 가짐 보내는 입장에서 window-size만큼 데이터 전송 받는 입장에서 receive buffer보다 이상의 데이터가 들어오면 전부 폐기됨 받는 입장의 receive buffer를 고려해서 보내는 것이 관건 흐름제어를 할때 Receive Window 필드를 사용 보내는 입장에서 window-size를 알려줌 받는 입장에서 데이터를 받으면 receive buffer를 알려줌 receive buffer만큼 데이터를 전송하게 됨 흐름 제어란 수신자의 버퍼가 넘치지 않도록 데이터 전송을 조절하는 작업 버퍼의 크기 확인 할 때 Receive window 필드의 값만 채워서 보내고 나머지는 쓰레기 값을 보..
타임 아웃이란? * TCP는 타이머를 통해서 데이터 재전송 여부를 판단 * timeout이 되기 전에 feedback이 오면 다음 패킷을 보냄 * timeout이 되면 패킷이 유실된 것으로 판단하고 재전송 RTT(Round Trip Time, 왕복 시간) 세그먼트가 수신자에게 도착하고 feedback이 돌아오는 시간을 rtt라고 함 타이머 시간을 결정 짓는 요소 타이머 시간 판단시, 시간이 너무 짧으면 오버헤드가 발생 반대로 시간이 너무 길면, 유실 대응이 늦어짐 그렇다면 타이머 시간을 RTT만큼 설정하면 되지 않을까? 모든 패킷의 RTT는 다르기 때문에 다른 RTT를 적정 RTT로 맞춰줘야 할 필요가 있음 대표값으로 맞춰줘야함 → Estimated RTT(현재까지 측정해온 RTT의 합을 평균) TCP ..
TCP의 전반적인 특징 Point-to-Point : 한쌍의 프로세스 간의 데이터 통신 Reliable : 신뢰성있고 순서에 의거해 전송 pipelined: window 사이즈를 조절해서 tcp 혼잡 및 흐름 제어 full duplex data: 양방향 통신, 전이중데이터 conection-oriented: 연결 지향적, 제어 메세지 교환 flow controlled: 흐름제어, 발신자는 수신자가 정한 용량보다 더 많이 보내지 못함 TCP 헤더 구성 요소 포트 넘버(source port & dest port) : 출발지 포트와 도착지 포트가 있다 (포트 넘버는 0 ~ 65535) 시퀀스 넘버(sequence number) : 데이터의 중복을 확인할 때 사용하는 번호 ACK 넘버(acknowledgemen..
💬 요구 사항 Java socket 통신을 구현 java_server.java 와 java_client.java로 구성 📌 Server 코드 서버 소켓 생성 ServerSocket serverSocket = new ServerSocket(9000); 서버는 client 접속을 대기하다가 client가 접속하면 accept 해준다 Socket socket = serverSocket.accept(); 접속된 클라이언트의 주소를 출력 System.out.println("Connected by ( " + socket.getLocalAddress()+ ", "+ socket.getLocalPort()+ ") "); Client가 보낸 메세지 출력 버퍼를 사용하면 입출력의 효율이 높아진다 상대방이 보낸 버퍼를 읽으..