RSS 쿠버네티스 블로그 Note

RSS 쿠버네티스 블로그

쿠버네티스의 공식 홈페이지, 컨테이너 오케스트레이션 시스템으로 컨테이너화된 애플리케이션의 배포, 크기 조정 및 관리를 자동화하는 데 사용됩니다. 클라우드 네이티브 컴퓨팅 재단에서 유지하는 프로젝트인 쿠버네티스에 대한 포괄적인 문서를 제공하는 플랫폼입니다. 상태가 없는 애플리케이션과 상태가 있는 애플리케이션, 배치 작업 및 CI/CD 워크플로우를 쿠버네티스를 사용하여 실행하는 방법에 대한 세부적인 정보를 포함합니다. 이 사이트에는 쿠버네티스를 시작하고 이를 통해 클라우드 기반 애플리케이션을 효율적으로 관리하는 데 필요한 기능을 최대한 활용하는 데 도움이 되는 자세한 가이드, 튜토리얼, 참조 자료, API 문서 및 커뮤니티 참여 이니셔티브가 포함되어 있습니다.

Thread Of Notes

쿠버네티스 대시보드에서 헤드램프로: 전환 이해하기

쿠버네티스 대시보드는 한때 쿠버네티스의 주요 시각적 인터페이스였으나, 현재는 보관 처리되었습니다. 이는 많은 사용자들에게 클러스터 가시성과 리소스 검사를 단순화하는 중요한 진입점 역할을 했습니다. Headlamp은 이제 대시보드의 기반 위에 구축하여 이러한 유산을 이어가고 있습니다. 현대적인 쿠버네티스 사용 패턴을 통합하면서 명확한 시각적 인터페이스를 제공합니다. Headlamp은 멀티 클러스터 가시성, 프로젝트를 통한 애플리케이션 중심 뷰, 플러그인을 통한 확장성을 제공합니다. 이 전환은 대시보드의 사용자 중심 유산을 존중하고 성장하는 UI 솔루션을 제공하는 것을 목표로 합니다. 쿠버네티스 대시보드의 많은 익숙한 워크플로우는 Headlamp에 유지되어 연속성과 사용 편의성을 보장합니다. Headlamp은 단일 인터페이스에서 멀티 클러스터 관리를 허용하여 분산 환경의 마찰을 줄임으로써 기능을 확장합니다. Headlamp 내의 프로젝트는 애플리케이션 중심 뷰를 제공하며, 관련 리소스를 그룹화하여 이해와 문제 해결을 개선합니다. 또한 GitOps 워크플로우를 위한 Flux 플러그인이나 안내를 위한 AI 어시스턴트와 같은 플러그인을 통해 플랫폼을 확장할 수 있습니다. Headlamp은 클러스터 내 도구 또는 데스크톱 애플리케이션으로 사용할 수 있는 유연한 배포 옵션을 제공합니다. 현재 대시보드 사용, 즉 클러스터, 네임스페이스 및 인증을 이해하는 것은 Headlamp으로의 원활한 전환에 도움이 됩니다.
CdXz5zHNQW_NGyZ88sXD3.png

과거의 화해: 수정되지 않은 Kubernetes CVE에 대한 기록 수정

Kubernetes는 더 나은 정확성을 위해 CVE 기록을 개선하여 투명성을 향상시키고 있습니다. 이전 CVE 기록에서 일부 고정 버전이 잘못 기재된 불일치를 발견했습니다. Kubernetes 보안 대응 위원회는 2026년 6월 1일에 이 기록을 수정할 예정입니다. 이로 인해 취약점 스캐너가 이전에 감지되지 않은 문제를 식별할 수 있습니다. 이 게시물은 수정되지 않은 세 가지 취약점인 CVE-2020-8561, CVE-2020-8562 및 CVE-2021-25740에 대한 기술적 세부 정보를 제공합니다. 업데이트는 올바른 취약점 스캔을 보장하고 지속적인 관리 완화 요구 사항을 명확히 합니다. 수정되지 않은 CVE-2020-8554도 표준화된 버전 번호 형식을 받게 됩니다. 식별된 취약점은 수정이 Kubernetes 핵심 기능을 방해할 수 있기 때문에 여전히 수정되지 않았습니다. 각 취약점에는 관리자가 클러스터를 보호하기 위해 구현해야 하는 특정 완화 조치가 있습니다. 이러한 조치는 취약점의 아키텍처 특성을 고려할 때 중요합니다. 프로젝트는 이러한 위험을 관리하기 위해 "구성으로 인한 보안" 접근 방식을 강조합니다. 이러한 기록을 업데이트하는 것은 투명성과 정확한 위험 평가를 촉진하는 성숙한 보안 생태계를 보여줍니다.

