K8s
  • Amazon EKS
  • 1.EKS 환경 구성
    • IDE 환경 구성
    • 인증/자격증명 및 환경 구성
  • 3.VPC구성과 eksctl 기반 설치
    • Cloudformation 구성
    • eksctl 구성
    • EKS 구성확인
  • 4.EKS Service 이해
    • Cluster IP 기반 배포
    • NodePort 기반 배포
    • Loadbalancer 기반 배포
  • 5.EKS Ingress
    • AWS Load Balancer Controller
  • 6.EKS 기반 관리
    • 패키지 관리 - Helm
    • 고가용성 Health Check 구성
    • 고가용성 Health Check 구성 (작업중)
    • Assign
    • 테인트와 톨러레이션
    • Pod 오버헤드 (Pod Overhead)
  • 7.Scheduling
    • 스케쥴링 - AutoScaling 구성
    • 스케쥴링-Karpenter
      • Basic Node Pool
        • Scaling Application
        • Limit Resources
        • Disruption
        • Drift
        • RightSizing
      • Multi NodePools
        • Team Based NodePool
        • Weighting NodePool
      • Cost Optimization
        • Consolidation
          • Single Node Consolidation
          • Multi Node Consolidation
          • Using Spot Instance
          • Spot to Spot Consolidation
        • Using Graviton
        • On-Demand & Spot Ratio Split
      • Scheduling Constraints
        • Node Affinity
        • Taints and Toleration
        • Topology Spread
        • Pod Affinity
        • Persistence Volume Topology
        • Pod Disruption Budget
        • Disruption Control
        • NodePool Disruption Budgets
        • Instance type and AZ
        • Multi-Arch
      • Control Pod Density
        • Static Pod Density
        • Dynamic Pod Density
        • Restrict Instance Type
      • EC2 Node Class
        • EC2 Node Classes
        • Custom AMI
        • Node Volumes
      • Observability
      • Migrating from Cluster Autoscaler
        • Install Cluster AutoScaler (CAS)
        • AutoScaling using Cluster AutoScaler (CAS)
        • Migrate from CAS to Karpenter
    • 스케쥴링-Karpenter (Old)
    • EKS Fargate (New)
    • EKS Fargate (old)
  • 8.Observability
    • K8s Dashboard 배포
    • Prometheus-Grafana
    • EFK기반 로깅
    • Container Insights
    • X-Ray기반 추적
    • Loki
  • 9. EKS Networking
    • Multus
    • VPC Advanced
    • External SNAT (TBD)
  • 10.EKS Storage
    • 볼륨/CSI
    • Stateful Container-EBS
    • Stateful Container-EFS
  • 11.EKS Security
    • 이미지 보안
    • OPA Gatekeeper
    • Kyverno
    • RBAC
    • IAM 그룹 기반 관리
    • IRSA (IAM Roles for Service Account)
    • Pod Security (TBD)
    • KMS 기반 암호화 (TBD)
    • Calico 네트워크 정책
  • 12.EKS CI/CD
    • Code Pipeline기반 CI/CD
    • Jenkins 기반 CI
    • WEAVE Flux 기반 GitOps (TBD)
    • Argo 기반 CD
    • Github Action & ArgoCD 기반 CI/CD
  • 13.EKS Service Mesh
    • Istio
      • Istio 소개
      • istio 설치와 구성
      • istio 트래픽 관리 1
      • istio 모니터링
      • Page 1
    • App Mesh (TBD)
  • Tip
    • Kubernetes 개념
      • Overview
      • Cluster Architecture
        • 노드
        • 컨트롤플레인과 노드간 통신
        • 컨트롤러
        • 클라우드 컨트롤러 매니저
      • Containers
        • 이미지
        • 컨테이너 소개
        • 런타임클래스
        • 컨테이너 환경변수
        • 컨테이너 라이프사이클 훅
      • Workloads
        • Pod
          • Pod 개요
          • Pod
          • Pod LifeCycle
          • 컨테이너 초기화
          • Pod 프리셋
          • 파드 토폴로지 분배 제약 조건
          • Untitled
        • Controller
      • Service-LB-Networking
      • Storage
      • Configuration
      • Security
      • Policies
      • Scheduling and Eviction
      • Cluster Admin
      • Extending Kubernetes
    • shell
    • git_source
    • aws cli
    • eksctl command
    • kubectl Command
    • helm command
    • Useful URL
Powered by GitBook
On this page
  • 파드 프리셋
  • 파드 프리셋 이해하기
  • 클러스터에서 파드프리셋 활성화하기
  • 동작 방법
  • 특정 파드의 파드 프리셋 비활성화하기

