<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>마지막도전_잡창고</title>
    <link>https://doghj.tistory.com/</link>
    <description>내가 배운 것을 잊지 않기 위해 기록하는 넓은 우주 속 나의 한 모노리스</description>
    <language>ko</language>
    <pubDate>Tue, 7 Jul 2026 10:28:50 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>독현진</managingEditor>
    <item>
      <title>Hh</title>
      <link>https://doghj.tistory.com/117</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;맞습니다.&amp;nbsp;Headless&amp;nbsp;Service는&amp;nbsp;clusterIP:&amp;nbsp;None이기&amp;nbsp;때문에&amp;nbsp;실질적으로&amp;nbsp;IP&amp;nbsp;대역을&amp;nbsp;전혀&amp;nbsp;차지하지&amp;nbsp;않는데,&amp;nbsp;apiserver_storage_objects&amp;nbsp;메트릭은&amp;nbsp;그냥&amp;nbsp;쿠버네티스&amp;nbsp;Object의&amp;nbsp;총개수만&amp;nbsp;세다&amp;nbsp;보니&amp;nbsp;수치가&amp;nbsp;왜곡(오염)되는&amp;nbsp;치명적인&amp;nbsp;문제가&amp;nbsp;있습니다.&lt;br /&gt;만약&amp;nbsp;**Cilium**을&amp;nbsp;CNI로&amp;nbsp;사용&amp;nbsp;중이시라면&amp;nbsp;(kubeProxyReplacement=true&amp;nbsp;등으로)&amp;nbsp;Cilium이&amp;nbsp;커널&amp;nbsp;영역(eBPF&amp;nbsp;Map)에서&amp;nbsp;실제로&amp;nbsp;관리하는&amp;nbsp;**진짜&amp;nbsp;ClusterIP&amp;nbsp;서비스&amp;nbsp;개수만&amp;nbsp;추려내는&amp;nbsp;메트릭**을&amp;nbsp;제공하므로&amp;nbsp;이를&amp;nbsp;활용하시면&amp;nbsp;됩니다.&lt;br /&gt;##&amp;nbsp; ️&amp;nbsp;Cilium&amp;nbsp;메트릭으로&amp;nbsp;해결하기&lt;br /&gt;Cilium&amp;nbsp;Agent(cilium-agent)&amp;nbsp;노드에서&amp;nbsp;발행하는&amp;nbsp;메트릭&amp;nbsp;중&amp;nbsp;**cilium_bpf_map_ops_total**&amp;nbsp;또는&amp;nbsp;**cilium_bpf_maps_max_entries**&amp;nbsp;관련&amp;nbsp;맵을&amp;nbsp;추적하거나,&amp;nbsp;eBPF&amp;nbsp;내부&amp;nbsp;서비스&amp;nbsp;테이블&amp;nbsp;크기를&amp;nbsp;확인할&amp;nbsp;수&amp;nbsp;있습니다.&lt;br /&gt;하지만&amp;nbsp;더&amp;nbsp;직접적으로&amp;nbsp;**&quot;진짜&amp;nbsp;IP가&amp;nbsp;할당된&amp;nbsp;서비스&quot;**만&amp;nbsp;카운트하고&amp;nbsp;싶다면,&amp;nbsp;아래의&amp;nbsp;2가지&amp;nbsp;PromQL&amp;nbsp;접근&amp;nbsp;방식을&amp;nbsp;강력히&amp;nbsp;추천합니다.&lt;br /&gt;###&amp;nbsp;방법&amp;nbsp;1.&amp;nbsp;API&amp;nbsp;Server&amp;nbsp;메트릭에서&amp;nbsp;Headless만&amp;nbsp;빼버리기&amp;nbsp;(가장&amp;nbsp;깔끔)&lt;br /&gt;Cilium&amp;nbsp;메트릭으로&amp;nbsp;넘어가기&amp;nbsp;전에,&amp;nbsp;기존&amp;nbsp;API&amp;nbsp;Server&amp;nbsp;메트릭을&amp;nbsp;유지하면서&amp;nbsp;**Headless&amp;nbsp;Service의&amp;nbsp;개수만&amp;nbsp;수식으로&amp;nbsp;빼주는&amp;nbsp;방법**입니다.&amp;nbsp;쿠버네티스는&amp;nbsp;Headless&amp;nbsp;서비스의&amp;nbsp;개수도&amp;nbsp;따로&amp;nbsp;추적할&amp;nbsp;수&amp;nbsp;있습니다.&lt;br /&gt;```promql&lt;br /&gt;#&amp;nbsp;(전체&amp;nbsp;서비스&amp;nbsp;개수&amp;nbsp;-&amp;nbsp;Headless&amp;nbsp;서비스&amp;nbsp;개수)&amp;nbsp;=&amp;nbsp;진짜&amp;nbsp;ClusterIP&amp;nbsp;사용&amp;nbsp;개수&lt;br /&gt;(&lt;br /&gt;&amp;nbsp;&amp;nbsp;max(apiserver_storage_objects{resource=&quot;services&quot;,&amp;nbsp;cluster=&quot;$cluster&quot;})&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;-&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;max(count(kube_service_info{cluster=&quot;$cluster&quot;,&amp;nbsp;cluster_ip=&quot;None&quot;}))&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;```&lt;br /&gt;&amp;gt;&amp;nbsp; &amp;nbsp;**설명:**&amp;nbsp;프로메테우스에&amp;nbsp;kube-state-metrics가&amp;nbsp;연동되어&amp;nbsp;있다면&amp;nbsp;kube_service_info{cluster_ip=&quot;None&quot;}&amp;nbsp;쿼리로&amp;nbsp;Headless&amp;nbsp;서비스만&amp;nbsp;정확히&amp;nbsp;골라내어&amp;nbsp;전체&amp;nbsp;개수에서&amp;nbsp;차감할&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;가장&amp;nbsp;오염&amp;nbsp;없는&amp;nbsp;순수&amp;nbsp;ClusterIP&amp;nbsp;개수가&amp;nbsp;나옵니다.&lt;br /&gt;&amp;gt;&amp;nbsp;&lt;br /&gt;###&amp;nbsp;방법&amp;nbsp;2.&amp;nbsp;Cilium&amp;nbsp;eBPF&amp;nbsp;LoadBalancer&amp;nbsp;Map&amp;nbsp;메트릭&amp;nbsp;활용&lt;br /&gt;Cilium은&amp;nbsp;가상&amp;nbsp;IP(ClusterIP)를&amp;nbsp;실제&amp;nbsp;Pod&amp;nbsp;IP로&amp;nbsp;포워딩하기&amp;nbsp;위해&amp;nbsp;eBPF&amp;nbsp;맵(cilium_lb4_services_v2)에&amp;nbsp;서비스&amp;nbsp;정보를&amp;nbsp;등록합니다.&amp;nbsp;여기에&amp;nbsp;등록된&amp;nbsp;내역을&amp;nbsp;기반으로&amp;nbsp;카운트하는&amp;nbsp;방법입니다.&lt;br /&gt;Cilium&amp;nbsp;Agent가&amp;nbsp;내보내는&amp;nbsp;메트릭&amp;nbsp;중&amp;nbsp;아래&amp;nbsp;쿼리를&amp;nbsp;그라파나&amp;nbsp;Explore에서&amp;nbsp;먼저&amp;nbsp;검색해&amp;nbsp;보세요.&lt;br /&gt;```promql&lt;br /&gt;#&amp;nbsp;Cilium이&amp;nbsp;바라보는&amp;nbsp;백엔드&amp;nbsp;서비스(LB)&amp;nbsp;맵의&amp;nbsp;현재&amp;nbsp;엔트리&amp;nbsp;개수&lt;br /&gt;sum(cilium_bpf_map_pressure{map_name=&quot;cilium_lb4_services_v2&quot;,&amp;nbsp;cluster=&quot;$cluster&quot;})&lt;br /&gt;&lt;br /&gt;```&lt;br /&gt;&amp;nbsp;*&amp;nbsp;**특징:**&amp;nbsp;Headless&amp;nbsp;서비스는&amp;nbsp;eBPF&amp;nbsp;가상&amp;nbsp;IP&amp;nbsp;라우팅&amp;nbsp;레이어를&amp;nbsp;거치지&amp;nbsp;않으므로,&amp;nbsp;이&amp;nbsp;맵(Map)&amp;nbsp;카운트에서&amp;nbsp;**자동으로&amp;nbsp;제외**됩니다.&lt;br /&gt;&amp;nbsp;*&amp;nbsp;다만,&amp;nbsp;이&amp;nbsp;메트릭은&amp;nbsp;서비스&amp;nbsp;1개당&amp;nbsp;포트&amp;nbsp;개수나&amp;nbsp;엔드포인트&amp;nbsp;세부&amp;nbsp;사항에&amp;nbsp;따라&amp;nbsp;숫자가&amp;nbsp;1:1&amp;nbsp;매칭이&amp;nbsp;아닐&amp;nbsp;수&amp;nbsp;있으므로,&amp;nbsp;현재&amp;nbsp;클러스터에서&amp;nbsp;실제&amp;nbsp;ClusterIP&amp;nbsp;서비스&amp;nbsp;개수와&amp;nbsp;이&amp;nbsp;메트릭의&amp;nbsp;수치가&amp;nbsp;대략&amp;nbsp;몇&amp;nbsp;배수&amp;nbsp;차이&amp;nbsp;나는지&amp;nbsp;기준점(Baseline)을&amp;nbsp;확인하신&amp;nbsp;후&amp;nbsp;분모를&amp;nbsp;조정하여&amp;nbsp;사용하셔야&amp;nbsp;합니다.&lt;br /&gt;##&amp;nbsp; &amp;zwj; &amp;nbsp;결론&amp;nbsp;및&amp;nbsp;추천&lt;br /&gt;가장&amp;nbsp;오차가&amp;nbsp;없고&amp;nbsp;명확한&amp;nbsp;것은&amp;nbsp;**[방법&amp;nbsp;1]**입니다.&lt;br /&gt;그라파나&amp;nbsp;수식을&amp;nbsp;아래와&amp;nbsp;같이&amp;nbsp;변경하시면&amp;nbsp;Headless로&amp;nbsp;인한&amp;nbsp;오염이&amp;nbsp;완벽하게&amp;nbsp;필터링된&amp;nbsp;**순수&amp;nbsp;IP&amp;nbsp;사용률**을&amp;nbsp;구할&amp;nbsp;수&amp;nbsp;있습니다.&lt;br /&gt;```promql&lt;br /&gt;((max(apiserver_storage_objects{resource=&quot;services&quot;,&amp;nbsp;cluster=&quot;$cluster&quot;})&amp;nbsp;-&amp;nbsp;max(count(kube_service_info{cluster=&quot;$cluster&quot;,&amp;nbsp;cluster_ip=&quot;None&quot;})))&amp;nbsp;/&amp;nbsp;24576)&amp;nbsp;*&amp;nbsp;100&lt;br /&gt;&lt;br /&gt;```&lt;br /&gt;이&amp;nbsp;수식으로&amp;nbsp;게이지(Gauge)를&amp;nbsp;다시&amp;nbsp;구성해&amp;nbsp;보세요.&amp;nbsp;스케일링으로&amp;nbsp;늘어난&amp;nbsp;Headless&amp;nbsp;서비스들이&amp;nbsp;싹&amp;nbsp;빠지면서&amp;nbsp;눈에&amp;nbsp;띄게&amp;nbsp;수치가&amp;nbsp;안정되는&amp;nbsp;것을&amp;nbsp;보실&amp;nbsp;수&amp;nbsp;있을&amp;nbsp;겁니다!&lt;/p&gt;</description>
      <author>독현진</author>
      <guid isPermaLink="true">https://doghj.tistory.com/117</guid>
      <comments>https://doghj.tistory.com/117#entry117comment</comments>
      <pubDate>Thu, 2 Jul 2026 11:15:58 +0900</pubDate>
    </item>
    <item>
      <title>ddd2</title>
      <link>https://doghj.tistory.com/116</link>
      <description>&lt;h1 data-path-to-node=&quot;2&quot;&gt;[사내 위키] Ingress에서 Gateway API로의 마이그레이션 가이드&lt;/h1&gt;
&lt;p data-path-to-node=&quot;3&quot; data-ke-size=&quot;size16&quot;&gt;기존 Ingress 리소스를 Gateway API(Gateway 및 HTTPRoute)로 안전하게 변환하고 검증하기 위한 절차입니다.&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;5&quot; data-ke-size=&quot;size26&quot;&gt;1. 사전 준비 단계 (Prerequisites)&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;6&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,0,0&quot;&gt;CRD 설치 및 컨트롤러 확인&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;6,0,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Gateway API는 쿠버네티스 기본 내장 리소스가 아니므로 표준 CRD(Custom Resource Definition)를 먼저 클러스터에 설치해야 합니다.&lt;/li&gt;
&lt;li&gt;사내에서 사용 중인 인프라/서비스 매시 컨트롤러(예: Istio, NGINX Ingress Controller, Envoy Gateway 등)가 Gateway API 정식 버전(v1)을 지원하는지 버전을 확인합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,1,0&quot;&gt;역할 분담 정의 (RBAC)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;6,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,1,1,0,0&quot;&gt;인프라/클러스터 관리자:&lt;/b&gt; GatewayClass 및 Gateway 리소스 생성 권한 할당.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,1,1,1,0&quot;&gt;애플리케이션 개발 팀:&lt;/b&gt; 본인 네임스페이스 내 HTTPRoute 리소스 생성 권한 할당.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-path-to-node=&quot;8&quot; data-ke-size=&quot;size26&quot;&gt;2. 리소스 매핑 구조 이해&lt;/h2&gt;
&lt;p data-path-to-node=&quot;9&quot; data-ke-size=&quot;size16&quot;&gt;변환 전후의 리소스 구조는 다음과 같이 1:N 관계로 매핑됩니다. 기존 인그레스 파일 하나에 있던 내용이 역할에 따라 쪼개지게 됩니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;10&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,0,0&quot;&gt;기존 Ingress&lt;/b&gt;의 글로벌 설정 (TLS 인증서, 공용 도메인, 진입 포트) &lt;span data-index-in-node=&quot;44&quot; data-math=&quot;\rightarrow&quot;&gt;$\rightarrow$&lt;/span&gt; &lt;b data-index-in-node=&quot;56&quot; data-path-to-node=&quot;10,0,0&quot;&gt;Gateway&lt;/b&gt;로 이동&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,1,0&quot;&gt;기존 Ingress&lt;/b&gt;의 라우팅 규칙 (Path 매칭, 백엔드 서비스 연결) &lt;span data-index-in-node=&quot;41&quot; data-math=&quot;\rightarrow&quot;&gt;$\rightarrow$&lt;/span&gt; &lt;b data-index-in-node=&quot;53&quot; data-path-to-node=&quot;10,1,0&quot;&gt;HTTPRoute&lt;/b&gt;로 이동&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-path-to-node=&quot;12&quot; data-ke-size=&quot;size26&quot;&gt;3. 3단계 변환 프로세스 (실전 예시)&lt;/h2&gt;
&lt;p data-path-to-node=&quot;13&quot; data-ke-size=&quot;size16&quot;&gt;기존에 사용하던 Standard Ingress 배포 본을 Gateway API로 변환하는 구체적인 예시입니다.&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;14&quot; data-ke-size=&quot;size23&quot;&gt;[기존] Ingress 매니페스트&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;YAML&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-app-ingress
  namespace: target-space
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$2 # 기존 어노테이션 기반 리라이트
spec:
  ingressClassName: nginx
  tls:
  - hosts:
    - api.example.com
    secretName: example-tls-secret
  rules:
  - host: api.example.com
    http:
      paths:
      - path: /v1(/|$)(.*)
        pathType: ImplementationSpecific
        backend:
          service:
            name: core-service
            port:
              number: 8080
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-path-to-node=&quot;17&quot; data-ke-size=&quot;size23&quot;&gt;[변환 후] 1단계: Gateway 리소스 생성 (관리자 영역)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;18&quot; data-ke-size=&quot;size16&quot;&gt;클러스터에 들어오는 진입점과 TLS 인증서를 정의합니다. (인프라 네임스페이스 등에 단 한 번만 생성하여 공유 가능)&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;YAML&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: cluster-gateway
  namespace: infra-system # 인프라 공용 네임스페이스
spec:
  gatewayClassName: nginx # 사내 인그레스 클래스 지정
  listeners:
  - name: https-listener
    protocol: HTTPS
    port: 443
    hostname: &quot;api.example.com&quot;
    tls:
      mode: Terminate
      certificateRefs:
      - kind: Secret
        name: example-tls-secret
        namespace: infra-system
    allowedRoutes:
      namespaces:
        from: All # 모든 네임스페이스의 Route 연결 허용 (보안 필요시 Select 가능)
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-path-to-node=&quot;20&quot; data-ke-size=&quot;size23&quot;&gt;[변환 후] 2단계: HTTPRoute 리소스 생성 (개발 팀 영역)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;21&quot; data-ke-size=&quot;size16&quot;&gt;실제 서비스 경로와 라우팅 규칙을 정의합니다. 기존 어노테이션(rewrite-target)으로 처리하던 복잡한 로직이 &lt;b data-index-in-node=&quot;66&quot; data-path-to-node=&quot;21&quot;&gt;표준 필터(Filters)&lt;/b&gt; 기능으로 대체됩니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;YAML&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: core-service-route
  namespace: target-space # 애플리케이션이 속한 네임스페이스
spec:
  parentRefs:
  - name: cluster-gateway
    namespace: infra-system # 1단계에서 만든 Gateway 참조
  hostnames:
  - &quot;api.example.com&quot;
  rules:
  - matches:
    - path:
        type: PathPrefix
        value: /v1
    filters:
    - type: URLRewrite # 기존의 복잡한 정규식 어노테이션 대신 표준 필터 사용
      urlRewrite:
        path:
          type: ReplacePrefixMatch
          replacePrefixMatch: /
    backendRefs:
    - name: core-service
      port: 8080
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-path-to-node=&quot;24&quot; data-ke-size=&quot;size26&quot;&gt;4. 자동 변환 툴 활용 권장 (ingress2gateway)&lt;/h2&gt;
&lt;p data-path-to-node=&quot;25&quot; data-ke-size=&quot;size16&quot;&gt;수동 변환 외에도 쿠버네티스 공식 서브 프로젝트에서 제공하는 &lt;b data-index-in-node=&quot;34&quot; data-path-to-node=&quot;25&quot;&gt;ingress2gateway&lt;/b&gt; 오픈소스 CLI 도구를 사용하면 기존 인그레스 파일을 Gateway API 자원으로 자동 변환할 수 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;26&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,0,0&quot;&gt;설치 및 사용법:&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;Bash&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;pre class=&quot;sql&quot;&gt;&lt;code&gt;# 툴 설치 (Go 환경 필요 또는 바이너리 다운로드)
go install sigs.k8s.io/ingress2gateway@latest

# 기존 인그레스 파일을 기반으로 Gateway API 파일 리소스 출력
ingress2gateway translate --input-file=my-app-ingress.yaml
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;i data-index-in-node=&quot;0&quot; data-path-to-node=&quot;26,1,0&quot;&gt;주의:&lt;/i&gt; 기본적인 라우팅은 완벽히 변환되지만, 특정 벤더에 종속된 특이한 인그레스 어노테이션(Annotation)은 완벽히 변환되지 않을 수 있으므로 변환 후 수동 검증이 필요합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-path-to-node=&quot;28&quot; data-ke-size=&quot;size26&quot;&gt;5. 중단 없는 전환 시나리오 (Zero-Downtime Migration)&lt;/h2&gt;
&lt;p data-path-to-node=&quot;29&quot; data-ke-size=&quot;size16&quot;&gt;운영 중인 서비스의 트래픽 중단을 방지하기 위해 아래 순서로 DNS 및 라우팅을 점진적으로 전환합니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;30&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;30,0,0&quot;&gt;듀얼 인프라 구성:&lt;/b&gt; 기존 Ingress Controller와 신규 Gateway API Controller를 클러스터 내에 동시에 띄워둡니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;30,1,0&quot;&gt;Gateway 리소스 배포:&lt;/b&gt; 위 가이드에 따라 Gateway와 HTTPRoute를 먼저 생성합니다. (이 시점에는 외부 트래픽이 아직 들어오지 않음)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;30,2,0&quot;&gt;내부 검증:&lt;/b&gt; 라우팅이 정상 작동하는지 kubectl get httproute로 상태(Ready: True)를 확인하고, 내부 포트포워딩이나 별도 테스트 도메인을 통해 Gateway 단으로 요청이 정상 전달되는지 확인합니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;30,3,0&quot;&gt;가중치 기반 DNS 전환:&lt;/b&gt; 외부 DNS(Route 53 등)의 가중치 라우팅 기능을 활용하여, 기존 Ingress 로드밸런서 IP에서 신규 Gateway 로드밸런서 IP로 트래픽을 점진적으로 전환합니다 (&lt;span data-index-in-node=&quot;114&quot; data-math=&quot;10\% \rightarrow 50\% \rightarrow 100\%&quot;&gt;$10\% \rightarrow 50\% \rightarrow 100\%$&lt;/span&gt;).&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;30,4,0&quot;&gt;기존 리소스 정리:&lt;/b&gt; 완벽히 안정이 확인되면 기존 Ingress 리소스를 삭제합니다.&lt;/li&gt;
&lt;/ol&gt;</description>
      <author>독현진</author>
      <guid isPermaLink="true">https://doghj.tistory.com/116</guid>
      <comments>https://doghj.tistory.com/116#entry116comment</comments>
      <pubDate>Sun, 31 May 2026 16:16:17 +0900</pubDate>
    </item>
    <item>
      <title>ddd</title>
      <link>https://doghj.tistory.com/115</link>
      <description>&lt;h1 data-path-to-node=&quot;3&quot;&gt;[사내 위키] Kubernetes Gateway API 개요 및 가이드&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;4&quot; data-ke-size=&quot;size26&quot;&gt;1. 개요 (Overview)&lt;/h2&gt;