etcd 3.7.0-beta.0 발표

SIG-Etcd는 분산 데이터베이스의 중요한 업데이트인 etcd v3.7.0의 첫 번째 베타 버전을 출시했습니다. 이 버전은 대규모 결과 세트 처리를 개선하고 지연 시간 및 메모리 관리를 향상시키도록 설계된 기능인 RangeStream을 도입했습니다. 또한 레거시 구성 요소 및 인터페이스의 리팩토링 및 정리 작업을 포함하여 전반적인 성능을 향상시켰습니다. 개발자들은 사용자들이 베타 버전을 테스트하고 etcd 저장소에서 발견된 모든 문제를 보고하도록 권장합니다. 주요 특징은 etcd v2store의 마지막 흔적을 제거하여 v3store로의 전환을 완료한 것입니다. 이 전환은 특히 v3.6.11을 사용하지 않는 사용자에게 호환성이 깨지는 변경 사항을 초래할 수 있으므로, 발생하는 모든 문제에 대한 피드백을 요청합니다. 이 베타 릴리스에는 bbolt 및 raft 라이브러리 업데이트도 포함되어 있습니다. 또한, 릴리스 일정은 5월 이후 업데이트가 중단될 etcd v3.4의 지원 종료(EOL)와 연관되어 있습니다. 커뮤니티는 궁극적인 지원 중단 전에 필요한 경우 v3.4에 대한 추가 보안 패치를 릴리스할 준비가 되어 있습니다. 사용자들은 v3.4에서 업그레이드할 것을 강력히 권고합니다. 향후 베타 버전은 잠재적으로 추가적인 protobuf 리팩토링을 통해 릴리스 후보 버전과 6월 또는 7월 초의 최종 버전으로 이어질 예정입니다. GitHub 이슈, Kubernetes Slack 채널 및 etcd-dev 메일링 리스트를 통해 피드백을 적극적으로 수렴하고 있습니다.

쿠버네티스 v1.36: 클라우드 컨트롤러 매니저의 라우트 동기화에 대한 새로운 메트릭

이 기사는 원래 날짜가 잘못 기재되었으나, 이제 2026년 5월 15일 발행일로 반영됩니다. Kubernetes v1.36은 Cloud Controller Manager의 route controller를 위한 새로운 알파 메트릭인 `route_controller_route_sync_total`을 도입합니다. 이 메트릭은 클라우드 공급자와의 route sync 작업을 추적하여 `CloudControllerManagerWatchBasedRoutesReconciliation` 기능 게이트를 모니터링하는 데 도움을 줍니다. v1.35에서 도입된 이 기능은 route controller를 watch 기반 접근 방식으로 전환합니다. 이 변경으로 인해 노드가 변경될 때만 route를 조정하여 API 호출을 줄입니다. 새로운 기능을 테스트하려면 기능 게이트가 비활성화되었을 때와 활성화되었을 때의 메트릭 동작을 비교하십시오. 기능 게이트가 비활성화되면 카운터는 고정된 간격으로 증가합니다. 반대로, 기능이 활성화되면 카운터는 노드 변경 시에만 증가합니다. 이 차이는 노드 수정이 드문 안정적인 클러스터에서 가장 두드러집니다. 피드백은 Kubernetes Slack, GitHub 이슈 및 SIG Cloud Provider 커뮤니티 페이지를 통해 제공할 수 있습니다. 자세한 내용은 KEP-5237에서 확인할 수 있습니다.

쿠버네티스 v1.36: 혼합 버전 프록시, 베타로 승격