Was this helpful?

  1. Tip
  2. Kubernetes 개념
  3. Workloads
  4. Pod

Pod 프리셋

Previous컨테이너 초기화Next파드 토폴로지 분배 제약 조건

Last updated 4 years ago

Was this helpful?

파드 프리셋

FEATURE STATE: Kubernetes v1.6 [alpha]

이 페이지는 파드프리셋(PodPreset)에 대한 개요를 제공한다. 파드프리셋은 파드 생성 시간에 파드에 특정 정보를 주입하기 위한 오브젝트이다. 해당 정보에는 시크릿, 볼륨, 볼륨 마운트, 환경 변수가 포함될 수 있다.

파드 프리셋 이해하기

파드프리셋은 파드 생성 시간에 파드에 추가적인 런타임 요구사항을 주입하기 위한 API 리소스이다. 주어진 파드프리셋이 적용되도록 파드에 명시하기 위해서는 를 사용한다.

파드프리셋을 사용하는 것은 파드 템플릿 작성자에게 모든 파드를 위한 모든 정보를 명시적으로 제공하지는 않아도 되도록 한다. 이렇게 하면, 어떤 특정 서비스를 사용할 파드의 파드 템플릿 작성자는 해당 서비스에 대한 모든 세부 사항을 알 필요가 없다.

클러스터에서 파드프리셋 활성화하기

클러스터에서 파드 프리셋을 사용하기 위해서는 다음 사항이 반드시 이행되어야 한다.

  1. API 타입 settings.k8s.io/v1alpha1/podpreset을 활성화하였다. 예를 들면, 이것은 API 서버의 --runtime-config 옵션에 settings.k8s.io/v1alpha1=true을 포함하여 완료할 수 있다. minikube에서는 클러스터가 시작할 때 --extra-config=apiserver.runtime-config=settings.k8s.io/v1alpha1=true 플래그를 추가한다.

  2. 어드미션 컨트롤러 PodPreset을 활성화하였다. 이것을 이루는 방법 중 하나는 API 서버를 위해서 명시된 --enable-admission-plugins 옵션에 PodPreset을 포함하는 것이다. minikube에서는 클러스터가 시작할 때

    --extra-config=apiserver.enable-admission-plugins=NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota,PodPreset

    플래그를 추가한다.

동작 방법

쿠버네티스는 어드미션 컨트롤러(PodPreset)를 제공한다. 어드미션 컨트롤러가 활성화되면, 파드 프리셋을 파드 생성 요청에 적용한다. 파드 생성 요청이 발생하면, 시스템은 다음의 내용을 수행한다.

  1. 사용 가능한 모든 PodPresets을 검색한다.

  2. PodPreset의 레이블 셀렉터들 중 하나라도 생성되는 파드의 레이블과 일치하는 것이 있는지 확인한다.

  3. PodPreset에 의해서 정의된 다양한 리소스가 생성되는 파드에 병합되도록 시도한다.

  4. 오류 시, 파드의 병합 오류를 문서화하는 이벤트를 발생시키고, PodPreset으로 부터 주입된 어떤 리소스도 없이 파드를 생성한다.

  5. 수정된 파드 스펙의 결과에 어노테이션을 달아 PodPreset에 의해서 수정되었음을 표시한다. 해당 어노테이션은 다음의 양식을 따른다. podpreset.admission.kubernetes.io/podpreset-<파드-프리셋 이름>: "<리소스 버전>".

각 파드는 0개 이상의 파드 프리셋에 일치될 수 있고, 각 PodPreset은 0개 이상의 파드에 적용될 수 있다. 하나의 PodPreset이 한 개 이상의 파드에 적용되었을 때, 쿠버네티스는 해당 파드의 스펙을 수정한다. Env, EnvFrom, VolumeMounts의 변경에 대해서는, 쿠버네티스가 파드 내의 모든 컨테이너의 컨테이너 스펙을 수정한다. Volume 변경에 대해서는, 쿠버네티스는 해당 파드의 스펙을 수정한다.

참고:

파드 프리셋은 적절한 경우 파드 스펙의 다음 필드를 수정할 수도 있다.

  • .spec.containers 필드

  • initContainers 필드(쿠버네티스 버전 1.14.0 이후에서 필요)

특정 파드의 파드 프리셋 비활성화하기

어떠한 파드 프리셋 변이에 의해서도 파드에 변경이 일어나지 않게 하고 싶은 경우가 있을 것이다. 이 경우에는, 다음과 같은 양식으로 어노테이션을 파드 스펙에 추가한다. podpreset.admission.kubernetes.io/exclude: "true".

레이블 셀렉터