&lt;p data-path-to-node=&quot;5&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;p-rc_1bf040a0ee2e45ef-155&quot; data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;6,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,0&quot;&gt;&lt;span&gt;Gateway API&lt;/span&gt;&lt;/b&gt;&lt;span&gt;는 기존의 &lt;/span&gt;&lt;span&gt;Ingress&lt;/span&gt;&lt;span&gt; 리소스가 가진 한계를 극복하고, 클러스터 외부 트래픽을 내부 서비스로 라우팅하기 위해 도입된 차세대 업계 표준 오픈소스 API 프로그래밍 인터페이스입니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;6,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;6,2&quot;&gt;. 사내 인프라 및 클라우드 환경에서 안정적이고 유연한 트래픽 제어를 위해 이 가이드를 준수해 주시기 바랍니다.&lt;/span&gt;&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;8&quot; data-ke-size=&quot;size26&quot;&gt;2. Ingress API vs Gateway API 비교&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;IngressClass.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dny0Ln/dJMcabxBn9X/GkyZU6CsTCdCyHkRDtXkK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dny0Ln/dJMcabxBn9X/GkyZU6CsTCdCyHkRDtXkK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dny0Ln/dJMcabxBn9X/GkyZU6CsTCdCyHkRDtXkK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdny0Ln%2FdJMcabxBn9X%2FGkyZU6CsTCdCyHkRDtXkK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot; data-filename=&quot;IngressClass.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;p-rc_1bf040a0ee2e45ef-156&quot; data-path-to-node=&quot;9&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;9,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;9,1&quot;&gt;&lt;span&gt;기존 인gress 대비 Gateway API의 핵심 차이점은 다음과 같습니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;9,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;9,3&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;10&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;항목&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Ingress API&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Gateway API&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;10,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,1,0,0&quot;&gt;인프라 결합도&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;10,1,1,0,0&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;10,1,1,0,1&quot;&gt;&lt;span&gt;인프라 설정과 라우팅 설정이 하나의 리소스에 결합되어 복잡함&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;10,1,1,0,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;10,1,1,0,3&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;10,1,2,0,0&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;10,1,2,0,1&quot;&gt;&lt;span&gt;인프라 설정(&lt;/span&gt;&lt;span&gt;Gateway&lt;/span&gt;&lt;span&gt;)과 트래픽 규칙(&lt;/span&gt;&lt;span&gt;Route&lt;/span&gt;&lt;span&gt;)이 명확히 분리됨&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;10,1,2,0,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;10,1,2,0,3&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;10,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,2,0,0&quot;&gt;지원 프로토콜&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;10,2,1,0,0&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;10,2,1,0,1&quot;&gt;&lt;span&gt;L7 (HTTP/HTTPS) 중심&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;10,2,1,0,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;10,2,1,0,3&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;10,2,2,0,0&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;10,2,2,0,1&quot;&gt;&lt;span&gt;L4(TCP, UDP)부터 L7(HTTP, HTTPS, gRPC)까지 광범위하게 지원&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;10,2,2,0,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;10,2,2,0,3&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;10,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,3,0,0&quot;&gt;멀티테넌시 관리&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;10,3,1,0,0&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;10,3,1,0,1&quot;&gt;&lt;span&gt;하나의 파일에 여러 규칙이 섞여 관리 역할 분담이 어려움&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;10,3,1,0,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;10,3,1,0,3&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;10,3,2,0,0&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;10,3,2,0,1&quot;&gt;&lt;span&gt;관리자(Gateway 생성)와 개발자(Route 생성)의 역할 및 권한 분리 가능&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;10,3,2,0,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;10,3,2,0,3&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;10,4,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,4,0,0&quot;&gt;교차 네임스페이스&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;10,4,1,0&quot;&gt;단일 네임스페이스 내부 진입 위주.&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span data-path-to-node=&quot;10,4,2,0,0&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;10,4,2,0,1&quot;&gt;&lt;span&gt;단일 공용 Gateway 인프라를 여러 네임스페이스의 Route가 공유 가능&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;10,4,2,0,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;10,4,2,0,3&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 data-path-to-node=&quot;12&quot; data-ke-size=&quot;size26&quot;&gt;3. 핵심 리소스 모델 (Core Resources)&lt;/h2&gt;
&lt;p id=&quot;p-rc_1bf040a0ee2e45ef-164&quot; data-path-to-node=&quot;13&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;13,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;13,1&quot;&gt;&lt;span&gt;Gateway API는 관리 역할에 따라 크게 3가지 계층의 리소스로 나뉩니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;13,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;13,3&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;14&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;14,0,0&quot;&gt;GatewayClass&lt;/b&gt; (인프라 제공자 영역)
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;14,0,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;14,0,1,0,0,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;14,0,1,0,0,1&quot;&gt;&lt;span&gt;인프라 수준의 Gateway 템플릿과 컨트롤러를 정의합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;14,0,1,0,0,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;14,0,1,0,0,3&quot;&gt;. (예: 클라우드 로드 밸런서, Istio 등) &lt;/span&gt;&lt;span data-path-to-node=&quot;14,0,1,0,0,4&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;14,0,1,0,0,5&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;14,1,0&quot;&gt;Gateway&lt;/b&gt; (클러스터 관리자 영역)
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;14,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;14,1,1,0,0,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;14,1,1,0,0,1&quot;&gt;&lt;span&gt;트래픽이 진입하는 실제 인프라 지점(포트, 프로토콜, 호스트네임 등)을 정의하는 리스너(Listener) 역할을 합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;14,1,1,0,0,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;14,1,1,0,0,3&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;14,2,0&quot;&gt;Route Objects&lt;/b&gt; (애플리케이션 개발자 영역)
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;14,2,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;14,2,1,0,0,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;14,2,1,0,0,1&quot;&gt;&lt;span&gt;Gateway의 리스너와 연결되어, 특정 조건에 맞는 트래픽을 어떤 실제 백엔드 서비스로 보낼지 규칙을 작성합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;14,2,1,0,0,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;14,2,1,0,0,3&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-path-to-node=&quot;14,2,1,1,0,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;14,2,1,1,0,1&quot;&gt;&lt;span&gt;서비스 프로토콜에 따라 &lt;/span&gt;&lt;span&gt;HTTPRoute&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;TLSRoute&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;GRPCRoute&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;TCPRoute&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;UDPRoute&lt;/span&gt;&lt;span&gt;를 선택하여 생성합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;14,2,1,1,0,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;14,2,1,1,0,3&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-path-to-node=&quot;16&quot; data-ke-size=&quot;size26&quot;&gt;4. 실전 가이드 및 배포 매니페스트 예시&lt;/h2&gt;
&lt;h3 data-path-to-node=&quot;17&quot; data-ke-size=&quot;size23&quot;&gt;① Gateway 설정 (HTTP 리스너)&lt;/h3&gt;
&lt;p id=&quot;p-rc_1bf040a0ee2e45ef-169&quot; data-path-to-node=&quot;18&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;18,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;18,1&quot;&gt;&lt;span&gt;사내 공용 도메인(&lt;/span&gt;&lt;span&gt;*.example.com&lt;/span&gt;&lt;span&gt;)의 80 포트 트래픽을 수용하는 Gateway 인프라 설정 예시입니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;18,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;18,3&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;YAML&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: shared-gateway
  namespace: infra-system
spec:
  gatewayClassName: istio # 사내 구축된 GatewayClass 입력
  listeners:
  - name: http-listener
    port: 80
    protocol: HTTP
    hostname: '*.example.com'
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-path-to-node=&quot;20&quot; data-ke-size=&quot;size23&quot;&gt;② 애플리케이션 연결 (HTTPRoute)&lt;/h3&gt;
&lt;p id=&quot;p-rc_1bf040a0ee2e45ef-170&quot; data-path-to-node=&quot;21&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;21,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;21,1&quot;&gt;&lt;span&gt;위에서 생성한 &lt;/span&gt;&lt;span&gt;shared-gateway&lt;/span&gt;&lt;span&gt;에 실제 마이크로서비스를 연결하고 트래픽을 분할(카나리 배포)하는 규칙 예시입니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;21,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;21,3&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;YAML&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: my-service-route
  namespace: dev-team
spec:
  parentRefs:
  - group: gateway.networking.k8s.io
    kind: Gateway
    name: shared-gateway
    namespace: infra-system # 공용 인프라 네임스페이스 지정
  hostnames:
  - app.example.com
  rules:
  - backendRefs:
    - name: app-service-stable
      port: 80
      weight: 9 # 90% 트래픽 할당
    - name: app-service-canary
      port: 80
      weight: 1 # 10% 트래픽 할당 (카나리 배포)
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-path-to-node=&quot;24&quot; data-ke-size=&quot;size26&quot;&gt;5. 트래픽 고급 제어 기능 (Filters)&lt;/h2&gt;
&lt;p data-path-to-node=&quot;25&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;p-rc_1bf040a0ee2e45ef-171&quot; data-path-to-node=&quot;26&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;26,0&quot;&gt;&lt;span&gt;HTTPRoute&lt;/span&gt;&lt;span&gt; 리소스 내부에 &lt;/span&gt;&lt;span&gt;filters&lt;/span&gt;&lt;span&gt; 항목을 추가하여 Proxy 레벨의 강력한 제어가 가능합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;26,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;26,2&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;27&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li id=&quot;p-rc_1bf040a0ee2e45ef-172&quot; data-path-to-node=&quot;27,0,1&quot;&gt;&lt;span data-path-to-node=&quot;27,0,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;27,0,1,0&quot;&gt;&lt;span&gt;헤더 제어 (Request/Response Header Modifier):&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 요청/응답 패킷에 사내 인증 토큰이나 식별용 커스텀 헤더를 동적으로 추가, 변경, 삭제할 수 있습니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;27,0,1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;27,0,1,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li id=&quot;p-rc_1bf040a0ee2e45ef-173&quot; data-path-to-node=&quot;27,1,1&quot;&gt;&lt;span data-path-to-node=&quot;27,1,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;27,1,1,0&quot;&gt;&lt;span&gt;URL 리라이트 (URLRewrite):&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 클라이언트가 요청한 경로(예: &lt;/span&gt;&lt;span&gt;/foo&lt;/span&gt;&lt;span&gt;)를 실제 백엔드 애플리케이션 구조(예: &lt;/span&gt;&lt;span&gt;/new/path&lt;/span&gt;&lt;span&gt;)에 맞게 변경하여 전달합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;27,1,1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;27,1,1,2&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li id=&quot;p-rc_1bf040a0ee2e45ef-174&quot; data-path-to-node=&quot;27,2,1&quot;&gt;&lt;span data-path-to-node=&quot;27,2,1,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;27,2,1,0&quot;&gt;&lt;span&gt;트래픽 미러링 (RequestMirror):&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 프로덕션 환경으로 들어오는 실제 요청 트래픽을 그대로 복사하여 개발/테스트 중인 서비스 백엔드로 전달(섀도잉)합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;27,2,1,1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;27,2,1,2&quot;&gt;. &lt;/span&gt;&lt;span data-path-to-node=&quot;27,2,1,3&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;27,2,1,4&quot;&gt;&lt;span&gt;이때 복사된 트래픽에 대한 응답은 클라이언트에 영향을 주지 않고 안전하게 폐기됩니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;27,2,1,5&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;27,2,1,6&quot;&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-path-to-node=&quot;29&quot; data-ke-size=&quot;size26&quot;&gt;6. 보안 및 교차 네임스페이스 접근 제한 (ReferenceGrant)&lt;/h2&gt;
&lt;p id=&quot;p-rc_1bf040a0ee2e45ef-175&quot; data-path-to-node=&quot;30&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;30,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;30,1&quot;&gt;&lt;span&gt;개발자가 다른 네임스페이스에 있는 서비스나 보안 자원(예: TLS 인증서 Secret)을 임의로 연결하여 보안 사고가 발생하는 것을 방지하기 위해, Gateway API는 &lt;/span&gt;&lt;b data-index-in-node=&quot;96&quot; data-path-to-node=&quot;30,1&quot;&gt;&lt;span&gt;ReferenceGrant&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 리소스를 강제합니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;30,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;30,3&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-path-to-node=&quot;31&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p id=&quot;p-rc_1bf040a0ee2e45ef-176&quot; data-path-to-node=&quot;31,0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;31,0,0&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;31,0,1&quot;&gt;&lt;span&gt;  &lt;/span&gt;&lt;b data-index-in-node=&quot;3&quot; data-path-to-node=&quot;31,0,1&quot;&gt;&lt;span&gt;중요:&lt;/span&gt;&lt;/b&gt;&lt;span&gt; 타 네임스페이스의 자원을 참조해야 하는 경우, 자원을 보유한 타 네임스페이스 관리자가 명시적으로 &lt;/span&gt;&lt;span&gt;ReferenceGrant&lt;/span&gt;&lt;span&gt; 허용 규칙을 배포해주어야만 라우팅 정상 바인딩(&lt;/span&gt;&lt;span&gt;ResolvedRefs: True&lt;/span&gt;&lt;span&gt;)이 완료됩니다&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;31,0,2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;31,0,3&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p id=&quot;p-rc_1bf040a0ee2e45ef-177&quot; data-path-to-node=&quot;33&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-path-to-node=&quot;33,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;33,0&quot;&gt;[작성 및 수정 가이드라인]&lt;/b&gt; 본 문서는 사내 쿠버네티스 표준 인프라 가이드를 따릅니다. &lt;/span&gt;&lt;span data-path-to-node=&quot;33,1&quot;&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;33,2&quot;&gt;&lt;span&gt;클러스터 환경 내부 변경 사항이나 고도화 기능(예: gRPC 라우팅 활성화 등)이 생길 경우 인프라 파트에 문의 후 본 위키를 업데이트해 주세요&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;33,3&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span data-path-to-node=&quot;33,4&quot;&gt;.&lt;/span&gt;&lt;/p&gt;</description>
      <author>독현진</author>
      <guid isPermaLink="true">https://doghj.tistory.com/115</guid>
      <comments>https://doghj.tistory.com/115#entry115comment</comments>
      <pubDate>Sun, 31 May 2026 16:14:31 +0900</pubDate>
    </item>
    <item>
      <title>Gbjvjv</title>
      <link>https://doghj.tistory.com/114</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;추가적인&amp;nbsp;성능&amp;nbsp;향상을&amp;nbsp;위해&amp;nbsp;옵션을&amp;nbsp;유연하게&amp;nbsp;조정하실&amp;nbsp;계획이라면,&amp;nbsp;**네트워크&amp;nbsp;레이턴시**와&amp;nbsp;**병렬&amp;nbsp;처리**&amp;nbsp;최적화&amp;nbsp;측면에서&amp;nbsp;몇&amp;nbsp;가지&amp;nbsp;더&amp;nbsp;고려해&amp;nbsp;볼&amp;nbsp;만한&amp;nbsp;포인트들이&amp;nbsp;있습니다.&lt;br /&gt;가이드에&amp;nbsp;&quot;성능&amp;nbsp;최적화&amp;nbsp;튜닝&amp;nbsp;포인트&quot;로&amp;nbsp;추가하면&amp;nbsp;좋은&amp;nbsp;내용들을&amp;nbsp;정리해&amp;nbsp;드립니다.&lt;br /&gt;##&amp;nbsp;1.&amp;nbsp;마운트&amp;nbsp;옵션&amp;nbsp;추가&amp;nbsp;최적화&amp;nbsp;제안&lt;br /&gt;현재&amp;nbsp;설정하신&amp;nbsp;옵션&amp;nbsp;외에&amp;nbsp;성능에&amp;nbsp;큰&amp;nbsp;영향을&amp;nbsp;줄&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;요소들입니다.&lt;br /&gt;&amp;nbsp;*&amp;nbsp;**noatime&amp;nbsp;(권장):**&amp;nbsp;파일에&amp;nbsp;접근할&amp;nbsp;때마다&amp;nbsp;&quot;최근&amp;nbsp;접근&amp;nbsp;시간&quot;을&amp;nbsp;업데이트하지&amp;nbsp;않도록&amp;nbsp;설정합니다.&amp;nbsp;쓰기&amp;nbsp;작업&amp;nbsp;부하를&amp;nbsp;줄여줍니다.&lt;br /&gt;&amp;nbsp;*&amp;nbsp;**nodiratime:**&amp;nbsp;디렉토리&amp;nbsp;접근&amp;nbsp;시간&amp;nbsp;업데이트를&amp;nbsp;비활성화합니다.&lt;br /&gt;&amp;nbsp;*&amp;nbsp;**actimeo=600:**&amp;nbsp;파일&amp;nbsp;속성(Attribute)&amp;nbsp;캐시&amp;nbsp;유지&amp;nbsp;시간을&amp;nbsp;늘려&amp;nbsp;서버와의&amp;nbsp;통신&amp;nbsp;횟수를&amp;nbsp;줄입니다.&amp;nbsp;(변경이&amp;nbsp;잦지&amp;nbsp;않은&amp;nbsp;데이터라면&amp;nbsp;유용합니다.)&lt;br /&gt;&amp;nbsp;*&amp;nbsp;**async&amp;nbsp;vs&amp;nbsp;sync:**&amp;nbsp;성능이&amp;nbsp;최우선이라면&amp;nbsp;async가&amp;nbsp;유리하지만,&amp;nbsp;HDFS&amp;nbsp;NFS&amp;nbsp;게이트웨이&amp;nbsp;특성상&amp;nbsp;데이터&amp;nbsp;안정성을&amp;nbsp;고려해&amp;nbsp;기본값(보통&amp;nbsp;서버&amp;nbsp;설정에&amp;nbsp;따름)을&amp;nbsp;유지하는&amp;nbsp;경우가&amp;nbsp;많습니다.&lt;br /&gt;###&amp;nbsp;수정된&amp;nbsp;권장&amp;nbsp;마운트&amp;nbsp;명령어&lt;br /&gt;```bash&lt;br /&gt;mount&amp;nbsp;-t&amp;nbsp;nfs&amp;nbsp;-o&amp;nbsp;rw,vers=3,tcp,hard,intr,noatime,nodiratime,rsize=1048576,wsize=1048576,nconnect=8,timeo=600,retrans=2&amp;nbsp;hdfs.sddc.test.com:/dir&amp;nbsp;/mountdir&lt;br /&gt;&lt;br /&gt;```&lt;br /&gt;&amp;gt;&amp;nbsp;**Tip:**&amp;nbsp;retrans를&amp;nbsp;5에서&amp;nbsp;2&amp;nbsp;정도로&amp;nbsp;낮추면&amp;nbsp;네트워크&amp;nbsp;장애&amp;nbsp;시&amp;nbsp;더&amp;nbsp;빠르게&amp;nbsp;반응할&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;(고속&amp;nbsp;로컬&amp;nbsp;네트워크&amp;nbsp;기준)&lt;br /&gt;&amp;gt;&amp;nbsp;&lt;br /&gt;##&amp;nbsp;2.&amp;nbsp;Linux&amp;nbsp;커널&amp;nbsp;파라미터&amp;nbsp;튜닝&amp;nbsp;(OS&amp;nbsp;레벨)&lt;br /&gt;마운트&amp;nbsp;옵션만으로는&amp;nbsp;부족할&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;특히&amp;nbsp;**1GB&amp;nbsp;이상의&amp;nbsp;고대역폭**을&amp;nbsp;사용한다면&amp;nbsp;TCP&amp;nbsp;버퍼&amp;nbsp;크기를&amp;nbsp;키워야&amp;nbsp;nconnect와&amp;nbsp;rsize/wsize의&amp;nbsp;효과를&amp;nbsp;제대로&amp;nbsp;볼&amp;nbsp;수&amp;nbsp;있습니다.&lt;br /&gt;테스트&amp;nbsp;전&amp;nbsp;노드에서&amp;nbsp;아래&amp;nbsp;설정을&amp;nbsp;적용해&amp;nbsp;보세요:&lt;br /&gt;```bash&lt;br /&gt;#&amp;nbsp;TCP&amp;nbsp;윈도우&amp;nbsp;사이즈&amp;nbsp;및&amp;nbsp;버퍼&amp;nbsp;최적화&lt;br /&gt;sysctl&amp;nbsp;-w&amp;nbsp;net.core.rmem_max=16777216&lt;br /&gt;sysctl&amp;nbsp;-w&amp;nbsp;net.core.wmem_max=16777216&lt;br /&gt;sysctl&amp;nbsp;-w&amp;nbsp;net.ipv4.tcp_rmem='4096&amp;nbsp;87380&amp;nbsp;16777216'&lt;br /&gt;sysctl&amp;nbsp;-w&amp;nbsp;net.ipv4.tcp_wmem='4096&amp;nbsp;65536&amp;nbsp;16777216'&lt;br /&gt;sysctl&amp;nbsp;-w&amp;nbsp;net.core.netdev_max_backlog=5000&lt;br /&gt;&lt;br /&gt;```&lt;br /&gt;##&amp;nbsp;3.&amp;nbsp;Pod&amp;nbsp;성능&amp;nbsp;측정&amp;nbsp;시&amp;nbsp;주의사항&amp;nbsp;(MTU&amp;nbsp;설정)&lt;br /&gt;Kubernetes&amp;nbsp;환경(Pod)에서&amp;nbsp;성능이&amp;nbsp;노드보다&amp;nbsp;눈에&amp;nbsp;띄게&amp;nbsp;낮게&amp;nbsp;나온다면&amp;nbsp;**MTU(Maximum&amp;nbsp;Transmission&amp;nbsp;Unit)**&amp;nbsp;불일치&amp;nbsp;문제일&amp;nbsp;가능성이&amp;nbsp;높습니다.&lt;br /&gt;&amp;nbsp;*&amp;nbsp;**Jumbo&amp;nbsp;Frame:**&amp;nbsp;네트워크&amp;nbsp;스위치와&amp;nbsp;노드&amp;nbsp;인터페이스가&amp;nbsp;지원한다면&amp;nbsp;MTU를&amp;nbsp;**9000**으로&amp;nbsp;설정하는&amp;nbsp;것이&amp;nbsp;NFS&amp;nbsp;성능&amp;nbsp;향상에&amp;nbsp;가장&amp;nbsp;효과적입니다.&lt;br /&gt;&amp;nbsp;*&amp;nbsp;**CNI&amp;nbsp;확인:**&amp;nbsp;Pod&amp;nbsp;내부&amp;nbsp;네트워크&amp;nbsp;인터페이스의&amp;nbsp;MTU가&amp;nbsp;노드의&amp;nbsp;실제&amp;nbsp;인터페이스와&amp;nbsp;동일한지&amp;nbsp;확인하세요.&lt;br /&gt;##&amp;nbsp;4.&amp;nbsp;가이드용&amp;nbsp;비교&amp;nbsp;테스트&amp;nbsp;체크리스트&lt;br /&gt;성능&amp;nbsp;보고서&amp;nbsp;작성을&amp;nbsp;위해&amp;nbsp;아래&amp;nbsp;세&amp;nbsp;가지&amp;nbsp;변수를&amp;nbsp;조합하여&amp;nbsp;측정하는&amp;nbsp;것을&amp;nbsp;추천합니다.&lt;br /&gt;|&amp;nbsp;테스트&amp;nbsp;케이스&amp;nbsp;|&amp;nbsp;설정&amp;nbsp;핵심&amp;nbsp;|&amp;nbsp;기대&amp;nbsp;효과&amp;nbsp;|&lt;br /&gt;|---|---|---|&lt;br /&gt;|&amp;nbsp;**Case&amp;nbsp;1&amp;nbsp;(기본)**&amp;nbsp;|&amp;nbsp;nconnect=1,&amp;nbsp;rsize/wsize=64k&amp;nbsp;|&amp;nbsp;표준&amp;nbsp;성능&amp;nbsp;확인&amp;nbsp;|&lt;br /&gt;|&amp;nbsp;**Case&amp;nbsp;2&amp;nbsp;(대역폭&amp;nbsp;최적화)**&amp;nbsp;|&amp;nbsp;nconnect=8,&amp;nbsp;rsize/wsize=1M&amp;nbsp;|&amp;nbsp;Throughput&amp;nbsp;최대화&amp;nbsp;(HDFS&amp;nbsp;적합)&amp;nbsp;|&lt;br /&gt;|&amp;nbsp;**Case&amp;nbsp;3&amp;nbsp;(커널&amp;nbsp;튜닝&amp;nbsp;포함)**&amp;nbsp;|&amp;nbsp;Case&amp;nbsp;2&amp;nbsp;+&amp;nbsp;sysctl&amp;nbsp;튜닝&amp;nbsp;+&amp;nbsp;noatime&amp;nbsp;|&amp;nbsp;시스템&amp;nbsp;전체&amp;nbsp;잠재력&amp;nbsp;확인&amp;nbsp;|&lt;br /&gt;**한&amp;nbsp;가지&amp;nbsp;팁:**&amp;nbsp;rsize와&amp;nbsp;wsize를&amp;nbsp;무조건&amp;nbsp;1MB로&amp;nbsp;고정하기보다,&amp;nbsp;실제&amp;nbsp;환경에서&amp;nbsp;256k,&amp;nbsp;512k,&amp;nbsp;1M를&amp;nbsp;각각&amp;nbsp;테스트해&amp;nbsp;보세요.&amp;nbsp;서버(HDFS&amp;nbsp;NFS&amp;nbsp;Gateway)의&amp;nbsp;메모리&amp;nbsp;상황에&amp;nbsp;따라&amp;nbsp;512k가&amp;nbsp;더&amp;nbsp;안정적인&amp;nbsp;성능을&amp;nbsp;낼&amp;nbsp;때도&amp;nbsp;있습니다.&lt;br /&gt;이&amp;nbsp;정도&amp;nbsp;내용을&amp;nbsp;포함하신다면&amp;nbsp;단순&amp;nbsp;마운트&amp;nbsp;가이드를&amp;nbsp;넘어선&amp;nbsp;**전문적인&amp;nbsp;성능&amp;nbsp;최적화&amp;nbsp;가이드**가&amp;nbsp;될&amp;nbsp;것&amp;nbsp;같습니다.&amp;nbsp;진행하시면서&amp;nbsp;특정&amp;nbsp;구간에서&amp;nbsp;병목이&amp;nbsp;생기면&amp;nbsp;말씀해&amp;nbsp;주세요!&lt;/p&gt;</description>
      <author>독현진</author>
      <guid isPermaLink="true">https://doghj.tistory.com/114</guid>
      <comments>https://doghj.tistory.com/114#entry114comment</comments>
      <pubDate>Tue, 21 Apr 2026 09:42:59 +0900</pubDate>
    </item>
    <item>
      <title>ddd</title>
      <link>https://doghj.tistory.com/113</link>
      <description>&lt;div data-message-model-slug=&quot;gpt-5-4-thinking&quot; data-message-id=&quot;fd9163e1-e61d-4d6c-8d17-015f38b96e4f&quot; data-message-author-role=&quot;assistant&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-is-only-node=&quot;&quot; data-is-last-node=&quot;&quot; data-end=&quot;113&quot; data-start=&quot;0&quot; data-ke-size=&quot;size16&quot;&gt;가이드 형태로 바로 쓸 수 있게 정리해볼게.&lt;br /&gt;특히 rsize/wsize 의미랑, &lt;b&gt;리눅스 노드 직접 마운트 성능&lt;/b&gt; / &lt;b&gt;Pod에 PV 붙였을 때 성능&lt;/b&gt;을 나눠서 비교하는 형태로 구성하겠어.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;38s 동안 생각함&lt;/div&gt;
