Support for service mesh and performance improvements when using the VCN-Native CNI plugin
업데이트 사항
Release Notes - Support for VCN-native pod networking 출시 이후 기능이 업데이드되어 VCN-Native Pod Networking CNI 2.0이 출시 되었습니다.
-
VCN-Native Pod Networking CNI에서 OCI Service Mesh, Istio, Linkerd 같은 Service Mesh 제품을 이제 지원합니다.
- Worker Node의 이미지를 Oracle Linux 7를 사용해야 합니다. (Oracle Linux 8은 지원 예정)
-
VCN-Native Pod Networking CNI 1.0 대비하여 네트워크 성능 향상
단, Worker Node의 버전이 Kubernetes 1.26 이상이어야 합니다.
VCN-Native CNI 2.0에서 Service Mesh 지원
VCN-Native CNI 2.0에서 네트워크 성능 향상
테스트할 경우의 수가 여러가지 있을 수 있지만, 여기에서는 컨테이너 서비스간의 호출하는 경우에서, 두 컨테이너 Pod가 같은 Worker Node에 있을 때랑 서로 다른 Worker Node 상에 있는 CNI간 성능을 비교해 봅니다.
Flannel CNI 사용시
-
Flannel CNI를 사용하는 OKE Cluster를 준비합니다.
-
테스트용 nginx 컨테이너를 설치합니다.
kubectl create deploy nginx --image=nginx kubectl scale deploy nginx --replicas=3 kubectl run ol1 --image=oraclelinux:8 --command -- tail -f /dev/null
-
설치 결과
$ kubectl get pod -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-76d6c9b8c-l4tpk 1/1 Running 0 25s 10.244.1.7 10.0.10.134 <none> <none> nginx-76d6c9b8c-rvcln 1/1 Running 0 28s 10.244.0.4 10.0.10.52 <none> <none> nginx-76d6c9b8c-s67x2 1/1 Running 0 25s 10.244.0.134 10.0.10.244 <none> <none> ol1 1/1 Running 0 19s 10.244.0.6 10.0.10.52 <none> <none>
-
같은 Worker Node에 있는 Pod간 테스트 - 같은 Node(10.0.10.52)에 있는 Pod(10.244.0.6) -> Pod(10.244.0.4)간 테스트
$ kubectl exec -it ol1 -- ping -c 10 10.244.0.4 PING 10.244.0.4 (10.244.0.4) 56(84) bytes of data. 64 bytes from 10.244.0.4: icmp_seq=1 ttl=64 time=0.081 ms ... 64 bytes from 10.244.0.4: icmp_seq=10 ttl=64 time=0.065 ms --- 10.244.0.4 ping statistics --- 10 packets transmitted, 10 received, 0% packet loss, time 9227ms rtt min/avg/max/mdev = 0.065/0.069/0.081/0.007 ms
-
다른 Worker Node에 있는 Pod간 테스트 - Pod(10.244.0.6) on Node(10.0.10.52) -> Pod(10.244.0.134) on Node(10.0.10.244)
$ kubectl exec -it ol1 -- ping -c 10 10.244.0.134 PING 10.244.0.134 (10.244.0.134) 56(84) bytes of data. 64 bytes from 10.244.0.134: icmp_seq=1 ttl=62 time=0.623 ms ... 64 bytes from 10.244.0.134: icmp_seq=10 ttl=62 time=0.572 ms --- 10.244.0.134 ping statistics --- 10 packets transmitted, 10 received, 0% packet loss, time 9229ms rtt min/avg/max/mdev = 0.461/0.543/0.623/0.052 ms
VCN-Native CNI 2.0 사용시
-
VCN-Native CNI 2.0 사용하는 OKE Cluster v1.26 버전, Node Pool 이미지 Oracle Linux 7를 준비합니다.
-
테스트용 nginx 컨테이너를 설치합니다.
kubectl create deploy nginx --image=nginx kubectl scale deploy nginx --replicas=3 kubectl run ol1 --image=oraclelinux:8 --command -- tail -f /dev/null
-
설치 결과
$ kubectl get pod -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-748c667d99-cddnv 1/1 Running 0 68m 10.0.40.26 10.0.10.213 <none> <none> nginx-748c667d99-prmcb 1/1 Running 0 68m 10.0.40.152 10.0.10.93 <none> <none> nginx-748c667d99-rf47h 1/1 Running 0 68m 10.0.40.207 10.0.10.156 <none> <none> ol1 1/1 Running 0 36m 10.0.40.227 10.0.10.93 <none> <none>
-
같은 Worker Node에 있는 Pod간 테스트 - 같은 Node(10.0.10.93)에 있는 Pod(10.0.40.227) -> Pod(10.0.40.152)간 테스트
$ kubectl exec -it ol1 -- ping -c 10 10.0.40.152 PING 10.0.40.152 (10.0.40.152) 56(84) bytes of data. 64 bytes from 10.0.40.152: icmp_seq=1 ttl=63 time=0.084 ms ... 64 bytes from 10.0.40.152: icmp_seq=10 ttl=63 time=0.057 ms --- 10.0.40.152 ping statistics --- 10 packets transmitted, 10 received, 0% packet loss, time 9241ms rtt min/avg/max/mdev = 0.039/0.060/0.084/0.014 ms
-
다른 Worker Node에 있는 Pod간 테스트 - Pod(10.0.40.227) on Node(10.0.10.93) -> Pod(10.0.40.207) on Node(10.0.10.156)
$ kubectl exec -it ol1 -- ping -c 10 10.0.40.207 PING 10.0.40.207 (10.0.40.207) 56(84) bytes of data. 64 bytes from 10.0.40.207: icmp_seq=1 ttl=62 time=0.355 ms ... 64 bytes from 10.0.40.207: icmp_seq=10 ttl=62 time=0.351 ms --- 10.0.40.207 ping statistics --- 10 packets transmitted, 10 received, 0% packet loss, time 9247ms rtt min/avg/max/mdev = 0.304/0.352/0.373/0.028 ms
-
테스트 결과 - 10번 단순 테스트라 절대적인 성능 결과가 아닌 참고치로 보시기 바랍니다.
Flannel CNI VCN-Native 2.0 CNI 같은 Worker Node에 있는 Pod간 평균 Ping 속도 0.069 ms 0.060 ms 다른 Worker Node에 있는 Pod간 평균 Ping 속도 0.543 ms 0.352 ms
이 글은 개인으로서, 개인의 시간을 할애하여 작성된 글입니다. 글의 내용에 오류가 있을 수 있으며, 글 속의 의견은 개인적인 의견입니다.