Mixed Version Proxy (MVP)는 알려지지 않은 리소스에 대한 요청을 최신 API 서버로 안전하게 라우팅하여 404 오류를 방지함으로써 Kubernetes 클러스터 업그레이드를 향상시킵니다. Kubernetes 1.28에서 Alpha 기능으로 처음 도입된 MVP는 이제 버전 1.36에서 Beta로 전환되며 기본적으로 활성화될 예정입니다. MVP는 업그레이드 중 API 서버 버전이 다른 문제점을 해결하며, 이 경우 새 리소스에 대한 요청이 이전 서버에서 실패할 수 있습니다. 잘못된 404 대신, 요청은 이를 처리할 수 있는 서버로 프록시됩니다. MVP의 Beta 버전은 피어 기능을 결정하기 위해 StorageVersion API 대신 집계된 디스커버리를 사용하여 기능을 개선합니다. 이 업데이트에는 피어 집계 디스커버리도 포함되어 클라이언트에게 사용 가능한 모든 API의 통합된 보기를 제공합니다. MVP를 활성화하려면 API 서버에 --peer-ca-file 플래그가 필요하며, 필요한 경우 --peer-advertise-ip 및 --peer-advertise-port도 함께 필요합니다. kubeadm을 사용하면 ClusterConfiguration 파일에 해당 플래그를 포함하여 프로세스를 간소화할 수 있습니다. 사용자는 스테이징 환경에서 MVP를 테스트하고 1.36 업그레이드의 일부로 SIG API Machinery에 피드백을 제공하도록 권장됩니다.

Kubernetes v1.36: Service ExternalIPs의 지원 중단 및 제거

Kubernetes 서비스의 `.spec.externalIPs` 필드는 원래 클라우드 외부 로드 밸런서 기능을 위해 설계되었으나, CVE-2020-8554에서 식별된 보안 취약점으로 인해 현재 사용 중단되었습니다. 이 필드는 서비스가 응답하는 추가 IP 주소를 지정할 수 있도록 하지만, 모든 사용자 간의 신뢰를 가정하기 때문에 내재된 보안 위험이 있습니다. Kubernetes 1.21에서는 이미 `.spec.externalIPs` 비활성화를 권장했으며, 이를 강제하기 위한 admission controller가 도입되었습니다. 대안으로는 수동으로 관리되는 LoadBalancer 서비스 또는 MetalLB와 같은 클라우드 외부 로드 밸런서 컨트롤러가 더 나은 보안과 제어를 제공합니다. MetalLB는 관리자가 IP 주소 할당을 제어할 수 있도록 하여 보안 문제를 완화합니다. Gateway API 또한 Gateway 리소스를 통해 관리자에게 IP에 대한 제어를 제공하는 안전한 솔루션을 제공합니다. Kubernetes 1.36에서는 `.spec.externalIPs`가 공식적으로 사용 중단되었으며, 사용에 대한 경고가 발급되기 시작했습니다. 향후 릴리스에서는 kube-proxy의 해당 기능 지원이 비활성화될 예정이며, 이후 버전에서는 완전히 제거될 계획입니다. 사용자들은 이 안전하지 않은 기능에서 마이그레이션하도록 권장됩니다.

쿠버네티스 v1.36: 워크로드 인식 스케줄링의 발전

Kubernetes v1.35는 Workload API와 동일한 Pod에 대한 기본적인 gang scheduling을 포함한 워크로드 인식 스케줄링 개선 사항을 도입했습니다. Kubernetes v1.36은 Workload API(정적 템플릿)를 새로운 PodGroup API(런타임 상태)와 분리하여 이 아키텍처를 개선합니다. 이 분리는 kube-scheduler를 간소화하여 향상된 성능을 위해 PodGroup 정보를 직접 읽을 수 있도록 합니다. 새로운 PodGroup 스케줄링 사이클은 워크로드의 원자적 처리를 허용하여 전체 그룹을 단일 작업으로 평가하여 교착 상태를 방지합니다. 유효한 배치 위치가 발견되고 그룹 제약 조건이 충족되면 Pod가 함께 바인딩됩니다. 그렇지 않으면 전체 그룹이 스케줄링할 수 없는 것으로 간주되고 나중에 다시 시도됩니다. 이는 엄격한 워크로드 요구 사항에 대한 올인원 배치를 보장하는 gang scheduling의 기반을 형성합니다. v1.36의 토폴로지 인식 스케줄링은 PodGroups에 토폴로지 제약 조건을 정의하여 특정 물리적 또는 논리적 도메인 내에 Pod를 공동 배치하여 네트워크 지연 시간을 줄일 수 있도록 합니다. 여기에는 스케줄링 제약 조건을 기반으로 후보 배치 위치를 생성, 평가 및 점수 매기기가 포함됩니다. 워크로드 인식 선점은 PodGroup 스케줄링 사이클을 지원하기 위해 도입되었으며, 전체 PodGroup을 위한 공간을 확보하기 위해 여러 노드에서 동시에 Pod를 선점합니다. PodGroup을 단일 선점 단위로 취급하며, PodGroup 우선순위 및 disruptionMode 필드가 선점 동작을 제어합니다. 마지막으로 v1.36은 동적 리소스 할당(DRA)을 Workload API와 통합하여 PodGroups가 ResourceClaims를 통해 특수 하드웨어 리소스를 요청하고 공유할 수 있도록 합니다. 이러한 발전은 향후 Kubernetes 릴리스에서 고급 워크로드 스케줄링 기능을 구축하기 위한 강력한 기반을 마련합니다.

