Certified Kubernetes Administrator (CKA) with Practice Tests (강의 링크, 레퍼런스 노트)
ip link
: 인터페이스 확인 명령어ip addr add [호스트 ip 주소] dev eth0
: 각 시스템에 ip 주소 할당ping [호스트 ip 주소]
: 통신 가능 여부 확인route
: 라우팅 테이블 확인ip route add [스위치 ip 주소] via [라우터 게이트웨이 ip 주소]
: 다른 네트워크 연결, 라우팅 테이블에 해당 내용 작성됨echo 1 > /proc/sys/net/ipv4/ip_forward
: 기본값 0ip route add default via [라우터 게이트웨이 ip 주소]
ip link
: 호스트의 인터페이스를 나열하고 수정ip addr
: 인터페이스에 할당된 ip 주소 확인ip addr add 192.168.1.10/24 dev eth0
: 인터페이스에 ip 주소 할당ip route
혹은 route
: 라우팅 테이블 확인ip route add 192.168.1.0/24 via 192.168.2.1
: 라우팅 테이블에 엔트리 추가cat /proc/sys/net/ipv4/ip_forward
: 라우터처럼 설정된 호스트가 있을 때 ip 포워딩이 가능한지 여부 확인 (0일 경우 불가능)nslookup www.google.com
: DNS 서버에서 호스트 이름을 검색할 때 사용dig www.google.com
: DNS 서버에서 호스트 이름 검색, 더욱 자세한 내용 조회ps aux
)ip nets add [네임스페이스명]
: 네트워크 네임스페이스 생성ip netns exec [네임스페이스명] ip link
: 네임스페이스 내에서 인터페이스 정보 확인ip -n [네임스페이스명] ip link
또한 동일한 명령어ip netns exec [네임스페이스명] arp/route
: 네임스페이스 내에서 ARP 테이블, 라우팅 테이블 정보 확인ip link add [인터페이스명1] type veth peer name [인터페이스명2]
: 두 개의 인터페이스 연결ip link set [인터페이스명] netns [네임스페이스명]
: 인터페이스를 각각 해당되는 네임스페이스에 연결ip -n [네임스페이스명] addr add [ip주소] dev [인터페이스명]
: ip 주소 할당ip -n [네임스페이스명] link set [인터페이스명] up
: 링크 업, 네임스페이스가 서로 통신 가능ip -n [네임스페이스명] link del [인터페이스명]
: 브릿지를 활용할 때 케이블 필요없어 삭제ip link add [브릿지명] type bridge
ip link set dev [브릿지명] up
ip link add [인터페이스명1] type veth peer name [브릿지 인터페이스명1]
: 네임스페이스마다 지정ip link set [인터페이스명] netns [네임스페이스명]
ip link set [브릿지 인터페이스명] master [브릿지명]
ip -n [네임스페이스명] addr add [ip주소] dev [인터페이스명]
ip -n [네임스페이스명] link set [인터페이스명] up
ip addr add [브릿지 ip주소] dev [브릿지명]
: 호스트와 모든 네임스페이스 연결 (브릿지 이용)ip netns exec [네임스페이스명] ip route add [외부 LAN ip 주소] via [브릿지와 로컬 호스트 인터페이스 ip 주소]
iptables -t nat -A POSTROUTING -s [브릿지 ip 주소] -j MASQUERADE
ip netns exec [네임스페이스명] ip route add default via [브릿지와 로컬 호스트 인터페이스 ip 주소]
iptables -t nat -A PREROUTING --dport 80 --to-destination [네임스페이스 ip주소:80] -j DNAT
docker run --network none [이름]
docker run --network host [이름]
docker run [이름]
docker network ls
: bridge라는 이름으로 조회됨ip link
: docker0이라는 이름으로 조회됨ip addr
)ip netns
: 도커는 컨테이너 실행 시 네트워크 네임스페이스를 생성docker inspect [컨테이너 ID]
: 네트워크 네임스페이스 확인 가능ip link
: 브릿지의 인터페이스 엔드 확인 가능ip -n [네트워크 네임스페이스명] link
: 네트워크 네임스페이스의 엔드 확인 가능docker run -p 8080:80 [컨테이너명]
: 도커 호스트 8080과 컨테이너의 포트(80)를 연결curl http://[도커 호스트 IP]:8080
: 외부 사용자 또한 컨테이너의 어플리케이션 접근 가능bridge add [컨테이너 ID] [네임스페이스명]
docker run --network=cni-bridge [컨테이너명]
: 네트워크 플러그인 이런 방식으로 사용 불가docker run --network=none [컨테이너명]
후 수동으로 bridge add [컨테이너ID] [네임스페이스명]
진행해줘야 함ip link
ip address
혹은 ip addr
혹은 ip a
ip address show type bridge
ip addr add [ip주소] dev [인터페이스]
ip route
혹은 route
netstat
netstat -npl | grep -i scheduler
ip link add v-net-0 type bridge
ip link set dev v-net-0 up
ip addr add 10.244.1.1/24 dev v-net-0
ip addr add 10.244.2.1/24 dev v-net-0
ip addr add 10.244.3.1/24 dev v-net-0
ip link add ...
: veth 쌍 생성 ip link set ...
: veth를 각각의 인터페이스에 붙이기ip -n [네임스페이스] addr add ...
: ip 주소 할당ip -n [네임스페이스] route add ...
: ip 주소 할당ip -n [네임스페이스] link set ...
: 인터페이스 활성화node1$ ip route add 10.244.2.2 via 192.168.1.12
node1$ ip route add 10.244.3.2 via 192.168.1.13
node2$ ip route add 10.244.1.2 via 192.168.1.11
node2$ ip route add 10.244.3.2 via 192.168.1.13
ps -aux | grep kubelet
에서도 확인 가능kubectl apply -f https://github.com/weaveworks/weave/releases/download/v2.8.1/weave-daemonset-k8s.yaml
kubectl get pods -n kube-system
kubectl logs [pod명] weave -n kube-system
kubectl run [pod명] --image=[image명] --dry-run=client -o yaml > [파일명].yaml
처럼 yaml 파일 생성kubectl apply -f [파일명].yaml
으로 pod 생성kubectl exec [pod명] -- ip route
로 기본 게이트웨이 확인 가능kube-proxy --proxy-mode [userspace | iptables | ipvs]
kubectl logs [pod명] -n kube-system
iptables -L -t nat | grep [서비스명]
kube-api-server --service-cluster-ip-range ipNet
ps aux | grep kube-api-server
cd /etc/kubernetes/manifests/kube-api-server.yaml
kubectl get all --all-namespaces
curl http://web-service
curl http://web-service.apps
curl http://web-service.apps.svc
curl http://web-service.apps.svc.cluster.local
kubectl create ingress [ingress명] --rule="host/path=service:port"
kubectl get svc [서비스명]
kubectl create ingress [ingress명] -n [네임스페이스명] --rule="[path]=[서비스명]:[서비스포트]"
kubectl create ingress ingress-pay -n critical-space --rule="/pay=pay-service:8282"