1.36 버전 정보 및 업데이트 조치
IBM Cloud® Kubernetes Service 의 버전 1.36 에 대한 정보를 확인해 보세요. Kubernetes 프로젝트 버전 1.36 에 대한 자세한 내용은 Kubernetes 변경 내역을 참조하십시오.
IBM Cloud Kubernetes Service CNCF Kubernetes 소프트웨어 적합성 인증 프로그램에 따라, 버전 1.36 용 인증된 Kubernetes 제품입니다. Kubernetes®는 미국 및 기타 국가에서 사용되는 Linux Foundation의 등록상표이며, Linux Foundation의 라이센스에 의거하여 사용됩니다.
릴리스 타임라인
다음 표에는 IBM Cloud® Kubernetes Service 의 버전 1.36 에 대한 예상 출시 일정이 포함되어 있습니다. 계획 수립 용도로 이 정보를 사용할 수 있습니다(예: 버전 지원이 중단되는 일반 시간 예측).
단검으로 표시된 날짜(†)는 잠정적이며 변경될 수 있습니다.
| 버전 | 지원 여부 | 릴리스 날짜 | 지원되지 않는 날짜 |
|---|---|---|---|
| 1.36 | 예 | 2026년 6월 26일 | 2027년 8월 1일 † |
업데이트 준비
클러스터를 업데이트할 때 배포된 앱에 영향을 미칠 수 있는 변경 사항의 전체 목록을 확인하려면, 커뮤니티의 Kubernetes 변경 로그와 1.36 버전에 대한 IBM 버전 변경 로그를 참조하십시오. 또한 ‘ Kubernetes ’에 수록된 유용한 경고 사항들을 확인해 보실 수도 있습니다.
- Kubernetes 포트 443을 통해 제공되는 API 서버 및 Konnectivity 터널
-
Kubernetes API 서버와 Konnectivity 터널은 이제 동적으로 할당된 노드 포트(예:
20000–32767범위의 포트) 대신 표준 HTTPS 포트 443을 통해 제공됩니다. 호스트명 기반 라우팅을 통해 트래픽이 올바른 백엔드 서비스로 전달되므로, 모든 서비스가 443번 포트를 공유하고 있음에도 불구하고 각 함수마다 전용 호스트명이 할당되어 있습니다. 이번 변경 사항으로 인해, 더 이상 방화벽이나 아웃바운드 제어 기능을 통해 비표준 포트를 허용할 필요가 없게 되어, 제한적인 네트워크 환경에서도 클러스터에 더 쉽게 연결할 수 있게 되었습니다. 클러스터는 사설 및 공용 서비스 엔드포인트를 통해 두 개의 전용 호스트명을 노출합니다:<cluster>.api.<region-domain>— Kubernetes API 서버 엔드포인트<cluster>.tunnel.<region-domain>— 제어 플레인과 워커 노드 간의 통신에 사용되는 Konnectivity 터널 엔드포인트
이 기능은 IKS 버전 1.36 부터 다음 리전에서 사용할 수 있습니다: 몬트리올(
ca-mon), 첸나이(in-che), 뭄바이(in-mum). 추가 리전에 대한 지원은 곧 제공될 예정입니다.공개 서비스 엔드포인트를 사용하는 클러스터를 업데이트한 경우, 여전히 공개 서비스 엔드포인트 URL 를 참조하는 kubeconfig는 기존 포트를 계속 사용하게 되며, 이로 인해
kubectl명령어가 연결 시간 초과 오류로 실패하게 됩니다. 이를 방지하려면,ibmcloud ks cluster config명령을 실행하여 새로운 kubeconfig 파일을 다운로드하거나, 기존 kubeconfig 파일에서 포트를 443으로 수동으로 업데이트하십시오.- 새로운 클러스터: 별도의 조치가 필요하지 않습니다. 새로운 클러스터는 포트 443 엔드포인트로 생성되며, 다운로드한 kubeconfig 파일은 이미 포트 443을 사용하고 있습니다.
- 비공개 서비스 엔드포인트만 사용하는 업데이트된 클러스터: 당장 취해야 할 조치는 없습니다. 이전 NodePort 을 대상으로 하는 기존 연결은 업그레이드 후에도 계속 작동합니다. 다운로드한 새로운 kubeconfig는 443번 포트의 엔드포인트를 사용합니다.
- 사용자 지정 네트워크 규칙: 기존에 높은 번호의 제어 플레인 포트를 명시적으로 참조하는 방화벽, 보안 그룹 또는 아웃바운드 허용 목록 규칙을 모두 업데이트하여, 대신 포트 443을 통해 HTTPS 로의 아웃바운드 트래픽이 허용되도록 하십시오. 이전 고번호 포트를 고정했던 규칙은 모두 제거할 수 있습니다.
- IP 기반 허용 목록: 이제 퍼블릭 서비스 엔드포인트의 DNS 레코드는 기존의 부하 분산기(NLB) IP 주소 대신 Akamai IP Protect(IPP) 프론트엔드 IP 주소로 해결됩니다. 방화벽 또는 아웃바운드 규칙에서 대상 IP 주소를 기준으로 클러스터로의 트래픽을 허용하고 있는 경우, 해당 규칙을 업데이트하여 현재 Akamai IPP IP 범위값을 사용하도록 설정하십시오.
- Kubernetes API 서버에 대한 익명 접속이 이제 제한됩니다
-
Kubernetes API 서버에 대한 익명 액세스는 이제 상태 확인 엔드포인트(
/healthz,/readyz,/livez,/livez/ping)로만 제한됩니다. 그 외의 모든 엔드포인트(예:/version)는 인증이 필요합니다. 이를 통해system:anonymous또는system:unauthenticated에 권한을 부여하는 RBAC 설정 오류로 인한 보안 노출 위험을 줄일 수 있습니다. - Kubernetes 대시보드는 더 이상 사용되지 않습니다
-
오픈 소스 ‘ Kubernetes ’ 대시보드는 더 이상 지원되지 않으며 아카이브로 이동되었습니다. 1.36 으로 업그레이드하면, 새로 프로비저닝된 클러스터에는 더 이상 ‘ Kubernetes ’ 대시보드가 설치되지 않으며, 이전 버전을 사용 중인 클러스터에서도 해당 대시보드가 제거됩니다. 헤드램프 애드온은 ‘ Kubernetes ’ UI를 대체하는 형태로 제공됩니다.
- NVIDIA GPU 드라이버가 더 이상 자동으로 설치되지 않습니다
-
Kubernetes 버전 1.36 부터, IBM Cloud Kubernetes Service 는 더 이상 GPU 워커 노드에 NVIDIA GPU 드라이버를 자동으로 설치하지 않습니다. GPU 워크로드를 실행하려면 GPU 드라이버를 직접 설치하고 관리해야 합니다. 자세한 내용은 ‘자체 관리형 GPU 드라이버로 마이그레이션’을 참조하십시오.
클러스터 오토스케일러는 아직 버전 1.36 을 지원하지 않습니다. 오토스케일러가 설치된 경우 클러스터를 1.36 버전으로 업데이트하지 마십시오.
마스터 이전 업데이트
Kubernetes 마스터를 업데이트하기 전에 반드시 수행해야 하는 다음 변경 사항을 확인하십시오.
| 유형 | 설명 |
|---|---|
| 제거됨: 소스 트리 내의 Portworx 볼륨 플러그인 | Kubernetes ( 1.36 )에서 기본 제공되는 ‘ Portworx ’ 볼륨 플러그인이 제거되어, Portworx CSI 드라이버로의 마이그레이션이 완료되었습니다. CSIMigrationPortworx 기능 게이트( 1.33 부터 GA 및 잠금 상태)와 알파 InTreePluginPortworxUnregister 기능 게이트도 제거되었으며, 트리 내의 모든 Portworx
볼륨 작업은 CSI로 리디렉션됩니다. 업데이트하기 전에, ‘ Portworx ’ CSI 드라이버가 설치되어 있는지, 그리고 ‘ StorageClass ’, ‘ PersistentVolume ’, ‘ PersistentVolumeClaim ’ 리소스가 해당 CSI 드라이버를 참조하고 있는지 확인하십시오. 업데이트 후에도 여전히 in-tree 플러그인에 의존하는 클러스터는 Portworx 볼륨에 더 이상 액세스할 수 없게 됩니다. |
| 변경 사항: IP 및 CIDR 검증 기준 강화 | API 서버에서는 ‘ StrictIPCIDRValidation ’ 기능 게이트가 기본적으로 활성화되어 있습니다. IP 또는 CIDR 값을 포함하는 API 필드는 더 이상 앞부분에 불필요한 0이 붙은 주소(예: 10.0.0.5 대신 010.000.000.005 )나 호스트 비트가 모호한 CIDR 값(예: 192.168.0.0/24 또는 192.168.0.5/32 대신 192.168.0.5/24 )을 허용하지 않습니다. Service, NetworkPolicy, EndpointSlice 와 같은 리소스에 대한 매니페스트와 툴링을 점검하고, 업데이트하기 전에 비표준 IP 또는 CIDR 값이 있다면 수정하십시오. 마스터가 업데이트된
후에는 유효하지 않은 값을 사용하여 객체를 생성하거나 업데이트하려는 요청은 거부됩니다. |
| 변경 사항: 컨트롤 플레인 메트릭의 이름 변경 | volume_operation_total_errors 메트릭(kube-controller-manager)의 이름이 volume_operation_errors_total 로 변경되었으며, etcd_bookmark_counts 메트릭의 이름이 etcd_bookmark_total 로 변경되었습니다. 이전 메트릭 이름을 참조하는
사용자 지정 모니터링 대시보드나 알림 규칙을 사용하는 경우, 제어 플레인이 업데이트된 후에도 모니터링이 정상적으로 작동할 수 있도록 해당 항목을 새로운 이름으로 업데이트하십시오. |
제거됨: git-repo 볼륨 플러그인 |
git-repo 볼륨 플러그인은 기본적으로 비활성화되어 있으며, 이를 다시 활성화할 수 있는 옵션이 없습니다. 또한 ‘ GitRepoVolumeDriver ’ 기능 게이트는 더 이상 아무런 효과도 미치지 않습니다. 이 볼륨 유형은 1.33 버전부터 IBM Cloud Kubernetes Service 에서 더 이상 지원되지 않습니다. 아직도 gitRepo 볼륨을 사용하는 워크로드가 있다면, git 를 사용하여 리포지토리를 복제하는 init 컨테이너로 채워진 emptyDir 볼륨으로 해당 워크로드를 마이그레이션하십시오. 자세한 내용은 ‘ gitRepo 볼륨 드라이버의 트리 내 제거’를 참조하십시오. |
마스터 이후 업데이트
Kubernetes 마스터를 업데이트한 후 반드시 수행해야 하는 다음 변경 사항을 확인하십시오.
| 유형 | 설명 |
|---|---|
사용 중단됨: 서비스 .spec.externalIPs |
Service 리소스의 .spec.externalIPs 필드는 더 이상 사용되지 않으며, 이제 이 필드가 설정되면 API 서버에서 사용 중단 경고를 반환합니다. externalIPs 사용을 중단하고, 대신 LoadBalancer 서비스나 Ingress를 통해 외부 트래픽을 라우팅할 계획을 세우십시오.
자세한 내용은 ‘외부 IP’를 참조하십시오. |
변경 사항: 기본 ‘ kubectl debug ’ 프로필 |
kubectl debug 의 기본 프로필이 legacy 에서 general 로 변경됩니다. legacy 프로필의 동작에 의존하는 스크립트나 런북이 있는 경우, --profile=legacy 을 명시적으로 전달하십시오. legacy 프로필은 Kubernetes 1.39 에서 제거될
예정입니다. 자세한 내용은 ‘실행 중인 Pod 디버깅’을 참조하십시오. |
변경 사항: client-go 인포머 이벤트 순서 (AtomicFIFO) |
client-go의 AtomicFIFO 기능 게이트는 기본적으로 활성화되어 있습니다. 이제 인포머 스토어는 항목별 OnAdd, OnUpdate 및 OnDelete 핸들러가 호출되기 전에 일관된 리소스 버전으로 완전히 업데이트되며, 인포머 재동기화 처리 방식이 약간 변경되어 핸들러 호출 시점에 눈에 띄는 차이가 발생할 수 있습니다.
client-go를 내장한 사용자 정의 컨트롤러와 연산자를 테스트합니다. 성능 저하 현상이 관찰될 경우, 해당 문제를 해결하는 동안 사용자 정의 컨트롤러 바이너리에서 ‘ AtomicFIFO ’ 클라이언트-고(client-go) 기능 게이트를 일시적으로 ‘ false ’로 설정할 수 있습니다. |
| 변경 사항: CustomResourceDefinition 의 숫자 유효성 검사 기준 강화 | CustomResourceDefinition (CRD) 유효성 검사에서는 이제 스키마에 설정된 경우 int32, int64, float 및 double 숫자 형식의 범위를 엄격하게 적용합니다. 이미 허용 범위를 벗어난 값을 가지고 있는 기존 객체는 유효성 검사 단계적 적용을 통해 유지되지만, 새로 추가되거나 업데이트된 값은
허용 범위 내에 있어야 합니다. 이러한 숫자 형식을 사용하는 사용자 정의 리소스를 검토하십시오. |
| 사용 중단됨: Credential 플러그인의 허용 목록 필드 | 클라이언트 자격 증명 플러그인의 허용 목록에서 ‘ AllowlistEntry.Name ’ 필드의 이름이 ‘ AllowlistEntry.Command ’로 변경되었습니다. 자격 증명 플러그인 허용 목록을 구성한 경우(예: kuberc 를 통해), 새로운 필드 이름을 사용하도록 구성을 업데이트하십시오. |
사용 중단됨: 다음 항목에 대한 직접 액세스 metav1.FieldsV1.Raw |
metav1.FieldsV1 의 Raw 필드에 대한 직접 액세스는 더 이상 권장되지 않습니다. FieldsV1 를 생성하거나 읽는 코드(예: 관리되는 필드를 검사하는 컨트롤러나 도구)는 새로운 NewFieldsV1(string), GetRawBytes(), GetRawString() 및 SetRawBytes() 액세스 메서드로 마이그레이션해야 합니다. |
| 필요한 조치: 사용자 정의 스케줄러 PreBind 플러그인 | 스케줄러 프레임워크는 이제 ‘ PreBind ’ 플러그인을 병렬로 실행할 수 있도록 지원합니다. 사용자 정의 스케줄러 플러그인을 관리하고 있다면, PreBindPreFlight 메서드에서 PreBindPreFlightResult 를 반환하도록 플러그인을 업데이트하십시오. nil 를 반환하면 기존의
순차적 동작이 유지되며, 플러그인은 AllowParallel: true``를 반환함으로써 병렬 실행을 선택하게 됩니다. 이 작업은 사용자 정의 스케줄러 플러그인을 실행하는 클러스터에만 적용됩니다. |
| 필요한 조치: DRA 드라이버에 대한 세분화된 RBAC | DRAResourceClaimGranularStatusAuthorization 기능 게이트가 활성화되면( 1.36 에서 베타 버전), 동적 리소스 할당(DRA) 드라이버 및 컨트롤러는 ResourceClaim 상태를 업데이트하기 위해 세분화된 RBAC 권한이 필요합니다. 스케줄러와 컨트롤러에는 resourceclaims/binding 에 있는 update 또는 patch 가 필요하며, DRA 드라이버에는 resourceclaims/driver 에 있는 associated-node:update 또는 arbitrary-node:update 가 필요합니다. 이는 각 드라이버의 특정 resourceNames 에 따라 제한됩니다. DRA 드라이버를 실행 중인
경우, 해당 드라이버의 RBAC을 업데이트하십시오. 이 작업은 DRA를 사용하는 클러스터에만 적용됩니다. |