인프런 커뮤니티 질문&답변

박형준님의 프로필 이미지

작성한 질문수

그림으로 배우는 쿠버네티스(v1.30) - {{ x86-64, arm64 }}

9.1.효과적인 애플리케이션 구성 및 관리 개요

8.6 NetworkPolicy에 대한 질문

작성

·

240

0

안녕하세요 강사님,

8.6 네트워크 정책에 관한 강의를 듣다가 질문이 있어서 글을 남깁니다.

3-2-NetworkPolicy-ipBlock.yaml 파일을 apply 시켰을 때 기대되는 동작은

default 네임스페이스의 모든 파드들은 172.16.0.0/16 대역의 수신 트래픽만 허용, 172.16.0.0/17 대역의 송신 트래픽만 허용.

제가 궁금한 것은 해당 네트워크 정책을 apply 시킨 후 호스트 상에서 pod에 ping을 날렸는데 답변이 잘 온다는 점이었습니다. 현재 호스트의 ip 대역은 네트워크 정책을 만족하지 못함에도 말이죠.

혹시 호스트는 네트워크 정책을 bypass 할 수 있나? 해서 뒤의 실습에서도 테스트 해봤는데 4-2-NetworkPolicy-namespaceSelector-dev2.yaml 의 경우에는 호스트에서 ping을 날려도 답변을 받지 못하더군요. 아마 호스트는 dev2 네임스페이스가 아니라고 인식했기 때문이겠죠.

 

그러면 결론적으로 왜 3-2 실습의 경우 호스트의 request를 허락해주었을까? 가 궁금합니다. 두 가지 가능성이 있을 거 같아요.

  1. 제가 알고 있는 호스트의 ip 192.168.1.10이 아니다. 이는 가상의 ip 이었다.

  2. 쿠버네티스의 네트워크정책 중 ipBlock 태그에 한해서만 호스트는 이를 무시하고 요청을 할 수 있다.

  3. 그 외

긴 질문 읽어주셔서 감사합니다. 시간 날 때 답변주시면 감사하겠습니다!

 

 

답변 1

0

조훈(Hoon Jo)님의 프로필 이미지
조훈(Hoon Jo)
지식공유자

안녕하세요

좋은 질문에 감사드립니다.

위의 내용을 기초에 보면, 호스트를 m-k8s로 의도하여 적어주신 것 같습니다.

네트워크 적으로 볼 때, 다양한 경로가 있는 경우에 최적의 경로로 (가능한 또는 의도적) routing을 잡혀 있습니다.

그렇다 보니 destination과 source를 시스템에서 정하는데, 현재에는 reachabletunl0 인터페이스를 source로 사용하여 도달하게 되는 것입니다.

해당 부분에 대해서 더 궁금하신 부분이 있다면 네트워크 쪽으로 더 학습해 보시면 아마 효과적으로 이해하실 수 있을 것 같습니다.

-=-=-=-=-=-

[root@m-k8s 8.6]# ip a

1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

valid_lft forever preferred_lft forever

2: eth0: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000

link/ether 08:00:27:0f:f7:2d brd ff:ff:ff:ff:ff:ff

inet 10.0.2.15/24 brd 10.0.2.255 scope global noprefixroute dynamic eth0

valid_lft 63754sec preferred_lft 63754sec

3: eth1: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000

link/ether 08:00:27:4f:0f:55 brd ff:ff:ff:ff:ff:ff

inet 192.168.1.10/24 brd 192.168.1.255 scope global noprefixroute eth1

valid_lft forever preferred_lft forever

4: docker0: mtu 1500 qdisc noqueue state DOWN group default

link/ether 02:42:5c:74:e6:13 brd ff:ff:ff:ff:ff:ff

inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0

valid_lft forever preferred_lft forever

5: tunl0@NONE: mtu 1480 qdisc noqueue state UNKNOWN group default qlen 1000

link/ipip 0.0.0.0 brd 0.0.0.0

inet 172.16.171.64/32 scope global tunl0

valid_lft forever preferred_lft forever

6: cali172770a77a7@if4: mtu 1480 qdisc noqueue state UP group default

link/ether ee:ee:ee:ee:ee:ee brd ff:ff:ff:ff:ff:ff link-netnsid 0

7: calif9524b144f3@if4: mtu 1480 qdisc noqueue state UP group default

link/ether ee:ee:ee:ee:ee:ee brd ff:ff:ff:ff:ff:ff link-netnsid 1

 

[root@m-k8s 8.6]# k get po -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
deploy-ipblock-5c59b69d84-nq64v 1/1 Running 0 4m47s 172.16.132.6 w3-k8s
deploy-ipblock-5c59b69d84-pwfzf 1/1 Running 0 4m47s 172.16.221.139 w1-k8s
deploy-ipblock-5c59b69d84-w29qp 1/1 Running 0 4m47s 172.16.103.133 w2-k8s
important-front-84d9fd49ff-w7f24 1/1 Running 0 3d17h 172.16.103.131 w2-k8s
net 1/1 Running 0 10m 172.16.132.4 w3-k8s
nfs-client-provisioner-7596fb9c9c-frlnb 1/1 Running 1 (3d18h ago) 3d19h 172.16.221.136 w1-k8s

 

[root@m-k8s 8.6]# curl --interface eth1 172.16.132.6
^C
[root@m-k8s 8.6]# curl --interface eth0 172.16.132.6
^C
[root@m-k8s 8.6]# curl --interface tunl0 172.16.132.6
Q644+Ue9mwH3P3f5/d7n6/3/3+OEJ/4xCc+8YQYtQuJwB0kIp+JrzUTB7iJuweBf4baTlJ5oCqw11C/JHp+tnqBb1ngT4z8WgReTUGbWCBGq0qvKRFcHf4eT/ZFBKoLvMBGIbhiYkaQIjcAfLAK+D8z9YhjxMgsVUGc84+gyx9AYD0khXcMfLCmUBL68HMZ+PnHxyFw3Uwi8B8hgJYh7j4c7c8P
<snipped>