환경 구성구성 : VPC 1ea, Pub Subnet 3ea, Priv Subnet 3ea, EKS (Worker node 3ea) AWS VPC CNI참고 URL : https://trans.yonghochoi.com/translations/aws_vpc_cni_increase_pods_per_node_limits.ko- K8s CNI는 Container Network Interface로 Kubernetes 환경의 네트워크를 위한 구성이다.이를 통해 다양한 플러그인, 오브젝트간의 통신 같은 네트워크 통신이 이뤄진다. AWS VPC CNI는 VPC Container Network Interface로 Kubernetes의 오브젝트들이 VPC 대역의 IP를 갖을 수 있도록 해주는,플러그인입니다. 파드 내부는..
Cloud/Kubernetes
노드 간 파드 통신 확인 파드 생성 및 확인apiVersion: v1kind: Podmetadata: name: netpod labels: app: netpodspec: nodeName: k8s-s containers: - name: netshoot-pod image: nicolaka/netshoot command: ["tail"] args: ["-f", "/dev/null"] terminationGracePeriodSeconds: 0---apiVersion: v1kind: Podmetadata: name: webpod1 labels: app: webpodspec: nodeName: k8s-w1 containers: - name: container i..
Cilium 이란?Cilium은 eBPF(Berkeley Packet Filter)를 기반으로 구성된 CNI Plugin입니다.Kubernetes 클러스터와 같은 컨테이너 환경을 위해 뛰어난 확장성과 효율적인 네트워크 및 보안 정책을 제공합니다. Cilium eBPF는 추가적인 App 이나 설정 변경 없이 리눅스 커널을 자유롭게 프로그래밍하여 동작 할 수 있습니다.또, Cilium은 iptables를 이용한 Kubernetes 트래픽 라우팅의 단점을 보완하여 네트워크 성능을 높혀줍니다. 일반적인 Linux Network Stack은 Process에서 시스템 콜을 날리면 소캣을 타고 유저 네임스페이스를 통해 네트워크 디바이스로 나갔습니다. 하지만 eBPF는 Kernel에 Sandbox 형태로 설치되기 때문..
동작 소개 : 클라이언트 PC → Istio ingressgateway 파드 → (Gateway, VirtualService + DestinationRule) → Cluster - Gateway : 지정한 인그레스 게이트웨이로부터 트래픽이 인입, 프로토콜 및 포트, Hosts, Proxy 등 설정 가능- VirtualService : 인입 처리할 Hosts 설정, L7 Path 별 라우팅, 목적지에 대한 정책 설정 가능 - Docs- VirtualService 는 DestinationRule 에서 설정된 Subset을 사용하여 트래픽 컨트롤을 할 수 있다.- Routing rules : HTTP의 경우 - Match 필드, Destination(Istio/envoy 에 등록된 대상, Subnet에 Des..
Bookinfo- ProductPage 페이지에서 요청을 받으면, 도서 리뷰를 보여주는 Reviews 서비스와 도서 상세 정보를 보여주는 Details 서비스에 접속- ProductPage는 reviews와 Details 결과를 사용자에게 응답한다.- Reviews 서비스는 v1, v2, v3 세 개의 버전이 있고 v2, v3 버전의 경우 Ratings 서비스에 접소갛여 도서에 대한 5단계 평가를 가져옴- Reviews 서비스의 차이는, v1은 Rating 이없고, v2는 검은색 별로 Ratings 가 표시되며, v3는 색깔이 있는 별로 Ratings 가 표시 실습 시작예제 yaml은 istioctl 설치 시 포함되어 있는 bookinfo 예제입니다.# 모니터링$ watch -d 'kubectl get ..
실습 환경 구성구성 : VPC 1개(퍼블릭 서브넷 2개), EC2 인스턴스 3대 (Ubuntu 22.04 LTS, t3.xlarge - vCPU 4 , Mem 16) , testpc 1대는 t3.smallk3s-w1 54.180.9.71 running k3s-s 43.201.45.35 running k3s-w2 3.38.116.195 runningtestpc 3.36.123.234 running Istio란https://istio.io/latest/docs/overview/what-is-istio/ - 등장 배경 : MSA 환경의 시스템 전체 모니터링의 어려움, 운영 시 시스템 장애나 문제 발생 시 원인과 병목 구간의 찾기 어려움 - 내부망 진입점에 역할을 하는 GW(API Gateway) 경우 모든 ..
Gateway APIgateway api는 k8s에서 트래픽 라우팅을 위해 사용되며, 기존의 Ingress 리소스를 개선하고, 더 유연하게 관리할 수 있는 기능을 제공합니다. 리소스설명GatewayClassGateway의 템플릿 역할. 특정 구현 또는 제공자의 구성을 정의합니다.Gateway클러스터의 엣지에서 트래픽을 수신하고 라우팅하는 방법을 정의합니다.HTTPRouteHTTP 트래픽에 대한 세부적인 라우팅 규칙을 정의합니다.TCPRouteTCP 트래픽을 위한 라우팅 규칙을 정의합니다.TLSRouteTLS 트래픽에 대한 라우팅 규칙을 정의합니다. Gloo Gateway- Cluster 생성kind: ClusterapiVersion: kind.x-k8s.io/v1alpha4nodes:- role: con..
실습 환경- CSP : AWS- OS : Ubuntu 22.04- SW : k3s AWS 실습 환경 배포## KANS 배포 CloudFormation 설치$ curl -O https://s3.ap-northeast-2.amazonaws.com/cloudformation.cloudneta.net/kans/kans-6w.yaml$ aws cloudformation deploy --template-file kans-6w.yaml --stack-name mylab --parameter-overrides KeyName=my-ec2-keypair SgIngressSshCidr=$(curl -s ipinfo.io/ip)/32 --region ap-northeast-2## CloudFormation으로 배포된 인스턴스..
사전 환경 구성이전과 동일하게 실습을 위한 클러스터는 kind를 이용해 배포합니다.kind: ClusterapiVersion: kind.x-k8s.io/v1alpha4featureGates: "InPlacePodVerticalScaling": true #실행 중인 파드의 리소스 요청 및 제한을 변경할 수 있게 합니다. "MultiCIDRServiceAllocator": true #서비스에 대해 여러 CIDR 블록을 사용할 수 있게 합니다.nodes:- role: control-plane labels: mynode: control-plane topology.kubernetes.io/zone: ap-northeast-2a extraPortMappings: #컨테이너 포트를 호스트 포트..
실습 환경은 Kind를 이용해서 진행했습니다. ServicePod 집합과 같은 어블리케이션에 접근 경로나 Service Discovery 제공Pod를 외부 네트워크에 연결하고, pod로의 연결을 로드밸런싱하는 네트워크 오브젝트하나의 Microservice 단위서비스이름.네임스페이스.svc.cluster.local 이라는 FQDN 생성껍데기만 있는 추상적인 객체Kubernetes의 Pod는 Lifecycle 혹은 어떤 이유에 따라 언제든 재시작이 발생할 수 있습니다.Computing 측면에서는 이를 방지하기 위해 Deployment가 그룹으로 Pod를 정의된 숫자만큼 보장하고 있습니다. 그렇다면 Computing resource 측면에서 Deployment가 이를 보장해준다면 Networking 측면에서는..