Home

0

쿠버네티스 - Resource 제한

목차 Post not found: k8s/namespace Post not found: k8s/ingress Post not found: k8s/deployment Post not found: k8s/replicaset Post not found: k8s/node Post not found: k8s/pod ResourcePod의 spec에서 resources 필드를 통해 리소스를 제한할 수 있습니다. resources 필드는 limits 와 requests 로 구성됩니다. limits는 Pod가 사용할 수 있는 최대 리소스 양을 설정하고, requests는 Pod가 최소한으로 필요로 하는 리소스 양을 설정합니다. apiVersion: v1kind: Podmetadata: name: my-podspec: containers: - name: my-container image: nginx resources: limits: cpu: "1" memory: "512Mi" requests: cpu: "500m" memory: "256Mi"

0

EKS - EBS CSI Driver 설치

목차 EKS - Cluster Autoscaler EKS - EFS CSI Driver 설치 EKS - EBS CSI Driver 설치 EKS - ALB Controller 를 활용한 NLB 생성 EKS - ALB Controller 설치 EKS - Cluster Access 문제 EKS - NodeGroup 생성 EKS - eksctl 로 클러스터 생성 및 삭제 EKS (Elastic Kubernetes Service) 참고 https://aws.amazon.com/ko/blogs/tech/persistent-storage-for-kubernetes/ EBS CSI Driver 설치를 위한 EKS 내 Service Account 생성eksctl create iamserviceaccount \ --name ebs-csi-controller-sa \ --namespace kube-system \ --cluster <Cluste 이름> \ --attach-policy-arn arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy \ --approve \ --role-only \ --role-name AmazonEKS_EBS_CSI_DriverRole EBS CSI Driver 설치aws eks describe-addon-versions --addon-name aws-ebs-csi-driver eksctl create addon \ --name aws-ebs-csi-driver \ --cluster <Cluste 이름> \ --service-account-role-arn arn:aws:iam::<AWS 계정 ID>:role/AmazonEKS_EBS_CSI_DriverRole \ --force

0

EKS - ALB Controller 를 활용한 NLB 생성

목차 EKS - Cluster Autoscaler EKS - EFS CSI Driver 설치 EKS - EBS CSI Driver 설치 EKS - ALB Controller 를 활용한 NLB 생성 EKS - ALB Controller 설치 EKS - Cluster Access 문제 EKS - NodeGroup 생성 EKS - eksctl 로 클러스터 생성 및 삭제 EKS (Elastic Kubernetes Service) 참고 https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/network-load-balancing.html apiVersion: v1kind: Servicemetadata: name: nlb-sample-service namespace: nlb-sample-app annotations: service.beta.kubernetes.io/aws-load-balancer-type: external service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: ip service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing service.beta.kubernetes.io/aws-load-balancer-name: skcc-prd-vitality-dx-nlb-ftp service.beta.kubernetes.io/subnets: <Public Subnet1 ID>, <Public Subnet2 ID>spec: ports: - port: 80 targetPort: 80 protocol: TCP type: LoadBalancer selector: app: nginx apiVersion: apps/v1kind: Deploymentmetadata: name: nlb-sample-app namespace: nlb-sample-appspec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: public.ecr.aws/nginx/nginx:1.21 ports: - name: tcp containerPort: 80

0

EKS - ALB Controller 설치

목차 EKS - Cluster Autoscaler EKS - EFS CSI Driver 설치 EKS - EBS CSI Driver 설치 EKS - ALB Controller 를 활용한 NLB 생성 EKS - ALB Controller 설치 EKS - Cluster Access 문제 EKS - NodeGroup 생성 EKS - eksctl 로 클러스터 생성 및 삭제 EKS (Elastic Kubernetes Service) 참고 https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/aws-load-balancer-controller.html IAM policy & role 생성curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.4.7/docs/install/iam_policy.json aws iam create-policy \ --policy-name AWSLoadBalancerControllerIAMPolicy \ --policy-document file://iam_policy.json ServiceAccount 생성eksctl create iamserviceaccount \ --cluster=my-cluster \ --namespace=kube-system \ --name=aws-load-balancer-controller \ # 원하는 Service Account 이름으로 변경해도 된다 --role-name AmazonEKSLoadBalancerControllerRole \ --attach-policy-arn=arn:aws:iam::111122223333:policy/AWSLoadBalancerControllerIAMPolicy \ --approve

0

EKS - Cluster Access 문제

목차 EKS - Cluster Autoscaler EKS - EFS CSI Driver 설치 EKS - EBS CSI Driver 설치 EKS - ALB Controller 를 활용한 NLB 생성 EKS - ALB Controller 설치 EKS - Cluster Access 문제 EKS - NodeGroup 생성 EKS - eksctl 로 클러스터 생성 및 삭제 EKS (Elastic Kubernetes Service) Error 현재 사용자 또는 역할이 이 EKS Cluster 에 있는 Kubenetes 객체에 엑세스 할 수 없습니다.EKS Dashboard 에서 다음과 같이 문구가 뜨면서 Kubernetes 객체에 정상적으로 Access 하지 못하는 문제가 있다. 다음과 같이 에러가 발생하는 이유는 생성한 클러스터 내부 ConfigMap의 aws-auth에 현재 사용자 또는 역할이 없어 AWS Console에서 확인이 안되는 것이다. 1. ARN 확인 2. ConfigMap 수정다음 명령어를 통해 aws-auth ConfigMap 에 접근해 mapUsers 를 추가 해주도록 하자.