&lt;div data-turn-start-message=&quot;true&quot; data-message-model-slug=&quot;gpt-5-4-thinking&quot; data-message-id=&quot;fd4bb14b-163e-4b7f-b78b-cb3ffd0307aa&quot; data-message-author-role=&quot;assistant&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-end=&quot;113&quot; data-start=&quot;0&quot; data-ke-size=&quot;size16&quot;&gt;좋아. 바로 문서에 넣을 수 있게 &lt;b&gt;가이드 초안 형태&lt;/b&gt;로 정리해줄게.&lt;br /&gt;핵심은 &lt;b&gt;리눅스 노드 직접 마운트 성능&lt;/b&gt;과 &lt;b&gt;Pod에서 PV로 붙였을 때 성능&lt;/b&gt;을 &lt;b&gt;같은 기준으로 비교&lt;/b&gt;하는 거야.&lt;/p&gt;
&lt;hr data-end=&quot;118&quot; data-start=&quot;115&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;147&quot; data-start=&quot;120&quot; data-section-id=&quot;1kl7xbm&quot;&gt;NFS 마운트 옵션 적용 및 성능 검증 가이드&lt;/h1&gt;
&lt;h2 data-end=&quot;157&quot; data-start=&quot;149&quot; data-section-id=&quot;zheshe&quot; data-ke-size=&quot;size26&quot;&gt;1. 목적&lt;/h2&gt;
&lt;p data-end=&quot;200&quot; data-start=&quot;159&quot; data-ke-size=&quot;size16&quot;&gt;NFS 스토리지를 다음 마운트 옵션으로 적용한 뒤, 실제 성능을 확인한다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;mount &lt;/span&gt;&lt;span&gt;-t&lt;/span&gt;&lt;span&gt; nfs &lt;/span&gt;&lt;span&gt;-o&lt;/span&gt;&lt;span&gt; rw&lt;/span&gt;&lt;span&gt;,vers&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;,tcp,hard,intr&lt;/span&gt;&lt;span&gt;,retry&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;,retrans&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;,timeo&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;600&lt;/span&gt;&lt;span&gt;,rsize&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;1048576&lt;/span&gt;&lt;span&gt;,wsize&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;1048576&lt;/span&gt;&lt;span&gt;,nconnect&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt; hdfs.sddc.test.com:/dir /mountdir&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;380&quot; data-start=&quot;356&quot; data-ke-size=&quot;size16&quot;&gt;성능 검증은 아래 2가지 관점으로 수행한다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;450&quot; data-start=&quot;382&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;412&quot; data-start=&quot;382&quot; data-section-id=&quot;vvd2mu&quot;&gt;&lt;b&gt;리눅스 노드에서 직접 마운트한 경우의 성능&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;450&quot; data-start=&quot;413&quot; data-section-id=&quot;n4lgyf&quot;&gt;&lt;b&gt;Kubernetes Pod에 PV로 연결한 경우의 성능&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-end=&quot;692&quot; data-start=&quot;452&quot; data-ke-size=&quot;size16&quot;&gt;특히 rsize, wsize는 중요한 확인 대상이다. Linux NFS 클라이언트는 rsize/wsize를 지정하지 않으면 클라이언트와 서버가 지원하는 최대값을 협상하며, Linux 클라이언트의 최대 READ/WRITE payload는 1,048,576 bytes(1MB)이다. 실제 적용된 값은 /proc/mounts에서 확인하는 것이 맞다.&lt;/p&gt;
&lt;hr data-end=&quot;697&quot; data-start=&quot;694&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;714&quot; data-start=&quot;699&quot; data-section-id=&quot;z1r9zl&quot; data-ke-size=&quot;size26&quot;&gt;2. 마운트 옵션 설명&lt;/h2&gt;
&lt;h3 data-end=&quot;725&quot; data-start=&quot;716&quot; data-section-id=&quot;h68w8z&quot; data-ke-size=&quot;size23&quot;&gt;주요 옵션&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2066&quot; data-start=&quot;727&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;822&quot; data-start=&quot;727&quot; data-section-id=&quot;6jdv1r&quot;&gt;vers=3&lt;br /&gt;NFS v3로 마운트한다. vers는 nfsvers와 동일한 의미다.&lt;/li&gt;
&lt;li data-end=&quot;896&quot; data-start=&quot;824&quot; data-section-id=&quot;1z10q56&quot;&gt;tcp&lt;br /&gt;TCP 기반으로 NFS 통신을 수행한다.&lt;/li&gt;
&lt;li data-end=&quot;1081&quot; data-start=&quot;898&quot; data-section-id=&quot;1ekj5tb&quot;&gt;hard&lt;br /&gt;요청 타임아웃 시 I/O를 실패 처리하지 않고 계속 재시도한다. 데이터 무결성 측면에서 일반적으로 soft보다 안전하다. soft는 특정 상황에서 silent data corruption 위험이 있다고 man page가 경고한다.&lt;/li&gt;
&lt;li data-end=&quot;1244&quot; data-start=&quot;1083&quot; data-section-id=&quot;qqipl6&quot;&gt;intr&lt;br /&gt;예전 호환성을 위한 옵션이며, &lt;b&gt;kernel 2.6.25 이후에는 무시된다&lt;/b&gt;. 즉 최신 Linux에서는 실질 효과를 기대하기 어렵다. 문서에는 넣되, &amp;ldquo;호환성 목적 옵션&amp;rdquo;이라고 써두는 게 맞다.&lt;/li&gt;
&lt;li data-end=&quot;1365&quot; data-start=&quot;1246&quot; data-section-id=&quot;8aulmm&quot;&gt;retry=2&lt;br /&gt;mount 명령 자체가 실패했을 때 재시도하는 시간 관련 옵션이다. foreground mount 기본값은 2분이다.&lt;/li&gt;
&lt;li data-end=&quot;1468&quot; data-start=&quot;1367&quot; data-section-id=&quot;l0xrpy&quot;&gt;retrans=5&lt;br /&gt;NFS 요청 재전송 횟수다. TCP에서 기본은 2회인데, 여기서는 5회로 늘린다.&lt;/li&gt;
&lt;li data-end=&quot;1601&quot; data-start=&quot;1470&quot; data-section-id=&quot;15blp1f&quot;&gt;timeo=600&lt;br /&gt;TCP NFS에서 응답 대기 시간이며 단위는 decisecond(1/10초)다. 즉 600은 60초다. TCP 기본값도 600이다.&lt;/li&gt;
&lt;li data-end=&quot;1729&quot; data-start=&quot;1603&quot; data-section-id=&quot;jwrp1j&quot;&gt;rsize=1048576&lt;br /&gt;한 번의 NFS READ 요청에서 받을 수 있는 최대 데이터 크기다. Linux NFS client 최대값은 1MB다.&lt;/li&gt;
&lt;li data-end=&quot;1858&quot; data-start=&quot;1731&quot; data-section-id=&quot;tksmca&quot;&gt;wsize=1048576&lt;br /&gt;한 번의 NFS WRITE 요청에서 보낼 수 있는 최대 데이터 크기다. Linux NFS client 최대값은 1MB다.&lt;/li&gt;
&lt;li data-end=&quot;2066&quot; data-start=&quot;1860&quot; data-section-id=&quot;1sv7q6j&quot;&gt;nconnect=8&lt;br /&gt;TCP 같은 connection-oriented protocol에서 &lt;b&gt;클라이언트와 서버 사이에 여러 연결을 생성&lt;/b&gt;해 성능 향상을 노릴 수 있는 옵션이다. 최대 16까지 가능하다. 특히 NIC가 여러 개 있거나 병렬 처리량 확보가 중요할 때 도움이 될 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;2071&quot; data-start=&quot;2068&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2088&quot; data-start=&quot;2073&quot; data-section-id=&quot;qhy1md&quot; data-ke-size=&quot;size26&quot;&gt;3. 핵심 판단 포인트&lt;/h2&gt;
&lt;p data-end=&quot;2105&quot; data-start=&quot;2090&quot; data-ke-size=&quot;size16&quot;&gt;이 가이드의 핵심은 아래다.&lt;/p&gt;
&lt;h3 data-end=&quot;2139&quot; data-start=&quot;2107&quot; data-section-id=&quot;10q9aux&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;3-1. rsize/wsize는 꼭 확인해야 함&lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;2390&quot; data-start=&quot;2140&quot; data-ke-size=&quot;size16&quot;&gt;문서 기준으로도 중요하고, 실제 Linux NFS 클라이언트도 rsize/wsize를 크게 잡을수록 요청당 전송량이 커져 처리량 확보에 유리하다.&lt;br /&gt;다만 &lt;b&gt;명령에 1MB를 써도 실제 적용값은 서버와의 협상 결과&lt;/b&gt;로 정해지므로, 반드시 &lt;b&gt;실제 mount 결과값&lt;/b&gt;을 확인해야 한다. /etc/mtab가 아니라 /proc/mounts를 보는 이유도 이 때문이다.&lt;/p&gt;
&lt;h3 data-end=&quot;2429&quot; data-start=&quot;2392&quot; data-section-id=&quot;1htfmmw&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;3-2. nconnect=8은 처리량 비교 항목으로 포함&lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;2559&quot; data-start=&quot;2430&quot; data-ke-size=&quot;size16&quot;&gt;여러 TCP 연결을 통해 부하를 분산할 수 있으므로, 단일 연결 대비 처리량 차이가 나는지 같이 확인할 가치가 있다. 다만 환경에 따라 차이가 없을 수도 있다.&lt;/p&gt;
&lt;h3 data-end=&quot;2591&quot; data-start=&quot;2561&quot; data-section-id=&quot;pwlzcf&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;3-3. intr은 성능 옵션으로 보지 않음&lt;/span&gt;&lt;/h3&gt;
&lt;p data-end=&quot;2671&quot; data-start=&quot;2592&quot; data-ke-size=&quot;size16&quot;&gt;이건 최신 커널에서 무시되므로 성능 검증 항목으로 잡지 않는 게 맞다.&lt;/p&gt;
&lt;hr data-end=&quot;2676&quot; data-start=&quot;2673&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2703&quot; data-start=&quot;2678&quot; data-section-id=&quot;10lgd0r&quot; data-ke-size=&quot;size26&quot;&gt;4. 리눅스 노드 직접 마운트 성능 검증&lt;/h2&gt;
&lt;h2 data-end=&quot;2715&quot; data-start=&quot;2705&quot; data-section-id=&quot;9hm4q&quot; data-ke-size=&quot;size26&quot;&gt;4.1 마운트&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;mkdir&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-p&lt;/span&gt;&lt;span&gt; /mountdir&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;mount &lt;/span&gt;&lt;span&gt;-t&lt;/span&gt;&lt;span&gt; nfs &lt;/span&gt;&lt;span&gt;-o&lt;/span&gt;&lt;span&gt; rw&lt;/span&gt;&lt;span&gt;,vers&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;,tcp,hard,intr&lt;/span&gt;&lt;span&gt;,retry&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;,retrans&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;,timeo&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;600&lt;/span&gt;&lt;span&gt;,rsize&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;1048576&lt;/span&gt;&lt;span&gt;,wsize&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;1048576&lt;/span&gt;&lt;span&gt;,nconnect&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt; \&lt;/span&gt;&lt;br /&gt;&lt;span&gt;hdfs.sddc.test.com:/dir /mountdir&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-end=&quot;2911&quot; data-start=&quot;2893&quot; data-section-id=&quot;1onqvy5&quot; data-ke-size=&quot;size26&quot;&gt;4.2 실제 적용 옵션 확인&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;mount | &lt;/span&gt;&lt;span&gt;grep&lt;/span&gt;&lt;span&gt; /mountdir&lt;/span&gt;&lt;br /&gt;&lt;span&gt;cat&lt;/span&gt;&lt;span&gt; /proc/mounts | &lt;/span&gt;&lt;span&gt;grep&lt;/span&gt;&lt;span&gt; /mountdir&lt;/span&gt;&lt;br /&gt;&lt;span&gt;nfsstat &lt;/span&gt;&lt;span&gt;-m&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-end=&quot;3004&quot; data-start=&quot;2994&quot; data-section-id=&quot;1brr8hz&quot; data-ke-size=&quot;size23&quot;&gt;확인 포인트&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;3086&quot; data-start=&quot;3005&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;3015&quot; data-start=&quot;3005&quot; data-section-id=&quot;1s9gbis&quot;&gt;vers=3&lt;/li&gt;
&lt;li data-end=&quot;3029&quot; data-start=&quot;3016&quot; data-section-id=&quot;168bif8&quot;&gt;proto=tcp&lt;/li&gt;
&lt;li data-end=&quot;3047&quot; data-start=&quot;3030&quot; data-section-id=&quot;5wfkyj&quot;&gt;rsize=1048576&lt;/li&gt;
&lt;li data-end=&quot;3065&quot; data-start=&quot;3048&quot; data-section-id=&quot;1hag0xq&quot;&gt;wsize=1048576&lt;/li&gt;
&lt;li data-end=&quot;3086&quot; data-start=&quot;3066&quot; data-section-id=&quot;12vbhrc&quot;&gt;nconnect=8 반영 여부&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;3179&quot; data-start=&quot;3088&quot; data-ke-size=&quot;size16&quot;&gt;/proc/mounts에는 &lt;b&gt;실제로 협상된 rsize/wsize 값&lt;/b&gt;이 표시된다.&lt;/p&gt;
&lt;hr data-end=&quot;3184&quot; data-start=&quot;3181&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;3204&quot; data-start=&quot;3186&quot; data-section-id=&quot;kbsqhc&quot; data-ke-size=&quot;size26&quot;&gt;4.3 기본 성능 측정 예시&lt;/h2&gt;
&lt;h3 data-end=&quot;3215&quot; data-start=&quot;3206&quot; data-section-id=&quot;14uloeq&quot; data-ke-size=&quot;size23&quot;&gt;순차 쓰기&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;fio &lt;/span&gt;&lt;span&gt;--name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;write_test \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--directory&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;/mountdir \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--filename&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;fio_write_test.dat \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--rw&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;write&lt;/span&gt;&lt;span&gt; \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--bs&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;1M \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--size&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;10G \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--ioengine&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;libaio \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--direct&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt; \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--iodepth&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt; \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--numjobs&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt; \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--runtime&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt; \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--time_based&lt;/span&gt;&lt;span&gt; \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--group_reporting&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-end=&quot;3513&quot; data-start=&quot;3504&quot; data-section-id=&quot;14ulf0f&quot; data-ke-size=&quot;size23&quot;&gt;순차 읽기&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;fio &lt;/span&gt;&lt;span&gt;--name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;read_test \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--directory&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;/mountdir \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--filename&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;fio_write_test.dat \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--rw&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;read \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--bs&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;1M \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--size&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;10G \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--ioengine&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;libaio \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--direct&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt; \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--iodepth&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt; \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--numjobs&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt; \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--runtime&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt; \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--time_based&lt;/span&gt;&lt;span&gt; \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--group_reporting&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-end=&quot;3812&quot; data-start=&quot;3800&quot; data-section-id=&quot;gq1xz0&quot; data-ke-size=&quot;size23&quot;&gt;랜덤 읽기/쓰기&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;fio &lt;/span&gt;&lt;span&gt;--name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;randrw_test \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--directory&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;/mountdir \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--filename&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;fio_randrw_test.dat \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--rw&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;randrw \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--rwmixread&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;70&lt;/span&gt;&lt;span&gt; \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--bs&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;4k \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--size&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;5G \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--ioengine&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;libaio \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--direct&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt; \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--iodepth&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;64&lt;/span&gt;&lt;span&gt; \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--numjobs&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt; \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--runtime&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt; \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--time_based&lt;/span&gt;&lt;span&gt; \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--group_reporting&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-end=&quot;4137&quot; data-start=&quot;4124&quot; data-section-id=&quot;yxlu0e&quot; data-ke-size=&quot;size26&quot;&gt;4.4 수집할 결과&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;4226&quot; data-start=&quot;4138&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;4165&quot; data-start=&quot;4138&quot; data-section-id=&quot;8qdqg1&quot;&gt;Bandwidth (MB/s 또는 GiB/s)&lt;/li&gt;
&lt;li data-end=&quot;4172&quot; data-start=&quot;4166&quot; data-section-id=&quot;1j3w7rh&quot;&gt;IOPS&lt;/li&gt;
&lt;li data-end=&quot;4198&quot; data-start=&quot;4173&quot; data-section-id=&quot;152iie5&quot;&gt;Latency (avg, p95, p99)&lt;/li&gt;
&lt;li data-end=&quot;4208&quot; data-start=&quot;4199&quot; data-section-id=&quot;1wkp557&quot;&gt;CPU 사용률&lt;/li&gt;
&lt;li data-end=&quot;4226&quot; data-start=&quot;4209&quot; data-section-id=&quot;14dk34a&quot;&gt;mount 옵션 실제 적용값&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;4231&quot; data-start=&quot;4228&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;4269&quot; data-start=&quot;4233&quot; data-section-id=&quot;ts7oio&quot; data-ke-size=&quot;size26&quot;&gt;5. Kubernetes Pod에서 PV 연결 후 성능 검증&lt;/h2&gt;
&lt;p data-end=&quot;4339&quot; data-start=&quot;4271&quot; data-ke-size=&quot;size16&quot;&gt;여기서는 &lt;b&gt;같은 NFS 서버/같은 export 경로/가능하면 같은 mount 옵션&lt;/b&gt;을 사용해 Pod 내부 성능을 본다.&lt;/p&gt;
&lt;h2 data-end=&quot;4360&quot; data-start=&quot;4341&quot; data-section-id=&quot;1eti556&quot; data-ke-size=&quot;size26&quot;&gt;5.1 PV/PVC 구성 예시&lt;/h2&gt;
&lt;h3 data-end=&quot;4368&quot; data-start=&quot;4362&quot; data-section-id=&quot;1hs05hc&quot; data-ke-size=&quot;size23&quot;&gt;PV&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;apiVersion: v1&lt;/span&gt;&lt;br /&gt;&lt;span&gt;kind: PersistentVolume&lt;/span&gt;&lt;br /&gt;&lt;span&gt;metadata:&lt;/span&gt;&lt;br /&gt;&lt;span&gt; name: nfs-perf-pv&lt;/span&gt;&lt;br /&gt;&lt;span&gt;spec:&lt;/span&gt;&lt;br /&gt;&lt;span&gt; capacity:&lt;/span&gt;&lt;br /&gt;&lt;span&gt; storage: 100Gi&lt;/span&gt;&lt;br /&gt;&lt;span&gt; accessModes:&lt;/span&gt;&lt;br /&gt;&lt;span&gt; - ReadWriteMany&lt;/span&gt;&lt;br /&gt;&lt;span&gt; persistentVolumeReclaimPolicy: Retain&lt;/span&gt;&lt;br /&gt;&lt;span&gt; mountOptions:&lt;/span&gt;&lt;br /&gt;&lt;span&gt; - vers=3&lt;/span&gt;&lt;br /&gt;&lt;span&gt; - tcp&lt;/span&gt;&lt;br /&gt;&lt;span&gt; - hard&lt;/span&gt;&lt;br /&gt;&lt;span&gt; - intr&lt;/span&gt;&lt;br /&gt;&lt;span&gt; - retry=2&lt;/span&gt;&lt;br /&gt;&lt;span&gt; - retrans=5&lt;/span&gt;&lt;br /&gt;&lt;span&gt; - timeo=600&lt;/span&gt;&lt;br /&gt;&lt;span&gt; - rsize=1048576&lt;/span&gt;&lt;br /&gt;&lt;span&gt; - wsize=1048576&lt;/span&gt;&lt;br /&gt;&lt;span&gt; - nconnect=8&lt;/span&gt;&lt;br /&gt;&lt;span&gt; nfs:&lt;/span&gt;&lt;br /&gt;&lt;span&gt; server: hdfs.sddc.test.com&lt;/span&gt;&lt;br /&gt;&lt;span&gt; path: /dir&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-end=&quot;4787&quot; data-start=&quot;4780&quot; data-section-id=&quot;1xxfpfn&quot; data-ke-size=&quot;size23&quot;&gt;PVC&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;apiVersion: v1&lt;/span&gt;&lt;br /&gt;&lt;span&gt;kind: PersistentVolumeClaim&lt;/span&gt;&lt;br /&gt;&lt;span&gt;metadata:&lt;/span&gt;&lt;br /&gt;&lt;span&gt; name: nfs-perf-pvc&lt;/span&gt;&lt;br /&gt;&lt;span&gt;spec:&lt;/span&gt;&lt;br /&gt;&lt;span&gt; accessModes:&lt;/span&gt;&lt;br /&gt;&lt;span&gt; - ReadWriteMany&lt;/span&gt;&lt;br /&gt;&lt;span&gt; resources:&lt;/span&gt;&lt;br /&gt;&lt;span&gt; requests:&lt;/span&gt;&lt;br /&gt;&lt;span&gt; storage: 100Gi&lt;/span&gt;&lt;br /&gt;&lt;span&gt; volumeName: nfs-perf-pv&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;blockquote data-end=&quot;5275&quot; data-start=&quot;4991&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;5275&quot; data-start=&quot;4993&quot; data-ke-size=&quot;size16&quot;&gt;참고: Pod에서 사용하는 NFS mount option은 CSI/NFS provisioner/PV 방식에 따라 반영 방식이 조금 다를 수 있으므로, &lt;b&gt;노드의 실제 mount 정보&lt;/b&gt;나 Pod 내부 테스트 결과를 함께 확인해야 한다.&lt;br /&gt;특히 nconnect는 커널/클라이언트 지원 여부 영향을 받으니 실제 노드 mount 결과 확인이 필요하다. nconnect 자체는 Linux NFS man page에 정의되어 있다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-end=&quot;5280&quot; data-start=&quot;5277&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;5299&quot; data-start=&quot;5282&quot; data-section-id=&quot;dswopf&quot; data-ke-size=&quot;size26&quot;&gt;5.2 테스트 Pod 예시&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;apiVersion: v1&lt;/span&gt;&lt;br /&gt;&lt;span&gt;kind: Pod&lt;/span&gt;&lt;br /&gt;&lt;span&gt;metadata:&lt;/span&gt;&lt;br /&gt;&lt;span&gt; name: nfs-perf-test&lt;/span&gt;&lt;br /&gt;&lt;span&gt;spec:&lt;/span&gt;&lt;br /&gt;&lt;span&gt; containers:&lt;/span&gt;&lt;br /&gt;&lt;span&gt; - name: fio&lt;/span&gt;&lt;br /&gt;&lt;span&gt; image: alpine:3.20&lt;/span&gt;&lt;br /&gt;&lt;span&gt; command: [&lt;/span&gt;&lt;span&gt;&quot;/bin/sh&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;-c&quot;&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;br /&gt;&lt;span&gt; args:&lt;/span&gt;&lt;br /&gt;&lt;span&gt; - apk add --no-cache fio &amp;amp;&amp;amp; sleep 36000&lt;/span&gt;&lt;br /&gt;&lt;span&gt; volumeMounts:&lt;/span&gt;&lt;br /&gt;&lt;span&gt; - name: testvol&lt;/span&gt;&lt;br /&gt;&lt;span&gt; mountPath: /data&lt;/span&gt;&lt;br /&gt;&lt;span&gt; volumes:&lt;/span&gt;&lt;br /&gt;&lt;span&gt; - name: testvol&lt;/span&gt;&lt;br /&gt;&lt;span&gt; persistentVolumeClaim:&lt;/span&gt;&lt;br /&gt;&lt;span&gt; claimName: nfs-perf-pvc&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;5696&quot; data-start=&quot;5688&quot; data-ke-size=&quot;size16&quot;&gt;배포 후 접속:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;kubectl exec &lt;/span&gt;&lt;span&gt;-it&lt;/span&gt;&lt;span&gt; nfs-perf-test &lt;/span&gt;&lt;span&gt;--&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;sh&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;5751&quot; data-start=&quot;5748&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;5772&quot; data-start=&quot;5753&quot; data-section-id=&quot;10fmcle&quot; data-ke-size=&quot;size26&quot;&gt;5.3 Pod 내부 성능 측정&lt;/h2&gt;
&lt;h3 data-end=&quot;5783&quot; data-start=&quot;5774&quot; data-section-id=&quot;14uloeq&quot; data-ke-size=&quot;size23&quot;&gt;순차 쓰기&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;fio &lt;/span&gt;&lt;span&gt;--name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;write_test \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--directory&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;/data \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--filename&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;fio_write_test.dat \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--rw&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;write&lt;/span&gt;&lt;span&gt; \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--bs&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;1M \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--size&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;10G \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--ioengine&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;libaio \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--direct&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt; \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--iodepth&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt; \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--numjobs&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt; \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--runtime&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt; \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--time_based&lt;/span&gt;&lt;span&gt; \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--group_reporting&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-end=&quot;6077&quot; data-start=&quot;6068&quot; data-section-id=&quot;14ulf0f&quot; data-ke-size=&quot;size23&quot;&gt;순차 읽기&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;fio &lt;/span&gt;&lt;span&gt;--name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;read_test \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--directory&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;/data \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--filename&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;fio_write_test.dat \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--rw&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;read \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--bs&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;1M \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--size&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;10G \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--ioengine&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;libaio \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--direct&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt; \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--iodepth&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt; \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--numjobs&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt; \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--runtime&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt; \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--time_based&lt;/span&gt;&lt;span&gt; \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--group_reporting&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-end=&quot;6372&quot; data-start=&quot;6360&quot; data-section-id=&quot;gq1xz0&quot; data-ke-size=&quot;size23&quot;&gt;랜덤 읽기/쓰기&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;fio &lt;/span&gt;&lt;span&gt;--name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;randrw_test \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--directory&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;/data \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--filename&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;fio_randrw_test.dat \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--rw&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;randrw \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--rwmixread&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;70&lt;/span&gt;&lt;span&gt; \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--bs&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;4k \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--size&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;5G \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--ioengine&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;libaio \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--direct&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt; \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--iodepth&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;64&lt;/span&gt;&lt;span&gt; \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--numjobs&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt; \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--runtime&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt; \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--time_based&lt;/span&gt;&lt;span&gt; \&lt;/span&gt;&lt;br /&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--group_reporting&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;6683&quot; data-start=&quot;6680&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;6696&quot; data-start=&quot;6685&quot; data-section-id=&quot;1ghls6t&quot; data-ke-size=&quot;size26&quot;&gt;6. 비교 방법&lt;/h2&gt;
&lt;p data-end=&quot;6715&quot; data-start=&quot;6698&quot; data-ke-size=&quot;size16&quot;&gt;같은 조건으로 아래를 비교한다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;구분리눅스 노드 직접 마운트Pod + PV
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;6921&quot; data-start=&quot;6717&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody data-end=&quot;6921&quot; data-start=&quot;6767&quot;&gt;
&lt;tr data-end=&quot;6793&quot; data-start=&quot;6767&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;6780&quot; data-start=&quot;6767&quot;&gt;순차 쓰기 MB/s&lt;/td&gt;
&lt;td data-end=&quot;6786&quot; data-start=&quot;6780&quot; data-col-size=&quot;sm&quot;&gt;측정값&lt;/td&gt;
&lt;td data-end=&quot;6793&quot; data-start=&quot;6786&quot; data-col-size=&quot;sm&quot;&gt;측정값&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;6820&quot; data-start=&quot;6794&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;6807&quot; data-start=&quot;6794&quot;&gt;순차 읽기 MB/s&lt;/td&gt;
&lt;td data-end=&quot;6813&quot; data-start=&quot;6807&quot; data-col-size=&quot;sm&quot;&gt;측정값&lt;/td&gt;
&lt;td data-end=&quot;6820&quot; data-start=&quot;6813&quot; data-col-size=&quot;sm&quot;&gt;측정값&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;6844&quot; data-start=&quot;6821&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;6831&quot; data-start=&quot;6821&quot;&gt;랜덤 IOPS&lt;/td&gt;
&lt;td data-end=&quot;6837&quot; data-start=&quot;6831&quot; data-col-size=&quot;sm&quot;&gt;측정값&lt;/td&gt;
&lt;td data-end=&quot;6844&quot; data-start=&quot;6837&quot; data-col-size=&quot;sm&quot;&gt;측정값&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;6868&quot; data-start=&quot;6845&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;6855&quot; data-start=&quot;6845&quot;&gt;평균 지연시간&lt;/td&gt;
&lt;td data-end=&quot;6861&quot; data-start=&quot;6855&quot; data-col-size=&quot;sm&quot;&gt;측정값&lt;/td&gt;
&lt;td data-end=&quot;6868&quot; data-start=&quot;6861&quot; data-col-size=&quot;sm&quot;&gt;측정값&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;6897&quot; data-start=&quot;6869&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;6884&quot; data-start=&quot;6869&quot;&gt;p95/p99 지연시간&lt;/td&gt;
&lt;td data-end=&quot;6890&quot; data-start=&quot;6884&quot; data-col-size=&quot;sm&quot;&gt;측정값&lt;/td&gt;
&lt;td data-end=&quot;6897&quot; data-start=&quot;6890&quot; data-col-size=&quot;sm&quot;&gt;측정값&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;6921&quot; data-start=&quot;6898&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;6908&quot; data-start=&quot;6898&quot;&gt;CPU 사용률&lt;/td&gt;
&lt;td data-end=&quot;6914&quot; data-start=&quot;6908&quot; data-col-size=&quot;sm&quot;&gt;측정값&lt;/td&gt;
&lt;td data-end=&quot;6921&quot; data-start=&quot;6914&quot; data-col-size=&quot;sm&quot;&gt;측정값&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-end=&quot;6932&quot; data-start=&quot;6923&quot; data-section-id=&quot;fs21wf&quot; data-ke-size=&quot;size23&quot;&gt;해석 기준&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;7171&quot; data-start=&quot;6933&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;7024&quot; data-start=&quot;6933&quot; data-section-id=&quot;sapnid&quot;&gt;&lt;b&gt;노드 직접 마운트가 더 높고 Pod가 낮다면&lt;/b&gt;&lt;br /&gt;Kubernetes 경유 오버헤드, 네트워크 네임스페이스, 스토리지 플러그인/마운트 방식 차이를 의심&lt;/li&gt;
&lt;li data-end=&quot;7100&quot; data-start=&quot;7025&quot; data-section-id=&quot;1j977lt&quot;&gt;&lt;b&gt;둘 다 비슷하게 낮다면&lt;/b&gt;&lt;br /&gt;NFS 서버 성능, 네트워크 대역폭, export 설정, 서버측 디스크 병목 가능성 우선 확인&lt;/li&gt;
&lt;li data-end=&quot;7171&quot; data-start=&quot;7101&quot; data-section-id=&quot;32euto&quot;&gt;&lt;b&gt;rsize/wsize가 1MB로 협상되지 않았다면&lt;/b&gt;&lt;br /&gt;서버/클라이언트 조합상 실제 1MB가 적용되지 않은 것&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;7176&quot; data-start=&quot;7173&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;7192&quot; data-start=&quot;7178&quot; data-section-id=&quot;1mjz8w8&quot; data-ke-size=&quot;size26&quot;&gt;7. 권장 검증 절차&lt;/h2&gt;
&lt;h3 data-end=&quot;7201&quot; data-start=&quot;7194&quot; data-section-id=&quot;1xwnzx7&quot; data-ke-size=&quot;size23&quot;&gt;1단계&lt;/h3&gt;
&lt;p data-end=&quot;7258&quot; data-start=&quot;7202&quot; data-ke-size=&quot;size16&quot;&gt;리눅스 노드에서 직접 마운트 후 /proc/mounts, nfsstat -m로 실제 옵션 확인&lt;/p&gt;
&lt;h3 data-end=&quot;7267&quot; data-start=&quot;7260&quot; data-section-id=&quot;1xwo3vc&quot; data-ke-size=&quot;size23&quot;&gt;2단계&lt;/h3&gt;
&lt;p data-end=&quot;7294&quot; data-start=&quot;7268&quot; data-ke-size=&quot;size16&quot;&gt;노드에서 fio로 baseline 성능 측정&lt;/p&gt;
&lt;h3 data-end=&quot;7303&quot; data-start=&quot;7296&quot; data-section-id=&quot;1xwnyc9&quot; data-ke-size=&quot;size23&quot;&gt;3단계&lt;/h3&gt;
&lt;p data-end=&quot;7325&quot; data-start=&quot;7304&quot; data-ke-size=&quot;size16&quot;&gt;동일 export를 PV/PVC로 연결&lt;/p&gt;
&lt;h3 data-end=&quot;7334&quot; data-start=&quot;7327&quot; data-section-id=&quot;1xwnqu6&quot; data-ke-size=&quot;size23&quot;&gt;4단계&lt;/h3&gt;
&lt;p data-end=&quot;7360&quot; data-start=&quot;7335&quot; data-ke-size=&quot;size16&quot;&gt;Pod 내부에서 동일 fio 조건으로 측정&lt;/p&gt;
&lt;h3 data-end=&quot;7369&quot; data-start=&quot;7362&quot; data-section-id=&quot;1xwo333&quot; data-ke-size=&quot;size23&quot;&gt;5단계&lt;/h3&gt;
&lt;p data-end=&quot;7385&quot; data-start=&quot;7370&quot; data-ke-size=&quot;size16&quot;&gt;노드 vs Pod 결과 비교&lt;/p&gt;
&lt;h3 data-end=&quot;7394&quot; data-start=&quot;7387&quot; data-section-id=&quot;1xwnp98&quot; data-ke-size=&quot;size23&quot;&gt;6단계&lt;/h3&gt;
&lt;p data-end=&quot;7408&quot; data-start=&quot;7395&quot; data-ke-size=&quot;size16&quot;&gt;필요 시 아래 추가 비교&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;7532&quot; data-start=&quot;7409&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;7439&quot; data-start=&quot;7409&quot; data-section-id=&quot;wiomzo&quot;&gt;nconnect=1 vs nconnect=8&lt;/li&gt;
&lt;li data-end=&quot;7475&quot; data-start=&quot;7440&quot; data-section-id=&quot;1nuwfvo&quot;&gt;rsize/wsize=262144 vs 1048576&lt;/li&gt;
&lt;li data-end=&quot;7532&quot; data-start=&quot;7476&quot; data-section-id=&quot;gzwy9n&quot;&gt;vers=3 vs vers=4.1&lt;br /&gt;단, 이번 가이드의 기본안은 vers=3 기준&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;7537&quot; data-start=&quot;7534&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;7560&quot; data-start=&quot;7539&quot; data-section-id=&quot;10t9q38&quot; data-ke-size=&quot;size26&quot;&gt;8. 문서에 넣을 만한 결론 문구&lt;/h2&gt;
&lt;p data-end=&quot;7572&quot; data-start=&quot;7562&quot; data-ke-size=&quot;size16&quot;&gt;아래처럼 써도 돼.&lt;/p&gt;
&lt;blockquote data-end=&quot;7938&quot; data-start=&quot;7574&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;7938&quot; data-start=&quot;7576&quot; data-ke-size=&quot;size16&quot;&gt;NFS 마운트 성능 검증 시 rsize와 wsize는 핵심 확인 항목이다. Linux NFS 클라이언트는 서버와의 협상을 통해 최대 1MB까지 READ/WRITE payload를 사용할 수 있으므로, 실제 처리량 확보를 위해 rsize=1048576, wsize=1048576 설정 여부와 협상 결과를 반드시 확인해야 한다. 실제 적용값은 /proc/mounts 또는 nfsstat -m 기준으로 검증한다. 또한 노드 직접 마운트 성능과 Kubernetes Pod에서 PV로 연결한 성능을 각각 측정하여, 플랫폼 경유 오버헤드 유무를 함께 판단해야 한다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-end=&quot;7943&quot; data-start=&quot;7940&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;7955&quot; data-start=&quot;7945&quot; data-section-id=&quot;srsthz&quot; data-ke-size=&quot;size26&quot;&gt;9. 주의사항&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;8298&quot; data-start=&quot;7957&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;8050&quot; data-start=&quot;7957&quot; data-section-id=&quot;lo786w&quot;&gt;intr은 최신 Linux에서는 무시되므로, 성능 향상 목적 옵션으로 해석하면 안 된다.&lt;/li&gt;
&lt;li data-end=&quot;8145&quot; data-start=&quot;8051&quot; data-section-id=&quot;jskjnd&quot;&gt;hard는 안정성 관점에서 일반적으로 유리하지만, 장애 시 I/O가 오래 대기할 수 있다.&lt;/li&gt;
&lt;li data-end=&quot;8298&quot; data-start=&quot;8146&quot; data-section-id=&quot;d4sgmm&quot;&gt;nconnect=8은 환경에 따라 효과 차이가 있으므로 반드시 실측으로 판단해야 한다. man page는 다중 연결이 성능 향상에 유리할 수 있다고 설명하지만, 항상 향상된다고 보장하진 않는다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;8387&quot; data-start=&quot;8300&quot; data-ke-size=&quot;size16&quot;&gt;원하면 내가 이걸 바로 &lt;b&gt;운영 가이드 문체&lt;/b&gt;로 더 다듬어서&lt;br /&gt;목적 / 사전조건 / 절차 / 검증 / 결과해석 / 주의사항 형식의 완성본으로 써줄게.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <author>독현진</author>
      <guid isPermaLink="true">https://doghj.tistory.com/113</guid>
      <comments>https://doghj.tistory.com/113#entry113comment</comments>
      <pubDate>Mon, 20 Apr 2026 22:03:48 +0900</pubDate>
    </item>
    <item>
      <title>스케</title>
      <link>https://doghj.tistory.com/112</link>
      <description>&lt;h3 data-path-to-node=&quot;2&quot; data-ke-size=&quot;size23&quot;&gt;API 서버와의 통신 (Client Connection) 적용 가이드&lt;/h3&gt;
&lt;p data-path-to-node=&quot;3&quot; data-ke-size=&quot;size16&quot;&gt;스케줄러가 API 서버로부터 클러스터 상태(노드, 파드 정보)를 가져오거나 배치 결정을 보낼 때 사용하는 통로를 넓히는 작업입니다. 대규모 워크로드가 한꺼번에 생성될 때 발생하는 Throttling(속도 제한) 문제를 해결합니다.&lt;/p&gt;
&lt;h4 data-path-to-node=&quot;4&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4&quot;&gt;Step 1: 설정 파일(ConfigMap 또는 File) 확인&lt;/b&gt;&lt;/h4&gt;
&lt;p data-path-to-node=&quot;5&quot; data-ke-size=&quot;size16&quot;&gt;일반적으로 쿠버네티스 컨트롤 플레인 구성 요소들은 /etc/kubernetes/manifests/kube-scheduler.yaml 파일에 실행 옵션이 정의되어 있습니다. 먼저 이 파일에서 --config 옵션이 가리키는 경로를 확인하세요.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;6&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,0,0&quot;&gt;설정 파일 경로 예시&lt;/b&gt;: /etc/kubernetes/scheduler-config.yaml&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-path-to-node=&quot;7&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7&quot;&gt;Step 2: YAML 파일 수정&lt;/b&gt;&lt;/h4&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;확인한 설정 파일의 clientConnection 섹션을 다음과 같이 수정합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;YAML&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
# ... 기타 설정 ...

# [튜닝 포인트] API 서버 통신 설정
clientConnection:
  kubeconfig: &quot;/etc/kubernetes/scheduler.conf&quot; # 스케줄러 권한 인증 파일
  qps: 100    # (기본값: 50) 초당 지속적으로 보낼 수 있는 요청 수
  burst: 200  # (기본값: 100) 짧은 순간 최대 허용 요청 수
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-path-to-node=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10&quot;&gt;[이미지: Kubernetes API Server Throttling Concept - Client-side QPS and Burst]&lt;/b&gt;&lt;/p&gt;
&lt;h4 data-path-to-node=&quot;11&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11&quot;&gt;Step 3: 파라미터 상세 설명 (가이드 기입용)&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;12&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,0,0&quot;&gt;qps (Queries Per Second)&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;12,0,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,0,1,0,0&quot;&gt;의미&lt;/b&gt;: 스케줄러가 API 서버와 대화하는 '속도 차선'의 너비입니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,0,1,1,0&quot;&gt;권장값&lt;/b&gt;: 노드 수가 500개 이상이거나 초당 수십 개의 파드가 생성되는 환경에서는 &lt;b data-index-in-node=&quot;46&quot; data-path-to-node=&quot;12,0,1,1,0&quot;&gt;100~200&lt;/b&gt;으로 상향합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,1,0&quot;&gt;burst&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;12,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,1,1,0,0&quot;&gt;의미&lt;/b&gt;: 일시적인 트래픽 폭주 시 허용되는 '임시 갓길'입니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,1,1,1,0&quot;&gt;권장값&lt;/b&gt;: 보통 &lt;b data-index-in-node=&quot;8&quot; data-path-to-node=&quot;12,1,1,1,0&quot;&gt;QPS의 2배&lt;/b&gt; 정도로 설정합니다. (예: QPS 100이면 Burst 200)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-path-to-node=&quot;16&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16&quot;&gt;Step 5: 튜닝 결과 검증 (Metrics)&lt;/b&gt;&lt;/h4&gt;
&lt;p data-path-to-node=&quot;17&quot; data-ke-size=&quot;size16&quot;&gt;실제로 튜닝이 효과가 있는지 확인하려면 스케줄러 메트릭을 모니터링해야 합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;18&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;18,0,0&quot;&gt;확인할 메트릭&lt;/b&gt;: rest_client_request_duration_seconds&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;18,1,0&quot;&gt;로그 확인&lt;/b&gt;: 스케줄러 로그에 Throttling request...라는 경고 문구가 사라졌는지 확인합니다.&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;Bash&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;maxima&quot;&gt;&lt;code&gt;kubectl logs -n kube-system [스케줄러_파드_이름] | grep -i throttle&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;@@@@@@@@@@@@@@@@@@@@@@&lt;/p&gt;
&lt;p data-path-to-node=&quot;0&quot; data-ke-size=&quot;size16&quot;&gt;가이드의 &lt;b data-index-in-node=&quot;5&quot; data-path-to-node=&quot;0&quot;&gt;&quot;고가용성 및 안정성 (HA &amp;amp; Stability) 튜닝&quot;&lt;/b&gt; 섹션은 클러스터의 중단 없는 운영과 장애 복구 속도를 결정하는 중요한 파트입니다. 이 설정들은 주로 스케줄러 간의 주도권 싸움(Leader Election)과 실패한 작업의 재시도 로직을 다룹니다.&lt;/p&gt;
&lt;hr data-path-to-node=&quot;1&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-path-to-node=&quot;2&quot; data-ke-size=&quot;size26&quot;&gt;3. 고가용성 및 안정성 (HA &amp;amp; Stability) 적용 가이드&lt;/h2&gt;
&lt;p data-path-to-node=&quot;3&quot; data-ke-size=&quot;size16&quot;&gt;이 영역은 스케줄러가 여러 대 실행되는 환경에서 &lt;b data-index-in-node=&quot;27&quot; data-path-to-node=&quot;3&quot;&gt;어떻게 리더를 유지하는지&lt;/b&gt;, 그리고 배치에 실패했을 때 &lt;b data-index-in-node=&quot;57&quot; data-path-to-node=&quot;3&quot;&gt;얼마나 영리하게 다시 시도하는지&lt;/b&gt;를 설정합니다.&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;4&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4&quot;&gt;① 리더 선출 (Leader Election) 튜닝&lt;/b&gt;&lt;/h3&gt;
&lt;p data-path-to-node=&quot;5&quot; data-ke-size=&quot;size16&quot;&gt;스케줄러는 보통 3대의 마스터 노드에서 실행되지만, 실제 배치는 '리더' 1대만 수행합니다. 리더 노드에 문제가 생겼을 때 다른 노드가 빠르게 리더를 넘겨받도록 설정하는 것이 핵심입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;6&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,0,0&quot;&gt;방법&lt;/b&gt;: KubeSchedulerConfiguration의 leaderElection 섹션을 수정합니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,1,0&quot;&gt;YAML 예시&lt;/b&gt;:&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;YAML&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;dts&quot;&gt;&lt;code&gt;leaderElection:
  leaderElect: true               # 다중 스케줄러 운영 시 필수
  leaseDuration: 15s              # 리더가 갱신 안 될 때 대기 시간 (기본 15s)
  renewDeadline: 10s              # 리더가 갱신을 시도하는 기한 (기본 10s)
  retryPeriod: 2s                 # 리더 선출 재시도 간격 (기본 2s)
  resourceName: &quot;kube-scheduler&quot;
  resourceNamespace: &quot;kube-system&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,2,0&quot;&gt;튜닝 팁&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;6,2,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;네트워크가 불안정한 환경에서 leaseDuration을 너무 짧게 잡으면 리더가 계속 바뀌는 '플래핑(Flapping)' 현상이 발생합니다.&lt;/li&gt;
&lt;li&gt;고성능/안정적인 네트워크라면 이 값들을 낮추어 장애 조치(Failover) 시간을 줄일 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-path-to-node=&quot;7&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;8&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8&quot;&gt;② 백오프(Backoff) 정책 튜닝&lt;/b&gt;&lt;/h3&gt;
&lt;p data-path-to-node=&quot;9&quot; data-ke-size=&quot;size16&quot;&gt;파드가 노드에 배치되지 못했을 때(예: 자원 부족), 스케줄러는 해당 파드를 큐에 넣고 다시 시도합니다. 이 재시도 간격을 조절하여 스케줄러의 불필요한 연산을 줄입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;10&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,0,0&quot;&gt;방법&lt;/b&gt;: 전역 설정 필드에서 직접 수정합니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,1,0&quot;&gt;YAML 예시&lt;/b&gt;:&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;YAML&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;podInitialBackoffSeconds: 1     # 첫 실패 후 재시도까지 대기 시간 (기본 1s)
podMaxBackoffSeconds: 10        # 재시도 대기 시간의 최대치 (기본 10s)
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,2,0&quot;&gt;튜닝 팁&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;10,2,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클러스터가 항상 꽉 차 있는 환경이라면 이 값을 높여(Initial: 5s, Max: 30s) 스케줄러가 계속해서 불가능한 계산을 반복하지 않도록 '휴식기'를 주는 것이 좋습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-path-to-node=&quot;11&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;12&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12&quot;&gt;③ 헬스 체크 및 메트릭 바인딩 (Health &amp;amp; Metrics)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-path-to-node=&quot;13&quot; data-ke-size=&quot;size16&quot;&gt;안정적인 운영을 위해서는 스케줄러가 살아있는지 외부에서 감시할 수 있어야 합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;14&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;14,0,0&quot;&gt;방법&lt;/b&gt;: healthzBindAddress와 metricsBindAddress를 설정합니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;14,1,0&quot;&gt;YAML 예시&lt;/b&gt;:&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;YAML&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;healthzBindAddress: 0.0.0.0:10259   # 헬스 체크 주소 (HTTPS 포트)
metricsBindAddress: 0.0.0.0:10259   # 메트릭 노출 주소
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;14,2,0&quot;&gt;보안 팁&lt;/b&gt;: 외부 노출이 걱정된다면 127.0.0.1로 설정하여 로컬 통신만 허용하세요.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-path-to-node=&quot;15&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;16&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16&quot;&gt;④ 적용 확인 (Troubleshooting)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-path-to-node=&quot;17&quot; data-ke-size=&quot;size16&quot;&gt;설정을 변경한 후에는 아래 명령어를 통해 리더 선출이 정상적으로 이루어지는지 확인해야 합니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;18&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;18,0,0&quot;&gt;리더 확인&lt;/b&gt;:&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;Bash&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;clean&quot;&gt;&lt;code&gt;kubectl get endpoints kube-scheduler -n kube-system -o yaml
# 'control-plane.alpha.kubernetes.io/leader' 어노테이션에서 현재 리더 확인
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;18,1,0&quot;&gt;이벤트 모니터링&lt;/b&gt;:&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;Bash&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;kubectl get events -n kube-system --field-selector involvedObject.name=kube-scheduler
# 리더 선출 과정(LeaderElection) 로그 확인&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금까지 튜닝포인트 설정 예시&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;YAML&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
# 1. 인증 및 API 통신 설정 (clientConnection)
clientConnection:
  kubeconfig: &quot;/etc/kubernetes/scheduler.conf&quot;
  qps: 100       # [튜닝] 초당 요청 수 상향
  burst: 200     # [튜닝] 순간 최대 요청 수 상향

# 2. 성능 및 알고리즘 전역 설정
parallelism: 16                    # [튜닝] 병렬 처리 고루틴 수
percentageOfNodesToScore: 20       # [튜닝] 노드 탐색 비율 (대규모 클러스터용)

# 3. 고가용성(HA) 및 리더 선출 설정
leaderElection:
  leaderElect: true
  leaseDuration: 15s               # [튜닝] 장애 감지 시간 관련
  renewDeadline: 10s
  retryPeriod: 2s
  resourceName: &quot;kube-scheduler&quot;
  resourceNamespace: &quot;kube-system&quot;

# 4. 안정성 및 모니터링 접점 설정
healthzBindAddress: 0.0.0.0:10259   # [튜닝] 모든 인터페이스에서 헬스체크 허용
metricsBindAddress: 0.0.0.0:10259   # [튜닝] 모든 인터페이스에서 메트릭 수집 허용

# 5. 재시도 로직 설정
podInitialBackoffSeconds: 1        # [튜닝] 실패 시 첫 재시도 대기 시간
podMaxBackoffSeconds: 10           # [튜닝] 재시도 최대 대기 시간

# 6. 세부 스케줄링 프로파일 (전략)
profiles:
  - schedulerName: default-scheduler
    # 이 아래에 플러그인 설정(Bin-packing 등)이 들어갑니다.
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;0&quot; data-ke-size=&quot;size16&quot;&gt;**익스텐더(Extender)**는 쿠버네티스 기본 스케줄러의 기능을 수정하지 않고, **외부 서비스(HTTP Server)**를 호출하여 스케줄링 의사결정에 참여시키는 방식입니다. 특정 하드웨어 전용 로직이나 복잡한 비즈니스 조건이 필요할 때 사용합니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;1&quot; data-ke-size=&quot;size16&quot;&gt;이 설정은 매우 민감한데, 외부 호출이 지연되면 전체 클러스터의 파드 배치 속도가 느려지기 때문입니다.&lt;/p&gt;
&lt;hr data-path-to-node=&quot;2&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;3&quot; data-ke-size=&quot;size23&quot;&gt;1. 익스텐더(Extender) 설정 상세 가이드&lt;/h3&gt;
&lt;p data-path-to-node=&quot;4&quot; data-ke-size=&quot;size16&quot;&gt;익스텐더 설정 역시 KubeSchedulerConfiguration 파일 내부에 위치하지만, &lt;b data-index-in-node=&quot;52&quot; data-path-to-node=&quot;4&quot;&gt;extenders라는 전역 배열&lt;/b&gt; 형태로 작성합니다.&lt;/p&gt;
&lt;h4 data-path-to-node=&quot;5&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5&quot;&gt;YAML 삽입 위치 및 상세 예시&lt;/b&gt;&lt;/h4&gt;
&lt;p data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;profiles 섹션과 동등한 최상위 레벨에 위치합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;YAML&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
# --- 전역 설정 영역 ---
# 1. 익스텐더 설정
extenders:
  - urlPrefix: &quot;https://my-scheduler-extender.com/api&quot; # 익스텐더 서비스 주소
    filterVerb: &quot;filter&quot;   # 노드 필터링 시 호출할 엔드포인트
    prioritizeVerb: &quot;prioritize&quot; # 점수 매길 때 호출할 엔드포인트
    weight: 1              # 이 익스텐더 점수의 가중치
    enableHTTPS: true      # HTTPS 사용 여부
    httpTimeout: 5s        # [튜닝] 매우 중요! 타임아웃 설정
    nodeCacheCapable: true # 스케줄러가 노드 정보를 캐싱하여 전달할지 여부
    managedResources:      # 이 익스텐더가 관리할 특수 리소스
      - name: &quot;example.com/special-gpu&quot;
        ignoredByScheduler: true

# 2. 다른 전역 설정들
parallelism: 16
# ... 생략 ...

profiles:
  - schedulerName: default-scheduler
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-path-to-node=&quot;8&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;9&quot; data-ke-size=&quot;size23&quot;&gt;2. 핵심 튜닝 포인트 및 파라미터 설명&lt;/h3&gt;
&lt;p data-path-to-node=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;가이드에 다음 내용을 포함하면 독자가 성능 저하를 방지하는 데 큰 도움이 됩니다.&lt;/p&gt;
&lt;h4 data-path-to-node=&quot;11&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11&quot;&gt;① httpTimeout (응답 대기 시간)&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;12&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,0,0&quot;&gt;설명&lt;/b&gt;: 스케줄러가 외부 익스텐더의 응답을 얼마나 기다릴지 결정합니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,1,0&quot;&gt;튜닝&lt;/b&gt;: 기본값은 없으나 보통 &lt;b data-index-in-node=&quot;16&quot; data-path-to-node=&quot;12,1,0&quot;&gt;2s ~ 5s&lt;/b&gt; 사이로 설정합니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,2,0&quot;&gt;이유&lt;/b&gt;: 익스텐더 서버가 응답하지 않을 때 이 값이 너무 길면 스케줄러 전체가 먹통(Blocked)이 되어 다른 파드들도 배치가 안 됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-path-to-node=&quot;13&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13&quot;&gt;② nodeCacheCapable (노드 정보 전달 방식)&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;14&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;14,0,0&quot;&gt;설명&lt;/b&gt;: true로 설정하면 스케줄러가 알고 있는 노드 정보 전체를 익스텐더에게 보냅니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;14,1,0&quot;&gt;효과&lt;/b&gt;: 익스텐더가 별도로 API 서버를 호출할 필요가 없어 성능이 향상됩니다. 하지만 데이터 전송량이 커질 수 있으므로 네트워크 대역폭을 고려해야 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-path-to-node=&quot;15&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15&quot;&gt;③ managedResources (관리 리소스 정의)&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;16&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,0,0&quot;&gt;설명&lt;/b&gt;: 특정 커스텀 리소스(예: 특수 GPU, 네트워크 가속기)가 필요한 파드에 대해서만 익스텐더를 호출하도록 제한합니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,1,0&quot;&gt;효과&lt;/b&gt;: 모든 파드에 대해 익스텐더를 호출하는 낭비를 줄이고, 꼭 필요한 파드만 필터링하여 성능을 최적화합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-path-to-node=&quot;17&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;18&quot; data-ke-size=&quot;size23&quot;&gt;3. 익스텐더 적용 시 주의사항 (Troubleshooting)&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;19&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;19,0,0&quot;&gt;네트워크 지연&lt;/b&gt;: 익스텐더는 HTTP 호출이므로 동일한 네트워크 내부나 마스터 노드 근처에 배치하는 것이 필수입니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;19,1,0&quot;&gt;가용성&lt;/b&gt;: 익스텐더가 죽으면 해당 리소스를 사용하는 파드들은 배치가 불가능해집니다. 반드시 익스텐더 자체도 고가용성(HA)으로 구성해야 합니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;19,2,0&quot;&gt;순서&lt;/b&gt;: 익스텐더는 기본 스케줄러의 Filter 단계가 끝난 &lt;b data-index-in-node=&quot;33&quot; data-path-to-node=&quot;19,2,0&quot;&gt;직후&lt;/b&gt;에 호출됩니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;div id=&quot;model-response-message-contentr_d91026b7b9bedff0&quot;&gt;
&lt;p data-path-to-node=&quot;0&quot; data-ke-size=&quot;size16&quot;&gt;가이드의 가장 핵심적인 부분이자, 실제 배치 로직을 결정하는 &lt;b data-index-in-node=&quot;34&quot; data-path-to-node=&quot;0&quot;&gt;프로파일(Profiles) 설정&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;1&quot; data-ke-size=&quot;size16&quot;&gt;전역 설정이 '스케줄러라는 엔진의 기본 사양'이라면, 프로파일 설정은 **'어떤 주행 모드(배치 전략)로 달릴 것인가'**를 정의하는 곳입니다.&lt;/p&gt;
&lt;hr data-path-to-node=&quot;2&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-path-to-node=&quot;3&quot; data-ke-size=&quot;size26&quot;&gt;4. 스케줄링 프로파일 (Profiles) 적용 가이드&lt;/h2&gt;
&lt;p data-path-to-node=&quot;4&quot; data-ke-size=&quot;size16&quot;&gt;프로파일 설정은 profiles라는 리스트(Array) 아래에 위치하며, 각 프로파일은 **플러그인(Plugins)**과 **플러그인 설정(PluginConfig)**으로 구성됩니다.&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;5&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5&quot;&gt;① 프로파일 기본 구조 및 삽입 위치&lt;/b&gt;&lt;/h3&gt;
&lt;p data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;KubeSchedulerConfiguration 파일의 하단부에 위치합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;YAML&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
# ... 전역 설정들 (parallelism, clientConnection 등) ...

profiles:
  - schedulerName: default-scheduler  # 프로파일 이름 (기본값)
    plugins:
      # 각 단계별로 어떤 기능을 켜고 끌지 정의
      score:
        disabled:
          - name: NodeResourcesBalancedAllocation # 특정 플러그인 끄기
        enabled:
          - name: NodeResourcesFit # 특정 플러그인 켜기
            weight: 5              # 가중치 부여
    
    pluginConfig:
      # 켠 플러그인에 세부 파라미터 전달
      - name: NodeResourcesFit
        args:
          scoringStrategy:
            type: MostAllocated    # [튜닝] 빈 패킹 전략 적용
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-path-to-node=&quot;8&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;9&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9&quot;&gt;② 주요 단계별 튜닝 포인트 (Extension Points)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-path-to-node=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;가이드 작성 시, 스케줄링의 각 단계에서 어떤 튜닝이 가능한지 설명해 주면 좋습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;11&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,0,0&quot;&gt;Filter 단계&lt;/b&gt;: 파드가 들어갈 수 없는 노드를 걸러냅니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;11,0,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;NodeResourcesFit: 노드에 남은 CPU/메모리가 충분한지 체크.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,1,0&quot;&gt;Score 단계&lt;/b&gt;: 필터를 통과한 노드들에게 점수를 매깁니다. &lt;b data-index-in-node=&quot;34&quot; data-path-to-node=&quot;11,1,0&quot;&gt;(가장 튜닝이 많이 일어나는 곳)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;11,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;NodeResourcesFit: MostAllocated(빈 패킹) 또는 LeastAllocated(분산 배치) 중 선택.&lt;/li&gt;
&lt;li&gt;InterPodAffinity: 파드 간 친밀도 점수 계산. 성능 저하의 주범이므로 필요한 경우 disabled 하거나 가중치를 낮춤.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,2,0&quot;&gt;Reserve/Prebind 단계&lt;/b&gt;: 실제 노드에 바인딩하기 전 자원을 선점하는 단계입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-path-to-node=&quot;12&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;13&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13&quot;&gt;③ 상세 튜닝 사례: 워크로드별 프로파일 분리&lt;/b&gt;&lt;/h3&gt;
&lt;p data-path-to-node=&quot;14&quot; data-ke-size=&quot;size16&quot;&gt;가이드에 아래와 같은 &lt;b data-index-in-node=&quot;12&quot; data-path-to-node=&quot;14&quot;&gt;'다중 프로파일'&lt;/b&gt; 예시를 넣어보세요. 운영자가 상황에 맞춰 선택할 수 있게 도와줍니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;YAML&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;profiles:
  # 1번 프로파일: 일반 서비스용 (분산 배치)
  - schedulerName: low-latency-profile
    pluginConfig:
      - name: NodeResourcesFit
        args:
          scoringStrategy:
            type: LeastAllocated 

  # 2번 프로파일: 배치 작업/비용 절감용 (빈 패킹)
  - schedulerName: cost-saver-profile
    pluginConfig:
      - name: NodeResourcesFit
        args:
          scoringStrategy:
            type: MostAllocated
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-path-to-node=&quot;16&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16&quot;&gt;[사용 방법]&lt;/b&gt; 개발자가 파드를 생성할 때 YAML에 다음과 같이 선언하면 해당 전략이 적용됩니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;YAML&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;dts&quot;&gt;&lt;code&gt;spec:
  schedulerName: cost-saver-profile # 프로파일에서 정의한 이름 사용
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-path-to-node=&quot;18&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;19&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;19&quot;&gt;④ 플러그인 설정(pluginConfig) 튜닝 가이드&lt;/b&gt;&lt;/h3&gt;
&lt;p data-path-to-node=&quot;20&quot; data-ke-size=&quot;size16&quot;&gt;특정 플러그인의 동작을 미세 조정할 때 사용합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;21&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,0,0&quot;&gt;NodeResourcesFit&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;21,0,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;resources: 점수 계산에 포함할 리소스를 정의합니다 (예: cpu, memory 외에 nvidia.com/gpu 추가).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,1,0&quot;&gt;VolumeBinding&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;21,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;bindTimeoutSeconds: 볼륨이 노드에 연결될 때까지 기다리는 시간 (기본 600s). 네트워크 스토리지가 느리다면 튜닝이 필요합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-path-to-node=&quot;22&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;23&quot; data-ke-size=&quot;size23&quot;&gt;  가이드 작성 시 팁: &quot;가중치(Weight)의 힘&quot;&lt;/h3&gt;
&lt;p data-path-to-node=&quot;24&quot; data-ke-size=&quot;size16&quot;&gt;독자들에게 &lt;b data-index-in-node=&quot;6&quot; data-path-to-node=&quot;24&quot;&gt;weight&lt;/b&gt; 설정의 중요성을 강조하세요.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;25&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;여러 플러그인이 점수를 매길 때, 특정 플러그인의 점수에 가중치를 높게 주면(예: weight: 100) 해당 조건이 배치의 절대적인 기준이 됩니다.&lt;/li&gt;
&lt;li&gt;예를 들어, &quot;비용 절감이 가용성보다 훨씬 중요하다&quot;면 NodeResourcesFit의 MostAllocated 가중치를 극단적으로 높이면 됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;26&quot; data-ke-size=&quot;size16&quot;&gt;이제 **전역 설정(Global)**부터 &lt;b data-index-in-node=&quot;23&quot; data-path-to-node=&quot;26&quot;&gt;익스텐더(Extender)&lt;/b&gt;, 그리고 **프로파일(Profiles)**까지 모든 레이어의 튜닝 포인트와 삽입 위치를 다뤘습니다. 가이드의 목차를 잡고 내용을 배치하시기만 하면 되겠네요! 추가로 궁금하신 세부 속성이 있으신가요?&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <author>독현진</author>
      <guid isPermaLink="true">https://doghj.tistory.com/112</guid>
      <comments>https://doghj.tistory.com/112#entry112comment</comments>
      <pubDate>Thu, 16 Apr 2026 20:12:32 +0900</pubDate>
    </item>
    <item>
      <title>M</title>
      <link>https://doghj.tistory.com/111</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;upgradeCRDs:&amp;nbsp;true&lt;br /&gt;&lt;br /&gt;image:&lt;br /&gt;&amp;nbsp;&amp;nbsp;repository:&amp;nbsp;velero/velero&lt;br /&gt;&amp;nbsp;&amp;nbsp;tag:&amp;nbsp;v1.16.0&lt;br /&gt;&amp;nbsp;&amp;nbsp;pullPolicy:&amp;nbsp;IfNotPresent&lt;br /&gt;&lt;br /&gt;initContainers:&lt;br /&gt;&amp;nbsp;&amp;nbsp;-&amp;nbsp;name:&amp;nbsp;velero-plugin-for-aws&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;image:&amp;nbsp;velero/velero-plugin-for-aws:v1.13.1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;imagePullPolicy:&amp;nbsp;IfNotPresent&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;volumeMounts:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;mountPath:&amp;nbsp;/target&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name:&amp;nbsp;plugins&lt;br /&gt;&lt;br /&gt;credentials:&lt;br /&gt;&amp;nbsp;&amp;nbsp;useSecret:&amp;nbsp;true&lt;br /&gt;&amp;nbsp;&amp;nbsp;existingSecret:&amp;nbsp;cloud-credentials&lt;br /&gt;&lt;br /&gt;configuration:&lt;br /&gt;&amp;nbsp;&amp;nbsp;backupStorageLocation:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;name:&amp;nbsp;default&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;provider:&amp;nbsp;aws&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bucket:&amp;nbsp;velero&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;default:&amp;nbsp;true&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;accessMode:&amp;nbsp;ReadWrite&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;config:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;region:&amp;nbsp;minio&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;s3Url:&amp;nbsp;http://&amp;lt;MINIO-ENDPOINT&amp;gt;:9000&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;s3ForcePathStyle:&amp;nbsp;&quot;true&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;prefix:&amp;nbsp;cluster-a&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;필요하면&amp;nbsp;추가&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;volumeSnapshotLocation:&amp;nbsp;[]&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;defaultBackupTTL:&amp;nbsp;168h&lt;br /&gt;&amp;nbsp;&amp;nbsp;uploaderType:&amp;nbsp;kopia&lt;br /&gt;&lt;br /&gt;snapshotsEnabled:&amp;nbsp;false&lt;br /&gt;deployNodeAgent:&amp;nbsp;true&lt;/p&gt;</description>
      <author>독현진</author>
      <guid isPermaLink="true">https://doghj.tistory.com/111</guid>
      <comments>https://doghj.tistory.com/111#entry111comment</comments>
      <pubDate>Tue, 14 Apr 2026 11:12:49 +0900</pubDate>
    </item>
    <item>
      <title>dd</title>
      <link>https://doghj.tistory.com/110</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Kube-scheduler&amp;nbsp;튜닝포인트&amp;nbsp;정리&lt;br /&gt;/etc/kubernetes/scheduler-config.yaml&amp;nbsp;파일&amp;nbsp;생성해&amp;nbsp;&amp;nbsp;&amp;nbsp;kubescheduler.config.k8s.io/v1&amp;nbsp;적용&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;/etc/kubernetes/manifest/kubec-scheduler&amp;nbsp;에&amp;nbsp;컨피그&amp;nbsp;적용&amp;nbsp;설정&lt;br /&gt;이후&amp;nbsp;spec.container.command에&amp;nbsp;아래&amp;nbsp;내용&amp;nbsp;추가&lt;br /&gt;-&amp;nbsp;kube-scheduler&lt;br /&gt;-&amp;nbsp;--config=/etc/kubernetes/scheduler-config.yaml&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;(mount)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;#성능&amp;nbsp;튜닝&lt;br /&gt;-&amp;nbsp;percentageOfNodesToScore&amp;nbsp;{0&amp;nbsp;~&amp;nbsp;100}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;스케줄링시&amp;nbsp;만족하는&amp;nbsp;노드의&amp;nbsp;개수가&amp;nbsp;지정한&amp;nbsp;수를&amp;nbsp;충족하면&amp;nbsp;탐색을&amp;nbsp;중단한다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;이로&amp;nbsp;모든&amp;nbsp;노드에&amp;nbsp;대해&amp;nbsp;스케줄링을&amp;nbsp;고려하는&amp;nbsp;것&amp;nbsp;보다&amp;nbsp;시간을&amp;nbsp;절약할&amp;nbsp;수&amp;nbsp;있다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;기본적인&amp;nbsp;임계값을&amp;nbsp;지정하지&amp;nbsp;않으면&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;100&amp;nbsp;노드&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp;50%&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;5000&amp;nbsp;노드&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp;10%&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;위&amp;nbsp;값을&amp;nbsp;산출하는&amp;nbsp;선형공식을&amp;nbsp;사용하게된다.&amp;nbsp;(클러스터&amp;nbsp;노드가&amp;nbsp;아무리&amp;nbsp;많아져도&amp;nbsp;최소값&amp;nbsp;5%)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;해당&amp;nbsp;값을&amp;nbsp;조절하여&amp;nbsp;스케줄링의&amp;nbsp;노드&amp;nbsp;스코어링&amp;nbsp;시간을&amp;nbsp;단축할&amp;nbsp;수&amp;nbsp;있다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;하지만&amp;nbsp;충분한&amp;nbsp;개수만큼&amp;nbsp;노드를&amp;nbsp;확인하지&amp;nbsp;않기&amp;nbsp;때문에&amp;nbsp;가장&amp;nbsp;이상적인&amp;nbsp;파드&amp;nbsp;배치와&amp;nbsp;멀어질&amp;nbsp;수&amp;nbsp;있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;설정&amp;nbsp;예시&lt;br /&gt;##########&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;apiVersion:&amp;nbsp;kubescheduler.config.k8s.io/v1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;kind:&amp;nbsp;KubeSchedulerConfiguration&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;percentageOfNodesToScore:&amp;nbsp;50&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.&lt;br /&gt;##########&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;-&amp;nbsp;parallelism&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;스케줄러가&amp;nbsp;노드&amp;nbsp;필터링,&amp;nbsp;스코어링&amp;nbsp;작업을&amp;nbsp;병렬로&amp;nbsp;몇개씩&amp;nbsp;진행할지&amp;nbsp;결정한다.&amp;nbsp;(&amp;nbsp;기본값&amp;nbsp;16&amp;nbsp;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;값이&amp;nbsp;상승할&amp;nbsp;수록&amp;nbsp;해당&amp;nbsp;스케줄링시&amp;nbsp;&amp;nbsp;CPU&amp;nbsp;부하가&amp;nbsp;증가한다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;설정&amp;nbsp;예시&lt;br /&gt;##########&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;apiVersion:&amp;nbsp;kubescheduler.config.k8s.io/v1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;kind:&amp;nbsp;KubeSchedulerConfiguration&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;parallelism:&amp;nbsp;32&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.&lt;br /&gt;##########&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;#NodeResourcesFit&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;스케줄러의&amp;nbsp;스코어링&amp;nbsp;전략&amp;nbsp;변경&lt;br /&gt;-&amp;nbsp;LeastAllocated&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;여유가&amp;nbsp;많은&amp;nbsp;노드&amp;nbsp;선호&lt;br /&gt;-&amp;nbsp;MostAllocated&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;이미&amp;nbsp;채워져가는&amp;nbsp;노드&amp;nbsp;선호&lt;br /&gt;-&amp;nbsp;RequestedToCapacityRatio&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;커스텀된&amp;nbsp;값으로&amp;nbsp;선호&amp;nbsp;조절&amp;nbsp;(예&amp;nbsp;GPU)&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;3&quot; data-ke-size=&quot;size26&quot;&gt;1. Kube-scheduler 설정 구조 (v1 기준)&lt;/h2&gt;
&lt;p data-path-to-node=&quot;4&quot; data-ke-size=&quot;size16&quot;&gt;Kubernetes v1.23 이상부터는 kubescheduler.config.k8s.io/v1 API가 안정화되어 사용됩니다. 설정 파일은 크게 &lt;b data-index-in-node=&quot;82&quot; data-path-to-node=&quot;4&quot;&gt;전역 설정&lt;/b&gt;과 &lt;b data-index-in-node=&quot;89&quot; data-path-to-node=&quot;4&quot;&gt;프로파일(Profiles) 설정&lt;/b&gt;으로 나뉩니다.&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;5&quot; data-ke-size=&quot;size23&quot;&gt;/etc/kubernetes/scheduler-config.yaml&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;YAML&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
clientConnection:
  kubeconfig: /etc/kubernetes/scheduler.conf # 1. 인증 정보 (가장 중요)
leaderElection:
  leaderElect: true  # 고가용성(HA) 구성 시 필수
parallelism: 32      # [튜닝] 병렬 처리 수 (기본 16)
percentageOfNodesToScore: 50 # [튜닝] 노드 탐색 임계치 (%)
profiles:
  - schedulerName: default-scheduler
    plugins:
      score:
        disabled:
          - name: NodeResourcesFit # 기본 전략 비활성화 (전략 변경 시)
        enabled:
          - name: NodeResourcesFit
            weight: 1
    pluginConfig:
      - name: NodeResourceFit
        args:
          scoringStrategy:
            type: LeastAllocated # [튜닝] LeastAllocated | MostAllocated | RequestedToCapacityRatio&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-path-to-node=&quot;8&quot; data-ke-size=&quot;size26&quot;&gt;2. 핵심 튜닝 포인트 상세 분석&lt;/h2&gt;
&lt;h3 data-path-to-node=&quot;9&quot; data-ke-size=&quot;size23&quot;&gt;① 성능 최적화: percentageOfNodesToScore&lt;/h3&gt;
&lt;p data-path-to-node=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;이 설정은 스케줄러가 노드를 어디까지 훑어볼지 결정하는 &lt;b data-index-in-node=&quot;31&quot; data-path-to-node=&quot;10&quot;&gt;'조기 종료'&lt;/b&gt; 조건입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;11&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,0,0&quot;&gt;효과:&lt;/b&gt; 노드가 수천 대인 환경에서 모든 노드의 점수를 매기는 오버헤드를 줄여 &lt;b data-index-in-node=&quot;43&quot; data-path-to-node=&quot;11,0,0&quot;&gt;Scheduling Latency&lt;/b&gt;를 획기적으로 낮춥니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,1,0&quot;&gt;주의점:&lt;/b&gt; 값이 너무 낮으면 최적의 노드가 아닌 '그냥 적당한' 노드에 파드가 배치되어 클러스터 자원 불균형이 생길 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;12&quot; data-ke-size=&quot;size23&quot;&gt;② 병렬성 제어: parallelism&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;13&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,0,0&quot;&gt;기본값:&lt;/b&gt; 16&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,1,0&quot;&gt;튜닝:&lt;/b&gt; 마스터 노드(Control Plane)의 CPU 코어 수가 넉넉하다면 이 값을 키워 필터링/스코어링 속도를 높일 수 있습니다. 보통 CPU 코어 수의 2~4배 정도로 설정하며 모니터링을 통해 조정합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;14&quot; data-ke-size=&quot;size23&quot;&gt;③ 스코어링 전략: NodeResourcesFit&lt;/h3&gt;
&lt;p data-path-to-node=&quot;15&quot; data-ke-size=&quot;size16&quot;&gt;파드를 어느 노드에 우선 배치할지 결정하는 알고리즘입니다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;16&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;전략&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;특징&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;권장 상황&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,1,0,0&quot;&gt;LeastAllocated&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,1,1,0&quot;&gt;여유 자원(CPU/MEM)이 가장 많은 노드에 배치&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,1,2,0&quot;&gt;일반적인 워크로드, 자원 분산 필요 시&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,2,0,0&quot;&gt;MostAllocated&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,2,1,0&quot;&gt;자원이 이미 사용 중인 노드에 최대한 밀어넣기&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,2,2,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,2,2,0&quot;&gt;Bin Packing&lt;/b&gt;, 노드 수를 최소화하여 비용 절감 시&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,3,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,3,0,0&quot;&gt;RequestedToCapacityRatio&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,3,1,0&quot;&gt;특정 리소스 비율에 따라 가중치 부여&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,3,2,0&quot;&gt;GPU 등 특수 자원 비율에 따른 정교한 배치 필요 시&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-path-to-node=&quot;17&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-path-to-node=&quot;18&quot; data-ke-size=&quot;size26&quot;&gt;3. Static Pod 매니페스트 적용 (정리)&lt;/h2&gt;
&lt;p data-path-to-node=&quot;19&quot; data-ke-size=&quot;size16&quot;&gt;정리하신 대로 /etc/kubernetes/manifests/kube-scheduler.yaml을 수정할 때, 설정 파일이 컨테이너 내부로 올바르게 전달되도록 &lt;b data-index-in-node=&quot;89&quot; data-path-to-node=&quot;19&quot;&gt;Volume Mount&lt;/b&gt; 설정이 정확해야 합니다.&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;20&quot; data-ke-size=&quot;size23&quot;&gt;kube-scheduler.yaml (핵심 요약)&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;YAML&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;spec:
  containers:
  - command:
    - kube-scheduler
    - --config=/etc/kubernetes/scheduler-config.yaml # 설정 파일 지정
    - -v=5 # 로그 표시레벨
    - --authentication-kubeconfig=/etc/kubernetes/scheduler.conf
    - --authorization-kubeconfig=/etc/kubernetes/scheduler.conf
    volumeMounts:
    - mountPath: /etc/kubernetes/scheduler-config.yaml
      name: scheduler-config
      readOnly: true
  volumes:
  - hostPath:
      path: /etc/kubernetes/scheduler-config.yaml
      type: FileOrCreate
    name: scheduler-config&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-path-to-node=&quot;22&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-path-to-node=&quot;23&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;23&quot;&gt;  추가 팁:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;24&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;24,0,0&quot;&gt;변경 사항 확인:&lt;/b&gt; 설정을 변경한 후에는 kubectl get nodes로 상태를 보는 것이 아니라, 스케줄러 로그를 통해 successfully renewed lease 또는 설정 오류 메시지가 없는지 확인해야 합니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;24,1,0&quot;&gt;다중 프로필:&lt;/b&gt; 하나의 클러스터에서 어떤 파드는 MostAllocated로, 어떤 파드는 LeastAllocated로 보내고 싶다면 profiles 섹션에 여러 개의 schedulerName을 정의하여 사용할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;3&quot; data-ke-size=&quot;size26&quot;&gt;1. 스케줄링 대기열 튜닝 (Scheduling Queue)&lt;/h2&gt;
&lt;p data-path-to-node=&quot;4&quot; data-ke-size=&quot;size16&quot;&gt;파드가 스케줄링에 실패했을 때 다시 시도하기까지의 시간을 조절합니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;4&quot; data-ke-size=&quot;size16&quot;&gt;# 파드 배치 실패시 이니셜백오프 시간의 두배씩 늘어납니다, 이후 맥스백오프 시간에 도달하면 고정됩니다.&lt;br /&gt;&amp;nbsp; &amp;nbsp; 예) 실패&amp;gt; 1초후 시도 &amp;gt; 실패 &amp;gt; 2초후 시도 &amp;gt; 실패 &amp;gt; 4초후 시도 &amp;gt; 8초후 시도 &amp;gt; 실패 &amp;gt; 10초후 시도 &amp;gt; 실패 &amp;gt; 10초후 시도&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;5&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5,0,0&quot;&gt;podInitialBackoffSeconds&lt;/b&gt;: 스케줄링 실패 시 재시도 전 대기하는 최소 시간 (기본값 1초).&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5,1,0&quot;&gt;podMaxBackoffSeconds&lt;/b&gt;: 재시도 대기 시간의 최대치 (기본값 10초).&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5,2,0&quot;&gt;튜닝 포인트&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;5,2,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클러스터 자원이 항상 타이트하여 스케줄링 실패가 잦다면, 이 값을 약간 높여 스케줄러의 불필요한 재시도 부하를 줄일 수 있습니다.&lt;/li&gt;
&lt;li&gt;반대로 빠른 배치가 중요하다면 낮게 유지합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-path-to-node=&quot;6&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-path-to-node=&quot;7&quot; data-ke-size=&quot;size26&quot;&gt;2. 우선순위 및 선점 (Priority &amp;amp; Preemption)&lt;/h2&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;중요한 파드가 먼저 실행되도록 보장하는 설정입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;9&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,0,0&quot;&gt;disablePreemption&lt;/b&gt;: 기본값은 false입니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,1,0&quot;&gt;튜닝 포인트&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;9,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;매우 급박한 워크로드가 많은 환경에서, 중요도가 낮은 파드를 밀어내고 자원을 확보해야 한다면 이 기능을 활성화합니다.&lt;/li&gt;
&lt;li&gt;하지만 선점(Preemption)이 너무 자주 발생하면 클러스터가 요동칠 수 있으므로, PriorityClass를 정교하게 설계해야 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-path-to-node=&quot;10&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-path-to-node=&quot;11&quot; data-ke-size=&quot;size26&quot;&gt;3. 특정 리소스 가중치 튜닝 (Resource Weight)&lt;/h2&gt;
&lt;p data-path-to-node=&quot;12&quot; data-ke-size=&quot;size16&quot;&gt;기본적으로 CPU와 Memory는 동일한 중요도로 계산됩니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;13&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,0,0&quot;&gt;binpacking 및 가중치&lt;/b&gt;: NodeResourcesFit 아규먼트 내에서 CPU와 Memory의 가중치를 다르게 줄 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,1,0&quot;&gt;튜닝 포인트&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;13,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;우리 서비스가 메모리를 훨씬 많이 사용한다면 메모리 여유 비중에 가중치를 더 높여서(예: CPU: 1, MEM: 5) 배치의 질을 높일 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-path-to-node=&quot;14&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-path-to-node=&quot;15&quot; data-ke-size=&quot;size26&quot;&gt;4. 멀티 스케줄러 (Multiple Schedulers)&lt;/h2&gt;
&lt;p data-path-to-node=&quot;16&quot; data-ke-size=&quot;size16&quot;&gt;하나의 스케줄러 설정으로 모든 워크로드를 만족시키기 어려울 때 사용합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;17&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,0,0&quot;&gt;방법&lt;/b&gt;: 서로 다른 scheduler-config.yaml을 가진 스케줄러 디플로이먼트를 여러 개 실행합니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,1,0&quot;&gt;튜닝 포인트&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;17,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,1,1,0,0&quot;&gt;일반 파드&lt;/b&gt;: LeastAllocated 전략의 기본 스케줄러 사용.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,1,1,1,0&quot;&gt;배치/AI 학습 파드&lt;/b&gt;: MostAllocated (Bin Packing) 전략의 커스텀 스케줄러 사용.&lt;/li&gt;
&lt;li&gt;파드 정의서(spec.schedulerName)에서 선택하여 사용할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-path-to-node=&quot;18&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-path-to-node=&quot;19&quot; data-ke-size=&quot;size26&quot;&gt;5. Inter-Pod Affinity 성능 영향&lt;/h2&gt;
&lt;p data-path-to-node=&quot;20&quot; data-ke-size=&quot;size16&quot;&gt;podAffinity나 podAntiAffinity는 스케줄러에게 매우 무거운 작업입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;21&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,0,0&quot;&gt;주의사항&lt;/b&gt;: 노드가 수백 대가 넘는 환경에서 대규모 파드들에 AntiAffinity를 걸면 스케줄링 속도가 급격히 느려집니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,1,0&quot;&gt;튜닝 포인트&lt;/b&gt;: 성능이 최우선이라면 podAffinity 대신 nodeAffinity나 TopologySpreadConstraints를 사용하는 것이 훨씬 가볍습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-path-to-node=&quot;22&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-path-to-node=&quot;23&quot; data-ke-size=&quot;size26&quot;&gt;요약: 추가하면 좋은 설정 예시 (v1)&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;YAML&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
...
profiles:
  - schedulerName: default-scheduler
    pluginConfig:
      - name: NodeResourcesFit
        args:
          scoringStrategy:
            type: LeastAllocated
            resources: # 리소스별 가중치 조절
              - name: cpu
                weight: 1
              - name: memory
                weight: 2 
    # 스케줄링 대기열 튜닝
    podInitialBackoffSeconds: 1
    podMaxBackoffSeconds: 10&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-path-to-node=&quot;25&quot; data-ke-size=&quot;size16&quot;&gt;정리하자면, &lt;b data-index-in-node=&quot;7&quot; data-path-to-node=&quot;25&quot;&gt;성능&lt;/b&gt;을 위해서는 작성하신 percentageOfNodesToScore와 parallelism이 가장 중요하고, &lt;b data-index-in-node=&quot;69&quot; data-path-to-node=&quot;25&quot;&gt;운영의 정교함&lt;/b&gt;을 위해서는 NodeResourcesFit의 가중치 조절과 Backoff 설정을 살펴보시는 것이 좋습니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;25&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;25&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;25&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot; data-path-to-node=&quot;3&quot;&gt;스케줄링 튜닝 테스트&lt;/h2&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot; data-path-to-node=&quot;3&quot;&gt;1. 스케줄링시 노드 탐색 범위 설정&lt;/h2&gt;
&lt;p data-path-to-node=&quot;25&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;25&quot; data-ke-size=&quot;size16&quot;&gt;#nginx 파드 20개 생성&lt;br /&gt;kubectl create deployment test-tuning --image=nginx --replicas=20&lt;/p&gt;
&lt;p data-path-to-node=&quot;25&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;25&quot; data-ke-size=&quot;size16&quot;&gt;#&amp;nbsp;로그에서&amp;nbsp;'nodes'나&amp;nbsp;'scoring'&amp;nbsp;관련&amp;nbsp;키워드&amp;nbsp;확인&lt;br /&gt;kubectl&amp;nbsp;logs&amp;nbsp;-n&amp;nbsp;kube-system&amp;nbsp;kube-scheduler-k8s-redhat88-m01&amp;nbsp;|&amp;nbsp;grep&amp;nbsp;&quot;nodes&quot;&lt;/p&gt;
&lt;p data-path-to-node=&quot;25&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;25&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;25&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;25&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;25&quot; data-ke-size=&quot;size16&quot;&gt;@1퍼센트 설정 후 테스트&lt;br /&gt;&amp;nbsp;root&amp;nbsp;&amp;nbsp;k8s-redhat88-m01&amp;nbsp;&amp;nbsp;⎈&amp;nbsp;H4&amp;nbsp;&amp;nbsp;default&amp;nbsp;&amp;nbsp;etc&amp;nbsp;&amp;nbsp;kubernetes&amp;nbsp;&amp;nbsp;#&amp;nbsp;&amp;nbsp;k&amp;nbsp;get&amp;nbsp;pod&amp;nbsp;-o&amp;nbsp;wide&lt;br /&gt;NAME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;READY&amp;nbsp;&amp;nbsp;&amp;nbsp;STATUS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RESTARTS&amp;nbsp;&amp;nbsp;&amp;nbsp;AGE&amp;nbsp;&amp;nbsp;&amp;nbsp;IP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NODE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NOMINATED&amp;nbsp;NODE&amp;nbsp;&amp;nbsp;&amp;nbsp;READINESS&amp;nbsp;GATES&lt;br /&gt;test-tuning-55c6f5cf5c-72rjq&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.3.155&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w05&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-7v9pt&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.6.175&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w02&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-8f9xx&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.10.184&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w010&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-9svps&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.6.208&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w02&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-bhpxp&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.8.22&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w09&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-dwpgn&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.10.130&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w010&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-fzzw6&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.7.19&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w03&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-gnj2q&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.12.247&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w08&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-jkdkh&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.5.230&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w04&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-kcf96&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.5.121&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w04&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-kmwc7&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.4.123&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w01&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-lgxt8&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.9.88&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w07&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-llvvw&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.4.249&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w01&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-mf7k7&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.3.112&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w05&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-qzz9t&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.8.161&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w09&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-r5d75&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.11.54&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w06&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-rksll&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.12.125&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w08&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-scrfv&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.7.34&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w03&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-wtcwz&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.9.74&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w07&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-zthg4&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.11.58&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w06&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;25&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;25&quot; data-ke-size=&quot;size16&quot;&gt;위 배포 pod 확인시 노드당 2개씩 배포됨을 확인&lt;br /&gt;percentageOfNodesToScore: 1 는 스케줄러 로그에 명시되어 있음에도 균등하게 분배됨&lt;/p&gt;
&lt;p data-path-to-node=&quot;25&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;25&quot; data-ke-size=&quot;size16&quot;&gt;이유 ) percentageOfNodesToScore 옵션의 경우 10개의 노드에서 테스트시 설정 적용은 확인 됐으나,&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;25&quot; data-ke-size=&quot;size16&quot;&gt;k8s 특성상 100개미만 의 노드에서는 자동으로 모든 노드를 탐색하고 스코어링 함&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;25&quot; data-ke-size=&quot;size16&quot;&gt;또한, 스케줄러의 노드 탐색 방식이 노드를 탐색 방식이 첫번째 탐색 후 두번째 탐색은 마지막 탐색지점부터 시작하고 이를 반복함,&lt;/p&gt;
&lt;p data-path-to-node=&quot;25&quot; data-ke-size=&quot;size16&quot;&gt;#참고&lt;br /&gt;&lt;a href=&quot;https://kubernetes.io/docs/concepts/scheduling-eviction/scheduler-perf-tuning/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://kubernetes.io/docs/concepts/scheduling-eviction/scheduler-perf-tuning/&lt;/a&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;25&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;25&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;25&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;25&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot; data-path-to-node=&quot;3&quot;&gt;2. 스케줄링 대기열 튜닝 (Scheduling Queue) 테스트&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;YAML&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
# --- [전역 설정 영역] ---
leaderElection:
  leaderElect: true
  resourceName: kube-scheduler
  resourceNamespace: kube-system
