728x90

Kubernetes 19

NVIDIA device plugin for Kubernetes

NVIDIA device plugin for Kubernetes kubernetes 환경에서 GPU사용시 NVIDIA device plugin daemonset을 설치해서 사용해야합니다. EKS에서는 EKS AMI를 참고해서 x86 accelerated AMI를 사용해야합니다. NVIDIA device plugin daemonset은 머신에 GPU가 없으면 실행되지않으니, Taints/Tolerations/Affinity을 사용하여 GPU머신에만 실행되도록 설정해야합니다. deployment, statefulset 정의시 resource에 아래의 코드처럼 GPU갯수를 지정해야합니다. resources: limits: nvidia.com/gpu: 1 Install helm을 사용하여 설치합니다. $ hel..

Kubernetes 2022.09.29

KEDA - Kubernetes Event-driven Autoscaling

KEDA - Kubernetes Event-driven Autoscaling 이벤트 기반 오토스케일링을 지원하는 애드온입니다. 다양한 이벤트 스케일러를 활용하여 kubernetes의 HPA를 대신하여 사용할 수 있습니다. KEDA 사용 시 HPA를 ScaledObject로 선언하여 사용해야합니다. ScaledObject를 선언하면 내부적으로 HPA를 생성합니다. CPU, Memory, Cron, AWS SQS 등 다양한 스케일러를 사용할 수 있습니다. prometheus 및 datadog을 지원하여, 모니터링 메트릭을 활용하여 스케일아웃이 가능합니다. Install helm을 사용하여 설치합니다. $ helm repo add kedacore https://kedacore.github.io/charts $..

Kubernetes 2022.09.28

NodeLocal DNSCache - CoreDNS 부하줄이기

NodeLocal DNSCache kubernetes cluster에서는 DNS 질의를 모두 CoreDNS를 사용합니다. 그러므로 CoreDNS에 부하가 발행할 수 있습니다. CoreDNS에 부하가 발생하면, DNS 질의 실패로 서비스에 장애가 발생할 수 있고, AWS에서는 DNS Hard Limit 제한에 걸릴 수 있으니 조심해야 합니다. NodeLocal DNSCache 데몬셋을 설치하면 DNS 성능 향상 및 CoreDNS에 부하를 줄일 수 있습니다. Install helm을 사용하여 설치합니다. $ helm repo add deliveryhero https://charts.deliveryhero.io/ $ helm repo update $ helm install node-local-dns -n ku..

Kubernetes 2022.09.26

Amazon EFS CSI Driver

Amazon EFS CSI Driver kubernetes에서 AWS EFS 사용을 위해 Amazon EFS CSI Driver 설치해야 합니다. efs-csi-node daemonset과 efs-csi-controller deployment로 구성되어있습니다. Install helm을 사용하여 설치합니다. AWS의 IAM Role을 생성하고, policy 를 참고하여 권한 설정을 해야 합니다. # values.yaml replicaCount: 3 controller: serviceAccount: create: true annotations: eks.amazonaws.com/role-arn: arn:aws:iam::${ACCOUNT_ID}:role/efs-csi-controller node: servic..

Kubernetes 2022.09.23

Kubernetes RBAC 알아보기

Kubernetes RBAC 알아보기 kubernetes의 권한 설정은 RBAC 방식으로 설정할 수 있습니다. 자세한 설명은 공식문서를 참고해주세요. 아래의 목록은 Kubernetes에서 기본으로 제공하는 ClusterRole입니다. 기본으로 제공하는 ClusterRole을 활용하면, 복잡한 권한 설정을 하지 않고 쉽게 권한 설정을 할 수 있습니다. ClusterRole Description cluster-admin kubernetes의 모든 리소스를 제한없이 접근할 수 있는 권한입니다. 최고관리자 권한설정입니다. admin RoleBinding 을 사용하여 네임스페이스 관리자 권한을 설정합니다. edit Role / RoleBinding을 제외하고, 네임스페이스 안에 있는 리소스에 대한 읽기/쓰기 권한..

Kubernetes 2022.09.22

CoreDNS NXDOMAIN 오류 해결

CoreDNS NXDOMAIN 오류 해결 kubernetes에서 필수구성요소인 CoreDNS의 MXDOMAIN 오류를 해결하는 방법입니다. NXDOMAIN 오류란? MXDOMAIN 오류는 등록되지않은 DNS를 조회하여 나오는 오류입니다. kubernetes에서 service discovery를 위해 kubernetes에서 사용하는 규칙으로 DNS 질의시 5번정도 더 질의하게 되는데, 이때 질의되는 도메인이 DNS서버에 등록되지않은 도메인이기때문에 오류가 발생합니다. AWS에서는 도메인 질의를 너무 많이하게되면, EC2 DNS Limit(1024 packets per second) 제한이 걸려서 DNS질의 실패로 서비스에 장애가 발생할 가능성이 있습니다. 아래의 로그는 CoreDNS에 로그를 설정하여 MX..

Kubernetes 2022.09.21

Resizing StatefulSet Persistent Volumes with zero downtime

Resizing StatefulSet Persistent Volumes with zero downtime kubernetes statefulset에서 사용중인 persistent volume의 사이즈를 다운타임없이 용량을 증가하는 방법입니다. Storage Class 설정 확인 StatefuleSet에 설정한 storageClassName을 확인하여, 아래의 storage class의 설정을 확인해주세요. allowVolumeExpansion 값이 true인 경우에만 resize 가능합니다. allowVolumeExpansion: true apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: annotations: meta.helm.sh/release-..

Kubernetes 2022.09.20

Kubernetes ServiceAccount로 kubeconfig 파일 생성

Kubernetes ServiceAccount로 kubeconfig 파일 생성 kubernetes에서 ServiceAccount를 생성하여, kubeconfig 파일을 생성하는 방법입니다. ServiceAccount를 사용하여 kubernetes 클러스터 외부에서 접근시 활용할 수 있습니다. ServiceAccount 생성 아래의 명령어를 사용하여 ServiceAccount를 생성합니다. ServiceAccount를 생성하면 service-account-token이 secret에 생성됩니다. # serviceaccount 생성 $ kubectl create sa test-sa -n default # serviceaccount 조회 $ ktest get sa test-sa -n default -o yaml..

Kubernetes 2022.09.20

Amazon EBS CSI driver

Amazon EBS CSI driver kubernetes에서 AWS EBS 사용을 위해 기본적으로 제공하는 storage class 타입은 io1, gp2, sc1, st1 입니다. gp3, io2 타입의 EBS를 사용하기 위해서 Amazon EBS CSI driver 를 설치해야합니다. EKS 1.23 버전부터는 무조건 EBS CSI Driver만 사용해야합니다. Install helm을 사용하여 설치합니다. AWS의 IAM Role을 생성하고, policy 를 참고하여 권한설정을 해야합니다. # values.yaml controller: replicaCount: 3 region: ap-northeast-2 serviceAccount: create: true name: ebs-csi-controlle..

Kubernetes 2022.09.19
728x90