반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- linux
- 클라우드
- devops
- Swift
- 도커
- centOS
- docker
- k8s
- 네트워크
- C++
- boj
- ios
- 컨테이너
- 쿠버네티스
- os
- NGINX
- 도커 명령어
- AWS
- kubernetes
- 도커 이미지
- 부스트코스
- Python
- 운영체제
- 도커 컨테이너
- 프로세스
- 데브옵스
- 리눅스
- 인프라
- centOS7
- swift 클로저
Archives
- Today
- Total
귀염둥이의 메모
[K8s] kube-proxy 본문
반응형
kube-proxy
- 서비스를 만들었을 때 ClusterIP나 NodePort로 접근할 수 있게 만들어 실제 조작을 하는 컴포넌트
- 클러스터의 노드마다 실행되면서 클러스터 내부 IP로 연결하려는 요청을 적절한 파드로 전달
- userspace, iptables, IPVS 모드가 있다
userspace 모드
- 클라이언트에서 서비스의 ClusterIP를 통해 요청을 하면 iptables를 거쳐 kube-proxy가 요청을 받는다
- 그리고 서비스의 ClusterIP는 연결되어야 하는 적절한 파드로 연결해준다
- 요청을 파드로 연결하는 방식은 라운드 로빈(Round Robin)을 사용한다
- 파드 하나로의 연결 요청이 실패하면 자동으로 다른 파드에 연결을 재시도한다
iptables 모드
- userspace와 다르게 kube-proxy는 iptables를 관리하는 역할만 한다 ➡️ 클라이언트의 트래픽을 직접 받지 않음
- 클라이언트의 모든 요청은 iptables를 거쳐서 파드로 직접 전달된다 ➡️ userspace 보다 요청 처리 성능이 좋음
- 파드 하나로의 연결 요청이 실패하면 재시도하지 않음 ➡️ 요청이 실패 처리됨
- 컨테이너에 readinessProbe가 설정되어있고 Health check가 정상적으로 되어야 연결 요청이 이루어짐
IPVS (IP Virtual Server) 모드
- 모든 리눅스 커널에 있는 L4 로드밸런싱 기술이다
- 리눅스 커널 안 네트워크 관련 프레임워크인 Netfilter에 포함되어 있다 ➡️ IPVS 커널 모듈이 노드에 설치되어야 함
- 커널 공간에서 작동하고 데이터 구조를 해시 테이블로 저장함 ➡️ iptables보다 빠르고 좋은 성능을 낸다
- 다양한 로드밸런싱 알고리즘
- rr (round-robin) : 프로세스 사이에 우선순위를 갖지 않고, 순서와 시간 단위로 CPU를 할당
- lc (least connection) : 접속 개수가 가장 적은 서버를 선택
- dh (destination hashing) : 목적지 IP 주소로 해시값을 계산하여 분산할 실제 서버를 선택
- sh (source hashing) : 출발지 IP 주소로 해시값을 계산하여 분산할 실제 서버를 선택
- sed (shortest expected delay) : 응답 속도가 가장 빠른 서버를 선택
- nq (never queue) : sed와 비슷하지만 활성 접속 개수가 0인 서버를 가장 먼저 선택
References
반응형
'Infra & Devops > Kubernetes' 카테고리의 다른 글
[K8s] 서비스(Service)와 인그레스(Ingress) (0) | 2021.10.08 |
---|---|
[K8s] 쿠버네티스 아키텍처 (Kubernetes Architecture), 구성 요소 (0) | 2021.10.08 |
[K8s] 파드(Pod) 구성 패턴 (0) | 2021.10.05 |
[K8s] 컨테이너 프로브(Probe), 컨테이너 진단 (0) | 2021.10.05 |
[K8s] Vagrant와 Kubespray를 이용한 쿠버네티스 환경 구성(2) (0) | 2021.10.03 |
Comments