clientConnection:
  kubeconfig: /etc/kubernetes/scheduler.conf

# [튜닝 1번] 스케줄링 대기열 (가장 바깥쪽 레벨)
# 실패한 파드가 다시 시도될 때까지의 '초' 단위 시간입니다.
podInitialBackoffSeconds: 1  # 처음 실패 시 1초 대기
podMaxBackoffSeconds: 10     # 아무리 길어져도 최대 10초 대기

# 노드 탐색 범위 제한
percentageOfNodesToScore: 1

# --- [개별 프로파일 영역] ---
profiles:
  - schedulerName: default-scheduler
    pluginConfig:
      - name: NodeResourcesFit # 's' 붙이는 것 잊지 마세요!
        args:
          scoringStrategy:
            type: MostAllocated
            resources:
              - name: cpu
                weight: 1
              - name: memory
                weight:&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설정 파일 예시 (프로파일은 이전 설정이 남아있는 부분)&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본값&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;podInitialBackoffSeconds:&lt;/span&gt; &lt;span&gt;1&lt;/span&gt; &lt;span&gt;# 처음 실패 시 1초 대기 (대시 시간은 이니셜 백오프 시간의 두배씩 늘어남)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;podMaxBackoffSeconds:&lt;/span&gt; &lt;span&gt;10&lt;/span&gt; &lt;span&gt;# 아무리 길어져도 최대 10초 대기&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot; data-path-to-node=&quot;7&quot;&gt;3. 우선순위 및 선점 (Priority &amp;amp; Preemption)&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;YAML&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