쿠버네티스 v1.36: PSI 메트릭, 쿠버네티스에서 GA로 졸업

Pressure Stall Information (PSI)는 2018년부터 Linux 커널에 통합되어, 장애로 이어지기 전에 리소스 포화를 식별하기 위한 고충실도 신호를 제공합니다. 전통적인 사용률 지표와 달리, PSI는 CPU, 메모리, I/O 전반에 걸쳐 지연된 작업과 손실된 시간을 정량화합니다. Kubernetes v1.36에서는 노드, 파드, 컨테이너 수준에서 리소스 경합을 관찰하기 위한 안정적인 인터페이스가 제공됩니다. PSI는 일시적인 급증과 지속적인 리소스 긴장을 구분하기 위해 지연 시간의 누적 합계와 이동 평균(10초, 60초, 300초)을 제공합니다. SIG Node의 광범위한 성능 테스트는 고밀도 워크로드(80개 이상의 파드)에서 PSI의 프로덕션 준비 상태를 입증했습니다. Kubelet 오버헤드는 KubeletPSI 기능 게이트를 토글하여 측정되었으며, 리소스 사용에 미미한 영향을 미쳤습니다. Kubelet의 수집 로직은 가벼운 것으로 입증되었으며, 표준 하우스키핑 주기와 원활하게 통합되어 0.1 코어 미만 또는 전체 노드 용량의 2.5% 미만을 소비했습니다. 커널 오버헤드와 관련하여, Linux 커널에서 PSI를 활성화하면(psi=1 대 psi=0) 높은 부하에서 0.037 ~ 0.125 코어(노드 용량의 0.925% ~ 3.125%)의 일관된 차이가 발생했습니다. 주요 수집자인 kubelet 프로세스 또한 눈에 띄게 낮은 CPU 사용량을 유지했으며, 스파이크는 1초 이상 0.25 코어(6.25%)를 초과하지 않았습니다. v1.36의 개선 사항에는 더 스마트한 지표 방출이 포함됩니다. Kubelet은 이제 보고 전에 cgroup 구성을 통해 OS 수준 PSI 지원을 감지하여 오해의 소지가 있는 0 값 지표를 방지합니다. PSI를 사용하려면 노드는 Linux 커널 4.20 이상을 실행하고, cgroup v2를 사용하며, OS 수준에서 PSI가 활성화되어야 합니다(CONFIG_PSI=y, psi=0 부팅 매개변수 없음). PSI 지표는 v1.36에서 일반적으로 사용 가능하며 기능 게이트 옵트인이 필요하지 않습니다. 사용자는 /metrics/cadvisor 엔드포인트를 스크랩하거나 Summary API를 쿼리할 수 있습니다. PSI는 Linux 커널 기능이며 Windows 노드에서는 사용할 수 없습니다. 컨트롤 플레인의 API 서버를 통해 Kubelet의 HTTP API로 프록시하면 Summary API에서 실시간 압력 데이터를 얻을 수 있지만, 이는 권한이 필요한 작업입니다.
CdXz5zHNQW_xWB13lRlZh.png

Kubernetes v1.36: 볼륨 그룹 스냅샷을 GA로 이동