0

EKS - NodeGroup 생성

목차 EKS - Cluster Autoscaler EKS - EFS CSI Driver 설치 EKS - EBS CSI Driver 설치 EKS - ALB Controller 를 활용한 NLB 생성 EKS - ALB Controller 설치 EKS - Cluster Access 문제 EKS - NodeGroup 생성 EKS - eksctl 로 클러스터 생성 및 삭제 EKS (Elastic Kubernetes Service) 참고 UserData 생성 https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/launch-templates.html#launch-template-custom-ami https://eksctl.io/usage/managing-nodegroups/ https://kim-dragon.tistory.com/54 1. LauchTemplate 생성1. UserData 생성을 위한 EKS Cluster 정보 확인aws eks describe-cluster 명령어를 이용해 필요한 EKS 클러스터의 정보를 가져오도록 한다. 클러스터 Certificate Authority 확인 aws eks describe-cluster \ --query "cluster.certificateAuthority.data" \ --output text \ --name [클러스터 이름] \ --region [지역] \ --profile [aws-profile]

0

쿠버네티스 - 토폴로지 인지 힌트 (Topology Aware Hint)

목차 Post not found: k8s/namespace Post not found: k8s/ingress Post not found: k8s/deployment Post not found: k8s/replicaset Post not found: k8s/node Post not found: k8s/pod 참고 https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/kubernetes-versions.html https://kubernetes.io/ko/docs/concepts/services-networking/topology-aware-hints/ https://tetrate.io/blog/minimizing-cross-zone-traffic-charges-with-istio/ 토폴로지 인지 힌트 (Topology Aware Hint)쿠버네티스 클러스터가 멀티-존(multi-zone) 환경에 배포되는 일이 점점 많아지고 있다. 토폴로지 인지 힌트 는 트래픽이 발생한 존 내에서 트래픽을 유지하도록 처리하는 메커니즘을 제공한다. 이러한 개념은 보통 “토폴로지 인지 라우팅”이라고 부른다. 서비스의 엔드포인트를 계산할 때, 엔드포인트슬라이스 컨트롤러는 각 엔드포인트의 토폴로지(지역(region) 및 존)를 고려하여, 엔드포인트가 특정 존에 할당되도록 힌트 필드를 채운다. 그러면 kube-proxy와 같은 클러스터 구성 요소는 해당 힌트를 인식하고, (토폴로지 상 가까운 엔드포인트를 사용하도록) 트래픽 라우팅 구성에 활용한다. 토폴로지 인지 힌트(Topology Aware Hints) 는 클라이언트가 엔드포인트를 어떻게 사용해야 하는지에 대한 제안을 포함시킴으로써 토폴로지 인지 라우팅을 가능하게 한다. 이러한 접근은 엔드포인트슬라이스(EndpointSlice) 및 엔드포인트(Endpoint) 오브젝트의 소비자(consumer)가 이용할 수 있는 메타데이터를 추가하며, 이를 통해 해당 네트워크 엔드포인트로의 트래픽이 근원지에 더 가깝게 라우트될 수 있다. 비용을 줄이거나 네트워크 성능을 높이기 위해, 인접성을 고려하여 트래픽을 라우트할 수 있다.

0

Istio - 토폴로지 인지 힌트

목차 Post not found: k8s/namespace Post not found: k8s/ingress Post not found: k8s/deployment Post not found: k8s/replicaset Post not found: k8s/node Post not found: k8s/pod 참고 https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/kubernetes-versions.html https://kubernetes.io/ko/docs/concepts/services-networking/topology-aware-hints/ https://tetrate.io/blog/minimizing-cross-zone-traffic-charges-with-istio/ 쿠버네티스 Node Zone 확인kubectl get nodes -L topology.kubernetes.io/zone Istio 에 토폴로지 인지 힌트 추가apiVersion: v1kind: Servicemetadata: annotations: # topology-aware-hints 추가 service.kubernetes.io/topology-aware-hints: auto name: istiod namespace: istio-system

0

쿠버네티스 - Namespace

목차 쿠버네티스 - Namespace 쿠버네티스 - Ingress Post not found: k8s/deployment/deployment Post not found: k8s/replicaset/replicaset 쿠버네티스 - Node 쿠버네티스 - Pod Post not found: k8s/k8s Namespace 란? 쿠번네티스 Cluster 들을 논리적으로 나누기 위한 수단. Namespace 를 이용하면 Pod, Service, Volumn 과 같은 다양한 리소스를 분리하고 격리할 수 있다. Namespace 생성kubectl create namespace your-namespace-name apiVersion: v1kind: Namespacemetadata: name: [Namespace 이름] kubectl apply -f namespace.yaml

0

쿠버네티스 - Ingress

목차 쿠버네티스 - Namespace 쿠버네티스 - Ingress Post not found: k8s/deployment/deployment Post not found: k8s/replicaset/replicaset 쿠버네티스 - Node 쿠버네티스 - Pod Post not found: k8s/k8s Ingress