# ... (생략) ...
profiles:
  - schedulerName: default-scheduler
    # --- [2번 튜닝 포인트] ---
    disablePreemption: true  # 선점 기능 비활성화
    # ------------------------
    pluginConfig:
      - name: NodeResourcesFit
        args:
          scoringStrategy:
            type: MostAllocated
            resources:
              - name: cpu
                weight: 1
              - name: memory
                weight:&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본값&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;disablePreemption: false&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;true 설정시 priorityClass가 높은 파드가 큐에 들어오면 낮은 중요도의 파드를 강제 종료(evicted) 시키고 높은 파드를 배치&lt;br /&gt;false(기본값) 설정시 기존 파드를 종료시키지 않고 노드가 조건을 충족시킬때 까지 대기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot; data-path-to-node=&quot;11&quot;&gt;4. 특정 리소스 가중치 튜닝 (Resource Weight)&lt;/h2&gt;
&lt;div style=&quot;color: #333333; text-align: start;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;NodeResourcesFit의 weight 튜닝엔 두가지 방식이 있는데 아래와 같다&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
clientConnection:
  kubeconfig: /etc/kubernetes/scheduler.conf #인증 정보 (가장 중요)
profiles:
  - schedulerName: default-scheduler
    disablePreemption: true # 2번에서 설정한 값
    pluginConfig:
      - name: NodeResourcesFit
        args:
          scoringStrategy:
            type: MostAllocated # 자원을 꽉꽉 채워 쓰는 전략
            resources:
              - name: cpu
                weight: 1   # CPU는 기본 비중
              - name: memory
                weight: 5   # 메모리는 CPU보다 5배 더 중요하게 취급&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;pre id=&quot;code_1775977613409&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
