CKA Study Day 17

김건호·2023년 4월 17일
0

199-209

Switching Routing

네트워크란? 호스트와 호스트를 스위치를 통해연결하는 통로

ip link
ip addr

192.168.1.10 -> 192.168.2.10으로 통신하는 법 -> 라우터 -> 두 네트워크를 연결
192.168.1.1을 가짐

# route
# ip route add 192.168.2.0/24 via 192.168.1.1 -> 모든 시스템에서 설정 해야함

인터넷에 접속을 해야한다면? -> 라우터를 인터넷에 연결 -> 기본 게이트웨이로 사용

ip route add default(0.0.0.0) via 192.168.2.1

라우터 두 개인 경우 (인터넷, 사설)도 있음

리눅스 호스트를 라우터로 설정하는 법

192.168.1.5 <-192.168.1.0 -> (192.168.1.6, 192.168.2.6) <- 192.168.2.0 -> 192.168.2.5

ping 192.168.2.5
--> Network is unreachable
ip route add 192.168.2.0/24 via 192.168.1.6
ip route add 192.168.1.0/24 via 192.168.2.6

패킷은 다음 인터페이스로 전달 되지 않음
cat /proc/sys/net/ipv4/ip_forward에 의해 통제 됨
디폴트는 0 -> 통신 불가 -> 1로 변경해야함 영구설정을 위해 /etc/sysctl.conf 수정

DNS

IP대신 이름으로 기억하기 위해 -> 이름은 서버에서 알 수가 없음 -> /etc/hosts에 추가
host명은 신경쓰지 않음
같은 이름이 두 IP를 가지는 경우 hosts파일 참조
host항목을 중앙에서 관리하기 위해 서버로 옮긴것이 DNS 서버 -> /etc/resolv.conf에 등록하여 서버를 참조하도록 함

/etc/hosts 먼저 참조 -> DNS 참조
/etc/nsswitch.conf에서 순서 변경 가능
files dns 순서로 되어 있음

Domain Names

www.naver.com 과 같은 형태
. (Root) -> .com -> google -> www, maps 서브 도메인

/etc/resolv.conf에 search 도메인 등록해두면 서브도메인으로만으로도 질의 가능

Record Yypes

A : Ipv4
AAAA : Ipv6
CNAME : food.web-server -> eat.web-server 도메인을 다른 도메인으로

nslookup

nslookup www.google.com

dns 서버에 질의하여 도메인에 대한 주소정보를 얻음

CoreDNS

https://github.com/kubernetes/dns/blob/master/docs/specification.md

https://coredns.io/plugins/kubernetes/

Network Namespaces

네트워크 격리 구현을 위해 도커 컨테이너에서 사용
컨테이너 만들때는 격리를 해야함 -> 네임스페이스 사용해서 -> 컨테이너 고유의 인터페이스가 있음

ip netns add red
ip netns exec red ip link
ip -n red link

ARP table도 같은 형태, 라우팅테이블도 같은 형태

네임스페이스는 네트워크 연결이 없고 자체 인터페이스가 없으며 기본 호스트 네트워크를 볼 수 없음

네임스페이스 연결

ip link add veth-red type veth peer name veth-blue
ip link set veth-red netns red
ip link set veth-blue netns blue
ip -n red addr add 192.168.21.1 dev veth-red
ip -n blue addr add 192.168.21.1 dev veth-blue

ip -n red link set veth-red up
ip -n blue link set veth-blue up
ip netns exec red ping .. arp

네임스페이스가 여러개라면 ?

네트워크 만드려면 가상 스위치 생성이 필요함
LINUX BRIDGE, open vSwitch

Docker Networking

1.도커 컨테이너가 네트워크에 연결 되어 있지 않는 상태

docker run --network none nginx

2.호스트의 80으로 통신 가능한 형태

docker run --network host nginx
  1. bridge -> 172.17.0.0의 브릿지 생성
docker run nginx

도커 호스트 설치되면 브릿지라는 사설 네트워크 생성
docker network ls의 bridge와 docker0는 같음
ip link 시 docker0라는 인터페이스 생성

브릿지와 컨테이너 인터페이스가 각각 존재함

포트 포워팅

docker run -p 8080:80 nginx

어떻게? -? iptables에 rule을 추가하여

iptalbes
-t nat
-A DOCLER
-k DMAT
--dport 8080
--to-destination 1

iptables -nvL -t nat에서 도커가 만든 rule확인 가능

CNI

container network interface
컨테이너 환경에서의 네트워크를 하나의 표준으로 코드화
CNI는 플러그인이 어떻게 개발되어야 하는지, 컨테이너 런타임이 어떻게 플러그인을 호출해야 하는지를 정의

어떠한 플러그인에서도 동작 해야함
도커는 CNI를 만들지 않음 -> CNI 지정불가 docker run시
수동으로 브리지를 생성해야함 -> 쿠버네티스도 같은 방법

시험에서 weabe metwprl addon 생성하라고 하면 아래 링크 참조
https://v1-22.docs.kubernetes.io/docs/setup/production-environment/tools/kubeadm/high-availability/#steps-for-the-first-control-plane-node

Cluster Networking

쿠버네티스 클러스터 노드 별로 인터베이스가 있어야함, 맥 어드레스도 -> VM 복제시 주의해아함
6443 포트 개방 해야함 apiserver 포트 kubelet은 10250 스케쥴러 10259 컨트롤러 매니저 10257
워커노드 30000-32767
etcd 2379 -> 다중 마스터 2380 오픈 클라이언트끼리 통신을 위해
--> 열려야하는 포트는 쿠버네티스 공식문서에서 확인 가능
https://kubernetes.io/docs/reference/networking/ports-and-protocols/

profile
Ken, 🔽🔽 거노밥 유튜브(house icon) 🔽🔽

0개의 댓글