일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- AWS
- tcp
- 네트워크
- 침입차단시스템
- ELB
- kubernetes
- Queue
- 브리지
- english
- 프로토콜
- IPS
- 라우터
- SMTP
- 침입탐지시스템
- EC2
- IDS
- 스위치
- AI스쿨
- docker
- 3way handshaking
- Telnet
- 7계층
- k8s
- ICMP
- Storage Gateway
- C#
- Protocol
- ssh
- 보안관제
- SQS
- Today
- Total
Devsecops
k8s 아키텍쳐 본문
k8s 아키텍쳐
Kublet
- 해당 데몬으로 k8s 동작
- k8s를 통해 컨테이너에게 명령을 내릴때 API Server(Master Node)가 가장 먼저 응답
- 응답 후 허가받은 유저인지 확인(홈 디렉토리에 있는 인증서 확인, 6443 port)
- etcd에서 정보를 받고 scheduler 전송
- scheduler 정보를 받으면 실행하려는 특정 pod 를 어디에 배치하면 가장 좋은지 결정(etcd로 부터 가져온 정보를 가지고 최적 배치 결정), (ex) ngnix 2개 실행해줘)
- 어디가 적합한지를 결정하면 etcd에 저장 후 각 WorkNode의 kublet에게 명령 전달
- WorkNode의 kublet는 docker에게 명령 전달
CAdvisor
- Kublet 부속품
- 컨테이너 엔진 기반하에 현재 시스템이 가지고 있는 하드웨어 시스템(CPU, Memory 등) 어느 정도 사용중인지 컨테이너 이미지들이 얼마나 다운로드 되어있는지, 실행 중인 컨테이너들이 어떻게 동작중인지 모니터링 하는 툴
- Kbulet이 CAdvisor를 통해 수집 후 Master API로 전달
- Master는 받고 etcd로 저장
CNI(Container Network Interface)
- 컨테이너 간의 네트워킹을 제어할 수 있는 플러그인을 만들기 위한 표준
- 컨테이너와 컨테이너가 통신할 수 있도록 지원
- CNI를 통해 IP address 연결(내부 컨테이너끼리 통신하기 위한 IP)
etcd
- 전체적인 k8s의 운영에 대한 정보를 저장
- key - value 형태로 저장
Controller
- 컨테이너의 갯수를 보장(많으면 삭제, 적으면 생성)
- 실행 중인 pod를 모니터링(만일 컨테이너가 하나 다운되면 API Server 에게 알려서 다시 구동)
service 명령
- 앞서서 실행된 동일 web 컨테이너와 같은 것들을 로드밸런싱 하기 위해 있는 명령어
- API Server에서 명령을 받으면 문법 확인 후 web이름으로 deploy가 동작 중인지 확인
- 확인 후 단일 진입점을 만든다(클러스터 IP를 만든다, etcd에 기록)
- 요청이 오면 단일 진입점에서 로드밸런싱이 이루어짐
CoreDNS
- server 정보에 대해서 naming resolving 을 지원
- 클러스터 IP, server name매핑 정보 저장
Kube-proxy(NIC)
- Port Listen
- Clinet 가 요청할 때 어떤 컨테이너로 갈지 서비스 구조에 따라 로드밸런싱 하는 역할 수행
- 네트워크에 연결하기 위해서 커널의 백단에서 iptables 커널의 nat filter기능을 통해 룰을 정하고 포워딩 시키는 역할 수행