clientConnection:
  kubeconfig: /etc/kubernetes/scheduler.conf # 1. 인증 정보 (가장 중요)
leaderElection:
  leaderElect: true  # 고가용성(HA) 구성 시 필수
profiles:
  - schedulerName: default-scheduler
    plugins:
      score:
        disabled:
          - name: NodeResourcesFit # 기본 전략 비활성화 (전략 변경 시)
        enabled:
          - name: NodeResourcesFit
            weight: 1
    pluginConfig:
      - name: NodeResourceFit
        args:
          scoringStrategy:
            type: MostAllocated&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 두 설정 파일에서 차이 ( 모든 플러그인 weight 기본값 : 1 )&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 리소스에 mem weight :5 적용&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;계산식: c= 최종점수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 플러그인 자체에 weight :5 적용&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;계산식 예시: (cpu 점수 *1 ) + (mem 점수 *1) * 5= 최종점수&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;만약 노드가 A,B 두개가 존재하는 클러스터에 MostAllocated 전략 ( pod를 노드에 최대한 적재하는 방식 ) 을 사용하고&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Pod 배치시 메모리 가중치를 늘리고자 할때의 예시다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;12&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;노드&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;CPU 여유&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;메모리 여유&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,1,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,1,0,0&quot;&gt;노드 A&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,1,1,0&quot;&gt;10% (거의 꽉 참)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,1,2,0&quot;&gt;90% (매우 널널)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,2,0,0&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,2,0,0&quot;&gt;노드 B&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,2,1,0&quot;&gt;90% (매우 널널)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,2,2,0&quot;&gt;10% (거의 꽉 참)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;13&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,0,0&quot;&gt;(메모리 가중치 5):&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;13,0,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;노드 A 점수: (&lt;span data-index-in-node=&quot;9&quot; data-math=&quot;(90 \times 1) + (10 \times 5) = 140&quot;&gt;90*1) + (10 *5) = 140&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;노드 B 점수: &lt;span data-index-in-node=&quot;9&quot; data-math=&quot;(10 \times 1) + (90 \times 5) = 460&quot;&gt;(10 * 1) + (90 * 5) = 460&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;  &lt;b data-index-in-node=&quot;3&quot; data-path-to-node=&quot;13,0,1,2,0&quot;&gt;결과:&lt;/b&gt; 메모리를 꽉 채울 수 있는 &lt;b data-index-in-node=&quot;22&quot; data-path-to-node=&quot;13,0,1,2,0&quot;&gt;노드 B 선택&lt;/b&gt; (의도대로 작동)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,1,0&quot;&gt;(플러그인 가중치 5):&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;13,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;노드 A 점수: (&lt;span data-index-in-node=&quot;9&quot; data-math=&quot;(90 + 10) \times 1 = 100&quot;&gt;90 + 10) *5 = 500&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;노드 B 점수: (&lt;span data-index-in-node=&quot;9&quot; data-math=&quot;(10 + 90) \times 1 = 100&quot;&gt;10 + 90) *5 = 500&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;  &lt;b data-index-in-node=&quot;3&quot; data-path-to-node=&quot;13,1,1,2,0&quot;&gt;결과:&lt;/b&gt; 점수가 같음 (메모리 비중 강화 실패)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;wight 가중치를 어떻게 설정하느냐에 따라 무의미해질 수 있기 때문에 어떻게 설정할지 고려해야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;@NodeResourcesFit : MostAllocated 최대한 적은 노드에 배치 설정후 테스트 (weight : 5 )&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot; data-path-to-node=&quot;25&quot;&gt;&amp;nbsp;root&amp;nbsp;&amp;nbsp;k8s-redhat88-m02&amp;nbsp;&amp;nbsp;⎈&amp;nbsp;H4&amp;nbsp;&amp;nbsp;default&amp;nbsp;&amp;nbsp;~&amp;nbsp;&amp;nbsp;#&amp;nbsp;&amp;nbsp;k&amp;nbsp;get&amp;nbsp;pod&amp;nbsp;-o&amp;nbsp;wide&lt;br /&gt;NAME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;READY&amp;nbsp;&amp;nbsp;&amp;nbsp;STATUS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RESTARTS&amp;nbsp;&amp;nbsp;&amp;nbsp;AGE&amp;nbsp;&amp;nbsp;&amp;nbsp;IP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NODE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NOMINATED&amp;nbsp;NODE&amp;nbsp;&amp;nbsp;&amp;nbsp;READINESS&amp;nbsp;GATES&lt;br /&gt;test-tuning-55c6f5cf5c-4tbbs&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;47s&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.7.185&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w03&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-544mr&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;47s&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.7.59&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w03&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-6d8sp&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;47s&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.7.55&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w03&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-f5b5h&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;47s&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.7.207&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w03&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-ffsvj&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;47s&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.7.209&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w03&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-g77wh&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;47s&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.7.152&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w03&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-l4kcj&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;47s&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.7.200&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w03&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-l7vd4&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;47s&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.7.236&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w03&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-m929m&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;47s&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.7.231&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w03&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-nrnj4&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;47s&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.7.6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w03&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-pmmb6&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;47s&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.7.245&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w03&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-pq4nc&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;47s&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.7.71&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w03&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-qfd6g&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;47s&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.7.135&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w03&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-r4dkr&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;47s&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.7.52&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w03&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-rczpq&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;47s&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.7.214&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w03&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-s2x9p&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;47s&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.7.40&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w03&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-t66pz&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;47s&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.7.35&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w03&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-tjzt2&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;47s&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.7.89&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w03&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-x2d7t&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;47s&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.7.30&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w03&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-xbpg8&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;47s&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.7.227&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w03&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot; data-path-to-node=&quot;25&quot;&gt;모든 pod w03 배치&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot; data-path-to-node=&quot;25&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot; data-path-to-node=&quot;25&quot;&gt;# weight 1로 설정시 별 영향 없음( 각노드에 2개 pod 배치 )&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot; data-path-to-node=&quot;25&quot;&gt;&amp;nbsp;root&amp;nbsp;&amp;nbsp;k8s-redhat88-m02&amp;nbsp;&amp;nbsp;⎈&amp;nbsp;H4&amp;nbsp;&amp;nbsp;default&amp;nbsp;&amp;nbsp;~&amp;nbsp;&amp;nbsp;#&amp;nbsp;&amp;nbsp;k&amp;nbsp;get&amp;nbsp;pod&amp;nbsp;-o&amp;nbsp;wide&lt;br /&gt;NAME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;READY&amp;nbsp;&amp;nbsp;&amp;nbsp;STATUS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RESTARTS&amp;nbsp;&amp;nbsp;&amp;nbsp;AGE&amp;nbsp;&amp;nbsp;&amp;nbsp;IP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NODE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NOMINATED&amp;nbsp;NODE&amp;nbsp;&amp;nbsp;&amp;nbsp;READINESS&amp;nbsp;GATES&lt;br /&gt;test-tuning-55c6f5cf5c-28qlf&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.3.104&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w05&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-45d6c&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;7s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.7.13&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w03&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-5rrw7&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.10.17&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w010&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-87qh5&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;7s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.11.253&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w06&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-b49p6&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;7s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.12.72&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w08&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-b5s2z&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.3.21&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w05&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-fn7gj&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.12.54&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w08&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-g4t9n&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.6.37&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w02&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-gvb7d&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.4.105&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w01&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-j4sgb&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.5.233&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w04&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-jfvg9&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.11.222&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w06&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-k7j4s&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;7s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.6.254&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w02&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-kwsjd&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.5.220&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w04&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-m7z4x&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;7s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.9.37&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w07&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-nq2gx&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.10.50&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w010&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-pnpzs&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;7s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.8.195&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w09&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-px2t2&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.9.241&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w07&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-qbfzh&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;7s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.4.176&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w01&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-th7dt&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.8.218&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w09&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;br /&gt;test-tuning-55c6f5cf5c-zvvzg&amp;nbsp;&amp;nbsp;&amp;nbsp;1/1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Running&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10.244.7.157&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;k8s-redhat88-w03&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;none&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot; data-path-to-node=&quot;25&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-path-to-node=&quot;11&quot; data-ke-size=&quot;size26&quot;&gt;5. 병렬 처리 설정: parallelism&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot; data-path-to-node=&quot;25&quot;&gt;5. 병렬 처리 설정: parallelism&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;YAML&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