Kubernetes v1.36은 이전에 Alpha 및 Beta 기능이었던 볼륨 그룹 스냅샷의 General Availability(GA)를 도입합니다. 이 기능은 확장 API를 활용하여 여러 볼륨의 충돌 일관성 스냅샷을 동시에 가능하게 합니다. 시스템은 레이블 선택기를 사용하여 PersistentVolumeClaim 객체를 그룹화하여 워크로드를 일관된 복구 지점으로 복원할 수 있습니다. 이 기능은 CSI 볼륨 드라이버에 대해서만 지원되며, 쓰기 순서 일관성이 필요한 여러 볼륨을 활용하는 애플리케이션에 상당한 이점을 제공합니다. 이전에는 개별 볼륨 스냅샷이 다른 시간에 촬영될 경우, 특히 다중 볼륨 애플리케이션의 경우 불일치를 초래할 수 있었습니다. 그룹 스냅샷은 수동 애플리케이션 중단을 제거하여, 번거로운 순차적 개별 스냅샷 없이 그룹 내 모든 볼륨에 걸쳐 충돌 일관성을 제공합니다. Kubernetes는 세 가지 사용자 정의 API 종류인 VolumeGroupSnapshot, VolumeGroupSnapshotContent, VolumeGroupSnapshotClass를 통해 그룹 스냅샷을 관리합니다. GA 릴리스에서 v1로 승격된 이 CRD를 통해 사용자는 그룹 스냅샷을 요청하고, 프로비저닝된 리소스를 추적하며, 각각 생성 정책을 정의할 수 있습니다. GA 릴리스는 이전 베타 버전의 피드백을 기반으로 안정성 향상, 버그 수정 및 복원 크기 보고 개선을 제공합니다. 이 기능을 사용하려면 사용자는 그룹화할 PersistentVolumeClaim에 레이블을 지정한 다음, 이러한 레이블과 일치하는 선택기와 VolumeGroupSnapshotClass를 가진 VolumeGroupSnapshot 객체를 정의해야 합니다. 복원을 위해 새로운 PersistentVolumeClaim은 더 큰 VolumeGroupSnapshot의 일부인 개별 VolumeSnapshot 객체에서 생성됩니다. 스토리지 공급업체는 CSI 드라이버 내에서 새로운 그룹 컨트롤러 서비스 및 RPC를 구현하여 지원을 추가할 수 있습니다.

쿠버네티스 v1.36: 더 많은 드라이버, 새로운 기능, 그리고 DRA의 다음 시대

쿠버네티스 v1.36의 동적 리소스 할당(DRA)은 CPU 및 메모리와 같은 네이티브 리소스를 넘어 특수 하드웨어까지 기능을 확장하는 상당한 발전을 도입했습니다. 네트워킹을 포함한 다양한 하드웨어 유형에 대한 드라이버 지원이 확장되어 DRA가 보다 하드웨어에 구애받지 않는 솔루션이 되고 있습니다. 여러 핵심 기능이 졸업하여 스케줄링 유연성과 클러스터 활용도를 향상시켰습니다. 우선순위 목록 기능은 장치 요청에 대한 대체 기본 설정을 가능하게 하여 리소스 할당 효율성을 개선합니다. 확장된 리소스 지원은 기존 확장 리소스를 통한 리소스 요청을 가능하게 하여 DRA로의 점진적인 전환을 허용합니다. 분할 가능한 장치는 물리적 하드웨어를 더 작고 논리적인 인스턴스로 동적으로 분할하기 위한 네이티브 DRA 지원을 제공합니다. 장치 테인트는 관리자가 결함이 있는 장치의 할당을 방지하거나 특정 하드웨어를 예약함으로써 하드웨어를 보다 효과적으로 관리할 수 있도록 합니다. 장치 바인딩 조건은 외부 리소스가 완전히 준비될 때까지 Pod 커밋을 지연시켜 스케줄링 안정성을 향상시킵니다. 리소스 상태는 Pod 상태에 장치 상태 정보를 직접 노출하여 하드웨어 장애에 대한 신속한 식별 및 대응을 지원합니다. 새로운 알파 기능에는 PodGroups 전반의 공유 리소스를 관리하여 대규모 AI/ML을 최적화하는 워크로드를 위한 ResourceClaim 지원이 포함됩니다. 노드 할당 가능 리소스는 DRA 우산 아래 CPU 및 메모리 할당을 통합하여 세분화된 성능 조정을 가능하게 합니다. DRA 리소스 가용성 가시성은 관리자에게 실시간 장치 용량 정보를 제공하여 더 나은 계획을 지원합니다. 결정론적 장치 선택은 드라이버가 사전순 정렬을 통해 스케줄링에 영향을 미칠 수 있도록 합니다. 컨테이너의 검색 가능한 장치 메타데이터는 드라이버가 장치 속성을 컨테이너에 노출하기 위한 표준 프로토콜을 제공합니다. 향후 로드맵은 기존 기능의 성숙, 성능 및 확장성 향상, 워크로드 인식 및 토폴로지 인식 스케줄링과의 통합에 중점을 두고 있으며, 장치 플러그인에서 DRA로의 사용자 마이그레이션에 중점을 두고 있습니다.