본문 바로가기

분류 전체보기221

[Error] no match for platform in manifest: not found 문제컨테이너를 배포하였는데, 다음과 같이 no match for platform 에러가 발생한다면, 당신이 사용하는 컨테이너 이미지가 실제 컨테이너 환경의 호스트의 아키텍처와 일치하지 않기 때문에 발생하는 에러이다. Warning Failed 9s (x3 over 55s) kubelet Failed to pull image "kingdom0220/version-patch:v1": rpc error: code = NotFound desc = failed to pull and unpack image "docker.io/kingdom0220/version-patch:v1": no match for platform in manifest: not found Warning Fa.. 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.