leaderElection:
  leaderElect: true
clientConnection:
  kubeconfig: /etc/kubernetes/scheduler.conf
parallelism: 16&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본값 16&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설정값에 따라서 스케줄러가 노드를 분산해 필터링, 스코어링 작업을 수행한다,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예) (16으로 설정) 100개의 노드에 배치할때 10개의 그룹으로 나눠 16개씩 스케줄러가 노드 평가작업을 실시한다.&lt;/p&gt;</description>
      <author>독현진</author>
      <guid isPermaLink="true">https://doghj.tistory.com/110</guid>
      <comments>https://doghj.tistory.com/110#entry110comment</comments>
      <pubDate>Sun, 12 Apr 2026 12:24:05 +0900</pubDate>
    </item>
    <item>
      <title>Velero 설치</title>
      <link>https://doghj.tistory.com/109</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;[cloud-user@ethan-dev2&amp;nbsp;velero]$&amp;nbsp;cat&amp;nbsp;ansible/qks-velero/tasks/main.yaml&lt;br /&gt;---&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;name:&amp;nbsp;QKS&amp;nbsp;Velero&amp;nbsp;|&amp;nbsp;Create&amp;nbsp;manifests&amp;nbsp;directory&amp;nbsp;for&amp;nbsp;{{&amp;nbsp;component&amp;nbsp;}}&lt;br /&gt;&amp;nbsp;&amp;nbsp;when:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;inventory_hostname&amp;nbsp;in&amp;nbsp;groups['kube-master']&lt;br /&gt;&amp;nbsp;&amp;nbsp;become:&amp;nbsp;true&lt;br /&gt;&amp;nbsp;&amp;nbsp;file:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;path:&amp;nbsp;&quot;{{&amp;nbsp;qks_manifests_location}}/{{&amp;nbsp;component&amp;nbsp;}}&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;state:&amp;nbsp;directory&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;owner:&amp;nbsp;root&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;group:&amp;nbsp;root&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mode:&amp;nbsp;'0755'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;recurse:&amp;nbsp;true&lt;br /&gt;&lt;br /&gt;#################################################################################################&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;name:&amp;nbsp;QKS&amp;nbsp;Velero&amp;nbsp;|&amp;nbsp;Create&amp;nbsp;Namespaces&lt;br /&gt;&amp;nbsp;&amp;nbsp;when:&amp;nbsp;inventory_hostname&amp;nbsp;in&amp;nbsp;groups['kube-master']&lt;br /&gt;&amp;nbsp;&amp;nbsp;become:&amp;nbsp;true&lt;br /&gt;&amp;nbsp;&amp;nbsp;run_once:&amp;nbsp;true&lt;br /&gt;&amp;nbsp;&amp;nbsp;shell:&amp;nbsp;&quot;kubectl&amp;nbsp;create&amp;nbsp;namespace&amp;nbsp;{{&amp;nbsp;qks_velero_namespace&amp;nbsp;}}&amp;nbsp;--dry-run&amp;nbsp;-o&amp;nbsp;yaml&amp;nbsp;|&amp;nbsp;kubectl&amp;nbsp;apply&amp;nbsp;-f&amp;nbsp;-&quot;&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;name:&amp;nbsp;QKS&amp;nbsp;Velero&amp;nbsp;|&amp;nbsp;Install&amp;nbsp;External-Snapshotter&amp;nbsp;Components&lt;br /&gt;&amp;nbsp;&amp;nbsp;when:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;not&amp;nbsp;qks_offline_enabled&amp;nbsp;|&amp;nbsp;bool&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;inventory_hostname&amp;nbsp;in&amp;nbsp;groups['kube-master']&lt;br /&gt;&amp;nbsp;&amp;nbsp;become:&amp;nbsp;true&lt;br /&gt;&amp;nbsp;&amp;nbsp;vars:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;snapshotter_components:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;client/config/crd&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;deploy/kubernetes/csi-snapshotter&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;deploy/kubernetes/snapshot-controller&lt;br /&gt;&amp;nbsp;&amp;nbsp;shell:&amp;nbsp;|&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;kubens&amp;nbsp;{{&amp;nbsp;qks_velero_namespace&amp;nbsp;}}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;kubectl&amp;nbsp;apply&amp;nbsp;-k&amp;nbsp;&lt;a href=&quot;https://github.com/kubernetes-csi/external-snapshotter/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/kubernetes-csi/external-snapshotter/&lt;/a&gt;{{&amp;nbsp;item&amp;nbsp;}}?ref=release-{{&amp;nbsp;qks_velero_external_snapshotter_version&amp;nbsp;}}&lt;br /&gt;&amp;nbsp;&amp;nbsp;loop:&amp;nbsp;&quot;{{&amp;nbsp;snapshotter_components&amp;nbsp;}}&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;loop_control:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;label:&amp;nbsp;&quot;{{&amp;nbsp;item&amp;nbsp;}}&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;run_once:&amp;nbsp;true&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;name:&amp;nbsp;QKS&amp;nbsp;Velero&amp;nbsp;|&amp;nbsp;Install&amp;nbsp;External-Snapshotter&amp;nbsp;Components&lt;br /&gt;&amp;nbsp;&amp;nbsp;when:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;qks_offline_enabled&amp;nbsp;|&amp;nbsp;bool&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;inventory_hostname&amp;nbsp;in&amp;nbsp;groups['kube-master']&lt;br /&gt;&amp;nbsp;&amp;nbsp;become:&amp;nbsp;true&lt;br /&gt;&amp;nbsp;&amp;nbsp;run_once:&amp;nbsp;true&lt;br /&gt;&amp;nbsp;&amp;nbsp;block:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;name:&amp;nbsp;QKS&amp;nbsp;Velero&amp;nbsp;|&amp;nbsp;Copy&amp;nbsp;Manifests&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;copy:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;src:&amp;nbsp;&quot;{{&amp;nbsp;item&amp;nbsp;}}.yaml&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dest:&amp;nbsp;&quot;{{&amp;nbsp;qks_manifests_location&amp;nbsp;}}/{{&amp;nbsp;component&amp;nbsp;}}/{{&amp;nbsp;item&amp;nbsp;}}.yaml&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;loop:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;groupsnapshot.storage.k8s.io_volumegroupsnapshotclasses&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;groupsnapshot.storage.k8s.io_volumegroupsnapshotcontents&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;groupsnapshot.storage.k8s.io_volumegroupsnapshots&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;kustomization&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;rbac-csi-snapshotter&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;rbac-external-provisioner&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;rbac-snapshot-controller&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;setup-csi-snapshotter&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;setup-snapshot-controller&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;snapshot.storage.k8s.io_volumesnapshotclasses&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;snapshot.storage.k8s.io_volumesnapshotcontents&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;snapshot.storage.k8s.io_volumesnapshots&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;name:&amp;nbsp;QKS&amp;nbsp;Velero&amp;nbsp;|&amp;nbsp;Apply&amp;nbsp;Manifests&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;shell:&amp;nbsp;|&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;kubens&amp;nbsp;{{&amp;nbsp;qks_velero_namespace&amp;nbsp;}}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;kubectl&amp;nbsp;apply&amp;nbsp;-k&amp;nbsp;{{&amp;nbsp;qks_manifests_location&amp;nbsp;}}/{{&amp;nbsp;component&amp;nbsp;}}&lt;br /&gt;&lt;br /&gt;###############&lt;br /&gt;#&lt;br /&gt;###############&lt;br /&gt;-&amp;nbsp;name:&amp;nbsp;QKS&amp;nbsp;Velero&amp;nbsp;|&amp;nbsp;Create&amp;nbsp;Secret&amp;nbsp;&amp;amp;&amp;nbsp;VSClass&lt;br /&gt;&amp;nbsp;&amp;nbsp;when:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;inventory_hostname&amp;nbsp;in&amp;nbsp;groups['kube-master']&lt;br /&gt;&amp;nbsp;&amp;nbsp;become:&amp;nbsp;true&lt;br /&gt;&amp;nbsp;&amp;nbsp;run_once:&amp;nbsp;true&lt;br /&gt;&amp;nbsp;&amp;nbsp;block:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;name:&amp;nbsp;QKS&amp;nbsp;Velero&amp;nbsp;|&amp;nbsp;Template&amp;nbsp;VSClass&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;template:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;src:&amp;nbsp;volumesnapshotclass.yaml.j2&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dest:&amp;nbsp;&quot;{{&amp;nbsp;qks_manifests_location&amp;nbsp;}}/{{&amp;nbsp;component&amp;nbsp;}}/volumesnapshotclass.yaml&quot;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;name:&amp;nbsp;QKS&amp;nbsp;Velero&amp;nbsp;|&amp;nbsp;Prepare&amp;nbsp;base64-encoded&amp;nbsp;S3&amp;nbsp;credentials&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set_fact:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;s3_credentials_raw:&amp;nbsp;|&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[default]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;aws_access_key_id={{&amp;nbsp;qks_velero_s3_access_key_id&amp;nbsp;}}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;aws_secret_access_key={{&amp;nbsp;qks_velero_s3_secret_access_key&amp;nbsp;}}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;name:&amp;nbsp;QKS&amp;nbsp;Velero&amp;nbsp;|&amp;nbsp;Encode&amp;nbsp;credentials&amp;nbsp;to&amp;nbsp;base64&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set_fact:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;s3_credentials_base64:&amp;nbsp;&quot;{{&amp;nbsp;s3_credentials_raw&amp;nbsp;|&amp;nbsp;b64encode&amp;nbsp;}}&quot;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;name:&amp;nbsp;QKS&amp;nbsp;Velero&amp;nbsp;|&amp;nbsp;Template&amp;nbsp;Secret&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;template:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;src:&amp;nbsp;secret-s3-credentials.yaml.j2&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dest:&amp;nbsp;&quot;{{&amp;nbsp;qks_manifests_location&amp;nbsp;}}/{{&amp;nbsp;component&amp;nbsp;}}/secret-s3-credentials.yaml&quot;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;name:&amp;nbsp;QKS&amp;nbsp;Velero&amp;nbsp;|&amp;nbsp;Apply&amp;nbsp;Secret&amp;nbsp;&amp;amp;&amp;nbsp;VSClass&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;shell:&amp;nbsp;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;kubectl&amp;nbsp;apply&amp;nbsp;-f&amp;nbsp;{{&amp;nbsp;qks_manifests_location&amp;nbsp;}}/{{&amp;nbsp;component&amp;nbsp;}}/{{&amp;nbsp;item&amp;nbsp;}}.yaml&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;loop:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;volumesnapshotclass&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;secret-s3-credentials&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;name:&amp;nbsp;QKS&amp;nbsp;Velero&amp;nbsp;|&amp;nbsp;Add&amp;nbsp;Chart&amp;nbsp;Repository&amp;nbsp;'vmware-tanzu'&lt;br /&gt;&amp;nbsp;&amp;nbsp;when:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;not&amp;nbsp;qks_offline_enabled&amp;nbsp;|&amp;nbsp;bool&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;inventory_hostname&amp;nbsp;in&amp;nbsp;groups['kube-master']&lt;br /&gt;&amp;nbsp;&amp;nbsp;become:&amp;nbsp;true&lt;br /&gt;&amp;nbsp;&amp;nbsp;helm_repository:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name:&amp;nbsp;vmware-tanzu&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;url:&amp;nbsp;&lt;a href=&quot;https://vmware-tanzu.github.io/helm-charts&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://vmware-tanzu.github.io/helm-charts&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;state:&amp;nbsp;present&lt;br /&gt;&amp;nbsp;&amp;nbsp;no_log:&amp;nbsp;true&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;name:&amp;nbsp;QKS&amp;nbsp;Velero&amp;nbsp;|&amp;nbsp;Ensure&amp;nbsp;S3&amp;nbsp;bucket&amp;nbsp;exists&lt;br /&gt;&amp;nbsp;&amp;nbsp;when:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;inventory_hostname&amp;nbsp;in&amp;nbsp;groups['kube-master']&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;qks_velero_create_bucket&amp;nbsp;|&amp;nbsp;default(true)&amp;nbsp;|&amp;nbsp;bool&lt;br /&gt;&amp;nbsp;&amp;nbsp;become:&amp;nbsp;true&lt;br /&gt;&amp;nbsp;&amp;nbsp;run_once:&amp;nbsp;true&lt;br /&gt;&amp;nbsp;&amp;nbsp;shell:&amp;nbsp;|&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set&amp;nbsp;-euo&amp;nbsp;pipefail&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CREDS=&quot;$(mktemp&amp;nbsp;/tmp/velero-aws-creds.XXXXXX)&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;kubectl&amp;nbsp;-n&amp;nbsp;{{&amp;nbsp;qks_velero_namespace&amp;nbsp;}}&amp;nbsp;get&amp;nbsp;secret&amp;nbsp;s3-credentials&amp;nbsp;\&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-o&amp;nbsp;jsonpath='{.data.aws}'&amp;nbsp;|&amp;nbsp;base64&amp;nbsp;-d&amp;nbsp;&amp;gt;&amp;nbsp;&quot;${CREDS}&quot;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;export&amp;nbsp;AWS_SHARED_CREDENTIALS_FILE=&quot;${CREDS}&quot;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;aws&amp;nbsp;--endpoint-url&amp;nbsp;https://{{&amp;nbsp;qks_velero_s3_url&amp;nbsp;}}&amp;nbsp;--no-verify-ssl&amp;nbsp;s3api&amp;nbsp;head-bucket&amp;nbsp;--bucket&amp;nbsp;{{&amp;nbsp;qks_velero_bucket&amp;nbsp;|&amp;nbsp;default('velero')&amp;nbsp;}}&amp;nbsp;\&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;||&amp;nbsp;aws&amp;nbsp;--endpoint-url&amp;nbsp;https://{{&amp;nbsp;qks_velero_s3_url&amp;nbsp;}}&amp;nbsp;--no-verify-ssl&amp;nbsp;s3&amp;nbsp;mb&amp;nbsp;s3://{{&amp;nbsp;qks_velero_bucket&amp;nbsp;|&amp;nbsp;default('velero')&amp;nbsp;}}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rm&amp;nbsp;-f&amp;nbsp;&quot;${CREDS}&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;args:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;executable:&amp;nbsp;/bin/bash&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;name:&amp;nbsp;QKS&amp;nbsp;Velero&amp;nbsp;|&amp;nbsp;Set&amp;nbsp;chart&amp;nbsp;location&lt;br /&gt;&amp;nbsp;&amp;nbsp;when:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;inventory_hostname&amp;nbsp;in&amp;nbsp;groups['kube-master']&lt;br /&gt;&amp;nbsp;&amp;nbsp;set_fact:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;chartname:&amp;nbsp;&amp;gt;-&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{%&amp;nbsp;if&amp;nbsp;qks_offline_enabled&amp;nbsp;|&amp;nbsp;bool&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{{&amp;nbsp;qks_offline_target&amp;nbsp;}}/{{&amp;nbsp;component&amp;nbsp;}}/charts/velero-{{&amp;nbsp;qks_velero_version&amp;nbsp;}}.tgz&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{%&amp;nbsp;else&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;vmware-tanzu/velero&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{%&amp;nbsp;endif&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%}&lt;br /&gt;&amp;nbsp;&amp;nbsp;run_once:&amp;nbsp;true&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;name:&amp;nbsp;QKS&amp;nbsp;Velero&amp;nbsp;|&amp;nbsp;Deploy&amp;nbsp;{{&amp;nbsp;qks_velero_release&amp;nbsp;}}&lt;br /&gt;&amp;nbsp;&amp;nbsp;when:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;inventory_hostname&amp;nbsp;in&amp;nbsp;groups['kube-master']&lt;br /&gt;&amp;nbsp;&amp;nbsp;become:&amp;nbsp;true&lt;br /&gt;&amp;nbsp;&amp;nbsp;helm_cmd:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name:&amp;nbsp;&quot;{{&amp;nbsp;chartname&amp;nbsp;}}&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;release:&amp;nbsp;&quot;{{&amp;nbsp;qks_velero_release&amp;nbsp;}}&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;version:&amp;nbsp;&quot;{{&amp;nbsp;qks_velero_version&amp;nbsp;}}&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;namespace:&amp;nbsp;&quot;{{&amp;nbsp;qks_velero_namespace&amp;nbsp;}}&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;state:&amp;nbsp;present&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;update_cache:&amp;nbsp;no&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;force:&amp;nbsp;true&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wait:&amp;nbsp;true&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;options:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;'--set&amp;nbsp;cleanUpCRDs=true'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;'--set&amp;nbsp;deployNodeAgent=true'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;'--set&amp;nbsp;configuration.features=EnableCSI'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;'--set&amp;nbsp;configuration.backupStorageLocation[0].name=velero'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;'--set&amp;nbsp;configuration.backupStorageLocation[0].provider=aws'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;'--set&amp;nbsp;configuration.backupStorageLocation[0].bucket=velero'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;'--set&amp;nbsp;configuration.backupStorageLocation[0].default=true'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;'--set&amp;nbsp;configuration.backupStorageLocation[0].config.region=ap-northeast-2'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;'--set&amp;nbsp;configuration.backupStorageLocation[0].config.checksumAlgorithm=&quot;&quot;'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;'--set&amp;nbsp;configuration.backupStorageLocation[0].config.s3ForcePathStyle=true'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;'--set&amp;nbsp;configuration.backupStorageLocation[0].config.s3Url=https://{{&amp;nbsp;qks_velero_s3_url&amp;nbsp;}}'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;'--set&amp;nbsp;configuration.backupStorageLocation[0].credential.name=s3-credentials'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;'--set&amp;nbsp;configuration.backupStorageLocation[0].credential.key=aws'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;'--set&amp;nbsp;configuration.volumeSnapshotLocation[0].name=velero-volume'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;'--set&amp;nbsp;configuration.volumeSnapshotLocation[0].provider=aws'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;'--set&amp;nbsp;configuration.volumeSnapshotLocation[0].config.region=ap-northeast-2'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;'--set&amp;nbsp;configuration.volumeSnapshotLocation[0].credential.name=s3-credentials'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;'--set&amp;nbsp;configuration.volumeSnapshotLocation[0].credential.key=aws'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;'--set&amp;nbsp;initContainers[0].name=velero-plugin-for-aws'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;'--set&amp;nbsp;initContainers[0].image=velero/velero-plugin-for-aws:{{&amp;nbsp;qks_velero_plugin_for_aws_version&amp;nbsp;}}'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;'--set&amp;nbsp;initContainers[0].volumeMounts[0].mountPath=/target'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;'--set&amp;nbsp;initContainers[0].volumeMounts[0].name=plugins'&lt;br /&gt;&amp;nbsp;&amp;nbsp;run_once:&amp;nbsp;yes&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;name:&amp;nbsp;QKS&amp;nbsp;Velero-UI&amp;nbsp;|&amp;nbsp;Add&amp;nbsp;Chart&amp;nbsp;Repository&amp;nbsp;'otwld'&lt;br /&gt;&amp;nbsp;&amp;nbsp;when:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;not&amp;nbsp;qks_offline_enabled&amp;nbsp;|&amp;nbsp;bool&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;inventory_hostname&amp;nbsp;in&amp;nbsp;groups['kube-master']&lt;br /&gt;&amp;nbsp;&amp;nbsp;become:&amp;nbsp;true&lt;br /&gt;&amp;nbsp;&amp;nbsp;helm_repository:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name:&amp;nbsp;otwld&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;url:&amp;nbsp;&lt;a href=&quot;https://helm.otwld.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://helm.otwld.com/&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;state:&amp;nbsp;present&lt;br /&gt;&amp;nbsp;&amp;nbsp;no_log:&amp;nbsp;true&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;name:&amp;nbsp;QKS&amp;nbsp;Velero-UI&amp;nbsp;|&amp;nbsp;Set&amp;nbsp;chart&amp;nbsp;location&lt;br /&gt;&amp;nbsp;&amp;nbsp;when:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;inventory_hostname&amp;nbsp;in&amp;nbsp;groups['kube-master']&lt;br /&gt;&amp;nbsp;&amp;nbsp;become:&amp;nbsp;true&lt;br /&gt;&amp;nbsp;&amp;nbsp;set_fact:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;chartname:&amp;nbsp;&amp;gt;-&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{%&amp;nbsp;if&amp;nbsp;qks_offline_enabled&amp;nbsp;|&amp;nbsp;bool&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{{&amp;nbsp;qks_offline_target&amp;nbsp;}}/{{&amp;nbsp;component&amp;nbsp;}}/charts/velero-ui-{{&amp;nbsp;qks_velero_ui_version&amp;nbsp;}}.tgz&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{%&amp;nbsp;else&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;otwld/velero-ui&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{%&amp;nbsp;endif&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;%}&lt;br /&gt;&amp;nbsp;&amp;nbsp;run_once:&amp;nbsp;yes&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;name:&amp;nbsp;QKS&amp;nbsp;Velero-UI&amp;nbsp;|&amp;nbsp;Create&amp;nbsp;ConfigMap&lt;br /&gt;&amp;nbsp;&amp;nbsp;when:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;inventory_hostname&amp;nbsp;in&amp;nbsp;groups['kube-master']&lt;br /&gt;&amp;nbsp;&amp;nbsp;become:&amp;nbsp;true&lt;br /&gt;&amp;nbsp;&amp;nbsp;run_once:&amp;nbsp;true&lt;br /&gt;&amp;nbsp;&amp;nbsp;block:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;name:&amp;nbsp;QKS&amp;nbsp;Velero-UI&amp;nbsp;|&amp;nbsp;Template&amp;nbsp;ConfigMap&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;template:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;src:&amp;nbsp;velero-ui-env-vars.yaml.j2&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dest:&amp;nbsp;&quot;{{&amp;nbsp;qks_manifests_location&amp;nbsp;}}/{{&amp;nbsp;component&amp;nbsp;}}/velero-ui-env-vars.yaml&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;name:&amp;nbsp;QKS&amp;nbsp;Velero-UI&amp;nbsp;|&amp;nbsp;Apply&amp;nbsp;ConfigMap&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;shell:&amp;nbsp;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;kubectl&amp;nbsp;apply&amp;nbsp;-f&amp;nbsp;{{&amp;nbsp;qks_manifests_location&amp;nbsp;}}/{{&amp;nbsp;component&amp;nbsp;}}/{{&amp;nbsp;item&amp;nbsp;}}.yaml&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;loop:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;velero-ui-env-vars&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;name:&amp;nbsp;QKS&amp;nbsp;Velero-UI&amp;nbsp;|&amp;nbsp;Deploy&amp;nbsp;{{&amp;nbsp;qks_velero_ui_release&amp;nbsp;}}&lt;br /&gt;&amp;nbsp;&amp;nbsp;when:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;inventory_hostname&amp;nbsp;in&amp;nbsp;groups['kube-master']&lt;br /&gt;&amp;nbsp;&amp;nbsp;become:&amp;nbsp;true&lt;br /&gt;&amp;nbsp;&amp;nbsp;run_once:&amp;nbsp;yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;helm_cmd:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name:&amp;nbsp;&quot;{{&amp;nbsp;chartname&amp;nbsp;}}&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;release:&amp;nbsp;&quot;{{&amp;nbsp;qks_velero_ui_release&amp;nbsp;}}&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;version:&amp;nbsp;&quot;{{&amp;nbsp;qks_velero_ui_version&amp;nbsp;}}&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;namespace:&amp;nbsp;&quot;{{&amp;nbsp;qks_velero_namespace&amp;nbsp;}}&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;state:&amp;nbsp;present&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;update_cache:&amp;nbsp;no&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;force:&amp;nbsp;yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wait:&amp;nbsp;true&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;options:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;'--set&amp;nbsp;ingress.enabled=true'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;'--set&amp;nbsp;ingress.hosts[0].host={{&amp;nbsp;qks_velero_ui_fqdn&amp;nbsp;}}'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;'--set-string&amp;nbsp;ingress.hosts[0].paths[0].path=/'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;'--set-string&amp;nbsp;ingress.hosts[0].paths[0].pathType=Prefix'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;'--set&amp;nbsp;configuration.general.secretPassPhrase.useSecret=false'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;'--set&amp;nbsp;envFrom[0].configMapRef.name=velero-ui-env-vars'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#-&amp;nbsp;'--set&amp;nbsp;envFrom[1].secretRef.name=velero-ui-secret'&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;name:&amp;nbsp;QKS&amp;nbsp;Velero&amp;nbsp;|&amp;nbsp;Add&amp;nbsp;FQDN&amp;nbsp;to&amp;nbsp;/etc/hosts&amp;nbsp;file&lt;br /&gt;&amp;nbsp;&amp;nbsp;become:&amp;nbsp;yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;lineinfile:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dest:&amp;nbsp;/etc/hosts&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;insertafter:&amp;nbsp;EOF&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;state:&amp;nbsp;present&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;line:&amp;nbsp;&quot;{{&amp;nbsp;qks_load_balancer_addr&amp;nbsp;}}&amp;nbsp;{{&amp;nbsp;item&amp;nbsp;}}&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;loop:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;'{{&amp;nbsp;qks_velero_ui_fqdn&amp;nbsp;}}'&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;name:&amp;nbsp;QKS&amp;nbsp;Velero&amp;nbsp;|&amp;nbsp;Patch&amp;nbsp;BSL&lt;br /&gt;&amp;nbsp;&amp;nbsp;when:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;inventory_hostname&amp;nbsp;in&amp;nbsp;groups['kube-master']&lt;br /&gt;&amp;nbsp;&amp;nbsp;become:&amp;nbsp;yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;run_once:&amp;nbsp;true&lt;br /&gt;&amp;nbsp;&amp;nbsp;shell:&amp;nbsp;|&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;kubectl&amp;nbsp;patch&amp;nbsp;bsl&amp;nbsp;velero&amp;nbsp;--patch&amp;nbsp;'{&quot;spec&quot;:&amp;nbsp;{&quot;config&quot;:&amp;nbsp;{&quot;insecureSkipTLSVerify&quot;:&amp;nbsp;&quot;true&quot;}}}'&amp;nbsp;--type&amp;nbsp;merge&amp;nbsp;-n&amp;nbsp;{{&amp;nbsp;qks_velero_namespace&amp;nbsp;}}&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;@@@@@@@@@@@@@@@@@@@@&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;velero-nfs&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1775979145856&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apiVersion: v1
