기능 게이트 활성화 또는 비활성화하기
기능 게이트 활성화 또는 비활성화하기 (Enable Or Disable Feature Gates)
이 페이지는 클러스터에서 특정 쿠버네티스 기능을 제어하기 위해 기능 게이트(feature gates)를 활성화하거나 비활성화하는 방법을 보여 줘요. 기능 게이트를 활성화하면 일반 사용 가능(GA)이 되기 전에 Alpha 또는 Beta 기능을 테스트하고 사용할 수 있어요.
출처: 문서
본문
참고:
시작하기 전에
쿠버네티스 클러스터가 필요하고, kubectl 명령줄 도구가 클러스터와 통신하도록 설정돼 있어야 해요. 이 튜토리얼은 제어 플레인 호스트 역할을 하지 않는 노드가 최소 두 개 있는 클러스터에서 실행하는 것을 권장해요. 아직 클러스터가 없다면 minikube를 사용하거나 다음 쿠버네티스 플레이그라운드 중 하나를 사용해 만들 수 있어요.
- iximiuz Labs
- Killercoda
- KodeKloud
다음도 필요해요.
- 클러스터에 대한 관리자 접근 권한
- 활성화하려는 기능 게이트에 대한 지식(기능 게이트 참조 문서 참고)
참고:
기능 게이트 성숙도 이해하기
기능 게이트를 활성화하기 전에 기능의 성숙도 수준을 위해 기능 게이트 참조 문서를 확인하세요.
- Alpha: 기본적으로 비활성화, 버그가 있을 수 있음. 테스트 클러스터에서만 사용.
- Beta: 보통 기본적으로 활성화, 잘 테스트됨.
- GA: 항상 기본적으로 활성화. GA 후 한 릴리스 동안 비활성화될 수 있음.
어떤 구성 요소가 기능 게이트를 필요로 하는지 확인하기
서로 다른 기능 게이트는 서로 다른 쿠버네티스 구성 요소에 영향을 줘요.
- 일부 기능은 여러 구성 요소(예: API 서버와 컨트롤러 매니저)에서 게이트를 활성화해야 해요.
- 다른 기능은 단일 구성 요소(예: kubelet만)에서만 게이트가 필요해요.
기능 게이트 참조 문서는 보통 각 게이트가 영향을 받는 구성 요소를 나타내요. 모든 쿠버네티스 구성 요소는 같은 기능 게이트 정의를 공유하므로 모든 게이트가 help 출력에 나타나지만, 관련 게이트만 각 구성 요소의 동작에 영향을 줘요.
구성 (Configuration)
클러스터 초기화 중
관련 구성 요소 전반에 걸쳐 기능 게이트를 활성화하는 구성 파일을 만들어요.
apiVersion: kubeadm.k8s.io/v1beta4
kind: ClusterConfiguration
apiServer:
extraArgs:
feature-gates: "FeatureName=true"
controllerManager:
extraArgs:
feature-gates: "FeatureName=true"
scheduler:
extraArgs:
feature-gates: "FeatureName=true"
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
featureGates:
FeatureName: true
클러스터를 초기화해요.
kubeadm init --config kubeadm-config.yaml
기존 클러스터에서
kubeadm 클러스터의 경우 기능 게이트 구성은 매니페스트 파일, 구성 파일, kubeadm 구성 등 여러 위치에서 설정할 수 있어요.
/etc/kubernetes/manifests/의 제어 플레인 구성 요소 매니페스트를 편집하세요.
kube-apiserver, kube-controller-manager 또는 kube-scheduler의 경우 command에 플래그를 추가해요.
spec:
containers:
- command:
- kube-apiserver
- --feature-gates=FeatureName=true
# ... other flags
파일을 저장하세요. 파드가 자동으로 재시작돼요.
kubelet의 경우 /var/lib/kubelet/config.yaml을 편집하세요.
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
featureGates:
FeatureName: true
kubelet을 재시작하세요.
sudo systemctl restart kubelet
kube-proxy의 경우 ConfigMap을 편집하세요.
kubectl -n kube-system edit configmap kube-proxy
구성에 기능 게이트를 추가하세요.
featureGates:
FeatureName: true
DaemonSet을 재시작하세요.
kubectl -n kube-system rollout restart daemonset kube-proxy
여러 기능 게이트 구성하기
명령줄 플래그에는 쉼표로 구분된 목록을 사용하세요.
--feature-gates=FeatureA=true,FeatureB=false,FeatureC=true
구성 파일을 지원하는 구성 요소(kubelet, kube-proxy)의 경우:
featureGates:
FeatureA: true
FeatureB: false
FeatureC: true
참고:
기능 게이트 구성 확인하기
구성 후 기능 게이트가 활성화되었는지 확인하세요. 다음 방법은 제어 플레인 구성 요소가 정적 파드로 실행되는 kubeadm 클러스터에 적용돼요.
제어 플레인 구성 요소 매니페스트 확인
정적 파드 매니페스트에 구성된 기능 게이트를 확인해요.
kubectl -n kube-system get pod kube-apiserver-<node-name> -o yaml | grep feature-gates
kubelet 구성 확인
kubelet의 configz 엔드포인트를 사용하세요.
kubectl proxy --port=8001 &
curl -sSL "http://localhost:8001/api/v1/nodes/<node-name>/proxy/configz" | grep featureGates -A 5
또는 노드에서 구성 파일을 직접 확인하세요.
cat /var/lib/kubelet/config.yaml | grep -A 10 featureGates
메트릭 엔드포인트로 확인
기능 게이트 상태는 쿠버네티스 구성 요소가 Prometheus 스타일 메트릭으로 노출해요(쿠버네티스 1.26+에서 사용 가능). 메트릭 엔드포인트를 쿼리해 어떤 기능 게이트가 활성화됐는지 확인하세요.
kubectl get --raw /metrics | grep kubernetes_feature_enabled
특정 기능 게이트를 확인하려면:
kubectl get --raw /metrics | grep kubernetes_feature_enabled | grep FeatureName
메트릭은 활성화된 게이트에 1, 비활성화된 게이트에 0을 보여 줘요.
참고:
/flagz 엔드포인트로 확인
구성 요소의 디버깅 엔드포인트에 접근할 수 있고, 그 구성 요소에 ComponentFlagz 기능 게이트가 활성화되어 있다면 /flagz 엔드포인트를 방문해 구성 요소를 시작하는 데 사용된 명령줄 플래그를 검사할 수 있어요. 명령줄 플래그로 구성된 기능 게이트가 이 출력에 나타나요.
/flagz 엔드포인트는 쿠버네티스 z-pages의 일부로, 핵심 구성 요소에 대한 사람이 읽을 수 있는 런타임 디버깅 정보를 제공해요.
자세한 내용은 z-pages 문서를 참고하세요.
구성 요소별 요구 사항 이해하기
구성 요소별 기능 게이트의 몇 가지 예시:
- API 서버 중심: StructuredAuthenticationConfiguration 같은 기능은 주로 kube-apiserver에 영향을 줘요.
- kubelet 중심: GracefulNodeShutdown 같은 기능은 주로 kubelet에 영향을 줘요.
- 여러 구성 요소: 일부 기능은 구성 요소 간 조정을 필요로 해요.
주의:
항상 비프로덕션 환경에서 기능 게이트를 먼저 테스트하세요. Alpha 기능은 예고 없이 제거될 수 있어요.
더 알아보기 (Learn more)
- 기능 게이트 참조
- 기능 단계에 대해 배워 보세요.
- kubeadm 구성을 검토하세요.