본문 바로가기

프로젝트&&스터디/KANS2기14

[KANS-9주차] Topology Aware Routing 해당 내용은 kubernetes 1.23 beta에서 시행된 내용입니다.1.27 이전에는 Topology Aware Hints라는 내용으로 잘 알려져있습니다. kubernetes 공식문서에서 확인할 수 있습니다.기능가장 활용도가 높은 곳은 아무래도 multi-zone을 사용하는 환경에서 매우 좋습니다. 해당 기능의 목적은 해당 존에서 발생한 트래픽은 해당 존에서 유지되는 것을 목표로 합니다.  활용도비용적인 측면에서도 다른 AZ에 대해서 통신을 하지 않기 때문에 많이 절약할 수 있고 네트워크 홉도 줄 일 수 있게 됩니다. 아무래도 각 AZ 별로 엔드포인트가 많아야 효용이 높습니다. 활용 방법service.kubernetes.io/topology-mode=auto 라는 annotation을 service에.. 2024. 10. 31.
[KANS-9주차] Ingress와 Gateway API Ingress 소개Ingress는 클러스터 내부의 서비스(Cluster IP, NodePort 등)를 외부로 노출시켜 Web Proxy 역할을 하는 쿠버네티스 오브젝트이다.기존에 NodePort는 노드 포트를 노출해야하는 단점이 있으므로 대부분 LoadBalancer 타입을 쓸 것이다.다만 문제는 LoadBalancer의 경우 L4 계층에서 동작하므로 TCP/UDP와 같은 프로토콜을 읽을 수 있으며, HTTP와 같은 프로토콜의 정보를 세부적으로 읽을 수 없다. 그래서 L7에서 동작하는 Ingress를 통해서 외부에서 들어오는 HTTP 정보도 읽을 수 있도록 설정할 수 있다. 외부 로드 밸런서AWS LoadBalancer Controller (Ingress Controller)가 Ingress 규칙을 파악.. 2024. 10. 31.
[KANS-9주차] AWS의 로드밸런서 모드 정리 해당 블로그 글을 참조해서 작성한다. AWS LoadBalancer Controller의 필요성과 기능AWS 로드밸런서 컨트롤러를 통해서 사용자는 좀 더 쉽게 EKS에서 service 타입으로 외부에 서비스를 노출할 수 있다.  특히 자동으로 대상 그룹에 등록할 수 있는 TargetGroupBinding이라는 CRD 항목도 제공해서 자동으로 Pod의 IP를 대상그룹으로 등록해주고 심지어는 IP가 바뀔때마다 자동으로 배포해주고 health check도 진행한다는 점에서 매우 간편하고 운영 효율성이 높아지게 된다.뿐만아니라 AWS의 WAF 등 다양한 서비스와 결합이 가능하기 때문에 매우 좋다.로드밸런서 컨트롤러는 타겟 유형에 따라서 다음과 같이 2가지 모드를 지원하고 있다. Instance 모드Instanc.. 2024. 10. 30.
[KANS-9주차] VPC CNI와 EKS AWS VPC CNICNI는 Container Network Interface로 컨테이너 간의 소통에 반드시 필요한 플러그인이다. 쿠버네티스가 컨테이너 오케스트레이션 툴이기 때문에 사실상 CNI가 없다면 쿠버네티스 네트워크가 없다는 것과 동일한 말이다.그 중 오늘은 AWS VPC CNI에 대해서 작성해본다. AWS에서 제공하는 플러그인으로 CNI인데 컨테이너가 VPC 내부로 편입할 수 있도록 네트워킹을 구성해주는 플러그인이다. 이를 이용하면 파드와 노드의 IP 대역을 같도록 맞춰준다. 즉 같은 네트워크 대역대에서 통신하므로 원본 패킷을 그대로 유지하고 네트워크 홉을 줄일 수 있다는 장점이 있다.  공식문서에서도 확인해보기 바란다. Amazon VPC CNI - Amazon EKSThe most frequ.. 2024. 10. 28.
[KANS-3기] 여러기능 (Network Policy/Bandwidth Manager/L2 Announcements) Network PolicyCilium은 L3, L4 뿐 아니라 Envoy를 통해서 L7 까지 통제를 할 수가 있다. 아무래도 Envoy를 사용하기 때문에 다양한 기능이 가능한 것 같다. Cilium은 3가지 기반의 보안 레벨을 제공한다. ID(Identity-Based)기반 (L3보안)아래 그림에서 role=frontend라고 라벨을 가지고 오는 통신은 role=backend라는 라벨이 붙은 리소스에 연결을 허용한다. 해당 라벨을 ID를 말한다고 볼 수 있다. 이에 해당하는 yaml은 다음과 같다.apiVersion: "cilium.io/v2"kind: CiliumNetworkPolicymetadata: name: "l3-rule"spec: endpointSelector: matchLabels:.. 2024. 10. 27.
[KANS-3기] Cilium CNI - 배포 / Hubble / 통신과정확인 배포배포방식은 공식문서에 자세하게 나와있으며 다양한 방식으로 배포할 수 있습니다.helm repo add cilium https://helm.cilium.io/helm repo update  실습 배포 helm 명령어helm install cilium cilium/cilium --version 1.16.3 --namespace kube-system \--set k8sServiceHost=192.168.10.10 --set k8sServicePort=6443 --set debug.enabled=true \--set rollOutCiliumPods=true --set routingMode=native --set autoDirectNodeRoutes=true \--set bpf.masquerade=true -.. 2024. 10. 26.