kind: PersistentVolume
metadata:
  name: velero-nfs-pv
spec:
  capacity:
    storage: 100Gi
  accessModes:
    - ReadWriteMany
  nfs:
    server: &amp;lt;NFS_SERVER_IP&amp;gt;  # 예: 192.168.1.10
    path: /path/to/backup    # NFS 공유 경로
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: velero-nfs-pvc
  namespace: velero
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 100Gi
  volumeName: velero-nfs-pv&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;values&lt;/p&gt;
&lt;pre id=&quot;code_1775979406997&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# values.yaml

# 최신 Velero 이미지 사용
image:
  repository: velero/velero
  tag: v1.18.0
  pullPolicy: IfNotPresent

# 플러그인 설정
initContainers:
  # CSI 스냅샷 연동용 (필수)
  - name: velero-plugin-for-csi
    image: velero/velero-plugin-for-csi:v0.8.0 # 2026 최신 호환 버전
    volumeMounts:
      - mountPath: /target
        name: plugins
  # NFS/파일시스템 백업용 플러그인
  - name: velero-plugin-for-file-system
    image: velero/velero-plugin-for-file-system:v0.8.0
    volumeMounts:
      - mountPath: /target
        name: plugins

configuration:
  # NFS를 저장소로 지정
  backupStorageLocation:
    - name: default
      provider: community.velero.io/file-system-plugin
      bucket: velero-backups
      default: true
      config:
        path: /var/velero-local-storage # 컨테이너 내부 마운트 경로
  
  # NFS 환경에서는 CSI Snapshot보다 Data Mover(Kopia) 방식이 안정적입니다.
  volumeSnapshotLocation: []
  uploaderType: kopia 

# 노드 에이전트 활성화 (데이터 복사 및 전송 담당)
deployNodeAgent: true

# NFS PVC를 Velero 서버와 노드 에이전트 Pod에 마운트
volumes:
  - name: backup-storage
    persistentVolumeClaim:
      claimName: velero-nfs-pvc

volumeMounts:
  - name: backup-storage
    mountPath: /var/velero-local-storage

# NFS 환경이므로 별도의 S3 Secret 등은 필요 없음
credentials:
  useSecret: false

# RBAC 활성화
rbac:
  create: true

# [옵션] 앤서블 코드에서 사용하던 UI나 추가 설정이 필요하다면 여기에 추가&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;헬름으로 설치&lt;/p&gt;
&lt;pre id=&quot;code_1775979431275&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 1. 레포지토리 추가 및 업데이트
helm repo add vmware-tanzu https://vmware-tanzu.github.io/helm-charts
helm repo update

# 2. 최신 차트 버전 확인 (선택 사항)
helm search repo vmware-tanzu/velero --versions | head -n 5

# 3. 설치
helm install velero vmware-tanzu/velero \
  --namespace velero \
  -f values.yaml \
  --version 12.0.0&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;확인&lt;/p&gt;
&lt;pre id=&quot;code_1775979444420&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# BSL 상태 확인 (PHASE가 Available이어야 합니다)
kubectl get bsl -n velero

# 에이전트들이 모든 노드에 잘 떴는지 확인
kubectl get daemonset -n velero node-agent&lt;/code&gt;&lt;/pre&gt;</description>
      <author>독현진</author>
      <guid isPermaLink="true">https://doghj.tistory.com/109</guid>
      <comments>https://doghj.tistory.com/109#entry109comment</comments>
      <pubDate>Sun, 12 Apr 2026 11:59:53 +0900</pubDate>
    </item>
    <item>
      <title>syslog</title>
      <link>https://doghj.tistory.com/108</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;syslog는 로깅을 위한 표준 형식이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;한마디로 장치에 특이사항이나 변동이 발생하면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;메세지가 발생하게 된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;예로 OSPF의 활성화 후 인접성을 형성하는 syslog를 확인해보자&lt;/p&gt;
&lt;pre id=&quot;code_1731991862691&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;00:07:33: %OSPF-5-ADJCHG: Process 1, Nbr 192.168.100.1 on Serial0/0/0 from LOADING to FULL, Loading Done
-OSPF 인접성 형성

%LINK-5-CHANGED: Interface Serial0/0/0, changed state to administratively down
-인터페이스 수동 shutdown&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;두개의 라우터에 같은 area의 ospf를 설정하면 잠시뒤 위와같은 syslog가 출력된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;( ospf 설정 후 기다리면 CLI 창에서 확인이 가능하다 )&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이 것을 분석해보자&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;각 항목은 : (콜론) 으로 구분된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;*&lt;/span&gt;00:07:33&lt;/span&gt;:&lt;span style=&quot;color: #f89009;&quot;&gt; %OSPF&lt;span style=&quot;color: #409d00;&quot;&gt;-5&lt;/span&gt;-&lt;span style=&quot;color: #006dd7;&quot;&gt;ADJCHG&lt;/span&gt;&lt;/span&gt;:&lt;span style=&quot;color: #7e98b1;&quot;&gt; Process 1, Nbr 192.168.100.1 on Serial0/0/0 from LOADING to FULL, Loading Done&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;* 시퀀스 넘버 (패킷 트레이서에는 미표기)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323; text-align: start;&quot;&gt;00:07:33&lt;span style=&quot;color: #000000;&quot;&gt; 이벤트 발생 시간 (월,일까지 표기되나 패킷트레이서에는 미표기)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #f89009; text-align: start;&quot;&gt;%OSPF&amp;nbsp;&lt;span style=&quot;color: #000000;&quot;&gt;%Facility 범주 (링크 상태 관련이면 %LINK로 표시됨)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #409d00; text-align: start;&quot;&gt;5 &lt;span style=&quot;color: #000000;&quot;&gt;Serverity 번호&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7; text-align: start;&quot;&gt;ADJCHG &lt;span style=&quot;color: #000000;&quot;&gt;Mnemonic (이벤트의 간단한 요약)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #7e98b1; text-align: start;&quot;&gt;Process 1 ..... Loading Done&amp;nbsp;&lt;span style=&quot;color: #000000;&quot;&gt;Description ( 이벤트의 자세한 설명 )&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;중간의 Serverity 레벨은&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 68.9535%; height: 446px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignCenter&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.0371%;&quot;&gt;레벨&lt;/td&gt;
&lt;td style=&quot;width: 24.768%;&quot;&gt;심각도&lt;/td&gt;
&lt;td style=&quot;width: 96.0729%;&quot;&gt;내용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.0371%; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 24.768%;&quot;&gt;Emergency&lt;/td&gt;
&lt;td style=&quot;width: 96.0729%;&quot;&gt;시스템이&amp;nbsp;더&amp;nbsp;이상&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;없는&amp;nbsp;심각한&amp;nbsp;상태&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.0371%; text-align: center;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;width: 24.768%;&quot;&gt;Alert&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 96.0729%;&quot;&gt;즉각적인&amp;nbsp;조치가&amp;nbsp;필요한&amp;nbsp;상황&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.0371%; text-align: center;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;width: 24.768%;&quot;&gt;Critical&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 96.0729%;&quot;&gt;심각한 문제&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.0371%; text-align: center;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;width: 24.768%;&quot;&gt;Error&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 96.0729%;&quot;&gt;일반적인&amp;nbsp;오류&amp;nbsp;상황&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.0371%; text-align: center;&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;width: 24.768%;&quot;&gt;Warning&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 96.0729%;&quot;&gt;주의가&amp;nbsp;필요한&amp;nbsp;상황&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.0371%; text-align: center;&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;width: 24.768%;&quot;&gt;Notice&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 96.0729%;&quot;&gt;중요하지만&amp;nbsp;경고는&amp;nbsp;아님(정상적인&amp;nbsp;중요한&amp;nbsp;이벤트)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.0371%; text-align: center;&quot;&gt;6&lt;/td&gt;
&lt;td style=&quot;width: 24.768%;&quot;&gt;Informational&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 96.0729%;&quot;&gt;정보성&amp;nbsp;메시지&amp;nbsp;(일반적인&amp;nbsp;상태&amp;nbsp;보고)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 14.0371%; text-align: center;&quot;&gt;7&lt;/td&gt;
&lt;td style=&quot;width: 24.768%;&quot;&gt;Debug&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 96.0729%;&quot;&gt;디버깅용&amp;nbsp;상세&amp;nbsp;메시지&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;위의 표를 따른다&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;해당 표는 모든 업체에서 따르는 표준이고 숫자가 낮을수록 중요하다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;0~3 단계의 로그 발생시 심각한 문제로 본다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;즉, 예시의 OSPF 인접성 형성 로그는&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;5단계의 로그인 것을 알 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;로깅위치&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;로그는 다양한 장소에서 로깅된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Console line&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;네트워크 장비에 콘솔 포트로 작업을 하면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;CLI 창에 syslog가 표시되는 것을 볼 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;기본적으로 활성화 되어있고 Serverity레벨은 7(Debug)이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;(7레벨이 활성화되면 7 ~ 0레벨 까지의 모든 로그가 표시된다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;VTY Terminal line&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;telnet, ssh 를 이용해 접속하는 경우 VTY 즉, 가상 터미널 라인에 로그가 표시된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;기본적으로 비활성화 되어있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Logging Buffer&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;장치의 RAM에 이벤트가 저장된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;show logging 명령어로 확인이 가능하다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;기본적으로 활성화 되어있고 7( Debug )레벨이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;(7레벨이 활성화되면 7 ~ 0레벨 까지의 모든 로그가 표시된다.)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;외부 syslog 서버&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;로그의 저장장소를 외부로 지정할 수도 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;syslog 설정 예&lt;/p&gt;
&lt;pre id=&quot;code_1731999587187&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;R1(config)# no logging console
로깅 비활성화

R1(config)# logging monitor 6
Telnet, SSH 접속시 로깅 Informational(6레벨) 보다 위의 레벨만 기록됨

R1(config)# loggin buffered debugging
RAM 버퍼에 7레벨(debug) 이상의 로그만 기록됨

R1(config)# logging 10.0.0.100
R1(config)# logging trap debugging
10.0.0.100의 서버에 로그 저장
7레벨 (debugging) 이상만 저장됨&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;로깅 위치는 원하는 곳에 원하는 개수로 설정 가능하다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;서로 다른 위치에 같은 내용의 로그가 기록되지만&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;다른 위치에 다른 레벨의 로그만 기록되게 할 수도 있다&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Network</category>
      <author>독현진</author>
      <guid isPermaLink="true">https://doghj.tistory.com/108</guid>
      <comments>https://doghj.tistory.com/108#entry108comment</comments>
      <pubDate>Tue, 19 Nov 2024 16:00:30 +0900</pubDate>
    </item>
  </channel>
</rss>