"Kubeadm API로 컴포넌트 커스터마이징"의 두 판 사이의 차이

(사용자 2명의 중간 판 14개는 보이지 않습니다)
1번째 줄: 1번째 줄:
; kubeadm으로 컨트롤 플레인 사용자 정의하기
==개요==
{{작성중}}
{{소문자}}
[[분류: k8s]][[분류: kubeadm]]
;Customizing components with the kubeadm API
;kubeadm API로 컴포넌트 커스터마이징
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/control-plane-flags/
----
이 페이지는 kubeadm이 배포하는 컴포넌트를 커스터마이징하는 방법을 다룹니다. 컨트롤 플레인 컴포넌트의 경우 <code>ClusterConfiguration</code> 구조에서 플래그를 사용하거나 노드별 패치를 사용할 수 있습니다. kubelet 및 kube-proxy의 경우 <code>KubeletConfiguration</code>과 <code>KubeProxyConfiguration</code>을 각각 사용할 수 있습니다.


{{k8s feature-state|for_k8s_version=1.12|state=stable}}
이 모든 옵션은 kubeadm 설정 API를 통해 가능합니다. 설정의 각 필드에 대한 자세한 내용은 [https://kubernetes.io/docs/reference/config-api/kubeadm-config.v1beta3/ API 참조 페이지]를 참조하십시오.


kubeadm의 <code>ClusterConfiguration</code> 오브젝트는 API 서버, 컨트롤러매니저, 스케줄러와 같은 컨트롤 플레인 구성요소에 전달되는 기본 플래그 <code>extraArgs</code> 필드를 노출한다. 이 구성요소는 다음 필드를 사용하도록 정의되어 있다.
{{NOTE}}
현재 kubeadm의 CoreDNS 배포를 커스터마이징하는 것은 지원되지 않습니다. <code>kube-system/coredns</code> ConfigMap을 수동으로 패치하고 나서 CoreDNS 파드를 다시 생성해야 합니다. 또는, 기본 CoreDNS 배포를 건너뛰고 사용자의 변형판을 배포할 수 있습니다. 이에 대한 자세한 내용은 [[kubeadm init#kubeadm을 사용한 초기화 단계|kubeadm을 사용한 초기화 단계]]를 참조하십시오.
{{/NOTE}}
 
{{NOTE}}
이미 생성된 클러스터를 재설정하려면 [[kubeadm 클러스터 재설정]]을 참조하십시오.
{{/NOTE}}
 
==<code>ClusterConfiguration</code>에 플래그로 컨트롤 플레인 커스터마이징==
kubeadm의 <code>ClusterConfiguration</code> 객체는 APIServer, ControllerManager, Scheduler, Etcd와 같은 컨트롤 플레인 컴포넌트에 전달되는 기본 플래그를 재정의할 수 있는 방법을 제공합니다. 컴포넌트는 다음과 같은 구조로 정의됩니다:


* <code>apiServer</code>
* <code>apiServer</code>
* <code>controllerManager</code>
* <code>controllerManager</code>
* <code>scheduler</code>
* <code>scheduler</code>
* <code>etcd</code>


<code>extraArgs</code> 필드는 <code>key: value</code> 쌍으로 구성되어 있다. 컨트롤 플레인 구성요소를 위한 플래그를 대체하려면 다음을 수행한다.
이 구조는 공통된 <code>extraArgs</code> 필드를 포함하며, 이는 <code>key: value</code> 쌍으로 구성됩니다. 컨트롤 플레인 컴포넌트에 대한 플래그를 재정의하려면:
 
# 사용자 구성에서 적절한 필드를 추가한다.
# 필드에 대체할 플래그를 추가한다.
# <code>kubeadm init</code>에 <code>--config &lt;YOUR CONFIG YAML&gt;</code> 파라미터를 추가해서 실행한다.
 
각 필드의 구성에서 자세한 정보를 보려면, [https://godoc.org/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2#ClusterConfiguration API 참고 문서]에서 확인해 볼 수 있다.


{{k8s note}}<code>kubeadm config print init-defaults</code>를 실행하고 원하는 파일에 출력을 저장하여 기본값인 <code>ClusterConfiguration</code> 오브젝트를 생성할 수 있다. {{k8s /note}}
* 1. 적절한 <code>extraArgs</code>를 설정에 추가합니다.
* 2. <code>extraArgs</code> 필드에 플래그를 추가합니다.
* 3. <code>kubeadm init</code><code>--config <YOUR CONFIG YAML></code>를 추가하여 실행합니다.


---
{{NOTE}}
기본값을 가진 <code>ClusterConfiguration</code> 객체를 생성하려면 <code>kubeadm config print init-defaults</code> 명령어를 실행하고, 출력을 원하는 파일에 저장하십시오.
{{/NOTE}}
{{NOTE}}
<code>ClusterConfiguration</code> 객체는 현재 kubeadm 클러스터에서 전역적입니다. 즉, 추가한 플래그는 다른 노드의 동일한 컴포넌트의 모든 인스턴스에 적용됩니다. 다른 노드에서 개별 컴포넌트에 대해 개별 설정을 적용하려면 [[#패치로 커스터마이징|패치]]를 사용할 수 있습니다.
{{/NOTE}}
{{NOTE}}
중복 플래그(키) 또는 같은 플래그 <code>--foo</code>를 여러 번 전달하는 것은 현재 지원되지 않습니다. 이를 해결(workaround)하려면 [[#패치로 커스터마이징|패치]]를 사용해야 합니다.
{{/NOTE}}


__TOC__
=== APIServer 플래그 ===
자세한 내용은 [[docs/reference/command-line-tools-reference/kube-apiserver|kube-apiserver의 참조 문서]]를 참조하십시오.


사용 예시:


== APIServer 플래그 ==
<syntaxhighlight lang='yaml'>
 
apiVersion: kubeadm.k8s.io/v1beta3
자세한 내용은 [[docs/reference/command-line-tools-reference/kube-apiserver/|kube-apiserver에 대한 참고 문서]]를 확인한다.
 
사용 예:
 
<source lang="yaml">
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kind: ClusterConfiguration
kubernetesVersion: v1.16.0
kubernetesVersion: v1.16.0
apiServer:
apiServer:
   extraArgs:
   extraArgs:
    advertise-address: 192.168.0.103
     anonymous-auth: "false"
     anonymous-auth: "false"
     enable-admission-plugins: AlwaysPullImages,DefaultStorageClass
     enable-admission-plugins: AlwaysPullImages,DefaultStorageClass
     audit-log-path: /home/johndoe/audit.log
     audit-log-path: /home/johndoe/audit.log
</source>
</syntaxhighlight>
 
== 컨트롤러매니저 플래그 ==
 
자세한 내용은 [[docs/reference/command-line-tools-reference/kube-controller-manager/|kube-controller-manager에 대한 참고 문서]]를 확인한다.
 
사용 예:
 
<source lang="yaml">
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kubernetesVersion: v1.16.0
controllerManager:
  extraArgs:
    cluster-signing-key-file: /home/johndoe/keys/ca.key
    bind-address: 0.0.0.0
    deployment-controller-sync-period: "50"
</source>
 
== 스케줄러 플래그 ==
 
자세한 내용은 [[docs/reference/command-line-tools-reference/kube-scheduler/|kube-scheduler에 대한 참고 문서]]를 확인한다.
 
사용 예:
 
<source lang="yaml">
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kubernetesVersion: v1.16.0
scheduler:
  extraArgs:
    address: 0.0.0.0
    config: /home/johndoe/schedconfig.yaml
    kubeconfig: /home/johndoe/kubeconfig.yaml
</source>
---
 


==참고==
=== ControllerManager 플래그 ===
* https://kubernetes.io/ko/docs/setup/production-environment/tools/kubeadm/control-plane-flags/
=== Scheduler 플래그 ===
* https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/control-plane-flags/
=== Etcd 플래그 ===
* https://github.com/kubernetes/website/blob/master/content/ko/docs/setup/production-environment/tools/kubeadm/control-plane-flags.md


[[분류: k8s 문서]]
== 패치로 커스터마이징 ==
== kubelet 커스터마이징 ==
== kube-proxy 커스터마이징 ==

2024년 7월 2일 (화) 22:14 판

1 개요

Crystal Clear action info.png 작성 중인 문서입니다.

Customizing components with the kubeadm API
kubeadm API로 컴포넌트 커스터마이징

https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/control-plane-flags/


이 페이지는 kubeadm이 배포하는 컴포넌트를 커스터마이징하는 방법을 다룹니다. 컨트롤 플레인 컴포넌트의 경우 ClusterConfiguration 구조에서 플래그를 사용하거나 노드별 패치를 사용할 수 있습니다. kubelet 및 kube-proxy의 경우 KubeletConfigurationKubeProxyConfiguration을 각각 사용할 수 있습니다.

이 모든 옵션은 kubeadm 설정 API를 통해 가능합니다. 설정의 각 필드에 대한 자세한 내용은 API 참조 페이지를 참조하십시오.

Note

현재 kubeadm의 CoreDNS 배포를 커스터마이징하는 것은 지원되지 않습니다. kube-system/coredns ConfigMap을 수동으로 패치하고 나서 CoreDNS 파드를 다시 생성해야 합니다. 또는, 기본 CoreDNS 배포를 건너뛰고 사용자의 변형판을 배포할 수 있습니다. 이에 대한 자세한 내용은 kubeadm을 사용한 초기화 단계를 참조하십시오.

Note

이미 생성된 클러스터를 재설정하려면 kubeadm 클러스터 재설정을 참조하십시오.

2 ClusterConfiguration에 플래그로 컨트롤 플레인 커스터마이징

kubeadm의 ClusterConfiguration 객체는 APIServer, ControllerManager, Scheduler, Etcd와 같은 컨트롤 플레인 컴포넌트에 전달되는 기본 플래그를 재정의할 수 있는 방법을 제공합니다. 컴포넌트는 다음과 같은 구조로 정의됩니다:

  • apiServer
  • controllerManager
  • scheduler
  • etcd

이 구조는 공통된 extraArgs 필드를 포함하며, 이는 key: value 쌍으로 구성됩니다. 컨트롤 플레인 컴포넌트에 대한 플래그를 재정의하려면:

  • 1. 적절한 extraArgs를 설정에 추가합니다.
  • 2. extraArgs 필드에 플래그를 추가합니다.
  • 3. kubeadm init--config <YOUR CONFIG YAML>를 추가하여 실행합니다.

Note

기본값을 가진 ClusterConfiguration 객체를 생성하려면 kubeadm config print init-defaults 명령어를 실행하고, 출력을 원하는 파일에 저장하십시오.

Note

ClusterConfiguration 객체는 현재 kubeadm 클러스터에서 전역적입니다. 즉, 추가한 플래그는 다른 노드의 동일한 컴포넌트의 모든 인스턴스에 적용됩니다. 다른 노드에서 개별 컴포넌트에 대해 개별 설정을 적용하려면 패치를 사용할 수 있습니다.

Note

중복 플래그(키) 또는 같은 플래그 --foo를 여러 번 전달하는 것은 현재 지원되지 않습니다. 이를 해결(workaround)하려면 패치를 사용해야 합니다.

2.1 APIServer 플래그

자세한 내용은 kube-apiserver의 참조 문서를 참조하십시오.

사용 예시:

apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
kubernetesVersion: v1.16.0
apiServer:
  extraArgs:
    anonymous-auth: "false"
    enable-admission-plugins: AlwaysPullImages,DefaultStorageClass
    audit-log-path: /home/johndoe/audit.log

2.2 ControllerManager 플래그

2.3 Scheduler 플래그

2.4 Etcd 플래그

3 패치로 커스터마이징

4 kubelet 커스터마이징

5 kube-proxy 커스터마이징

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}