API 개요
OpenShift 컨테이너 플랫폼 API에 대한 개요 콘텐츠
초록
1장. API 계층 이해 링크 복사링크가 클립보드에 복사되었습니다!
이 지침은 계층화된 OpenShift 컨테이너 플랫폼 제공에 적용되지 않습니다.
베어 메탈 구성에 대한 API 계층은 하드웨어와 직접 상호 작용하는 기능을 제외하고 가상화된 구성에도 적용됩니다. 하드웨어와 직접 관련된 이러한 기능에는 하드웨어 공급업체가 제공하는 것 이상의 AOE(애플리케이션 운영 환경) 호환성 수준이 없습니다. 예를 들어, GPU(그래픽 처리 장치) 기능에 의존하는 애플리케이션은 GPU 공급업체 드라이버가 제공하는 AOE 호환성을 따릅니다.
클라우드 특정 통합 지점을 위한 클라우드 환경의 API 계층에는 호스팅 클라우드 공급업체가 제공하는 수준을 넘어서는 API 또는 AOE 호환성 수준이 없습니다. 예를 들어, 컴퓨팅, 수신 또는 스토리지를 동적으로 관리하는 API는 클라우드 플랫폼에서 제공하는 기본 API 기능에 따라 달라집니다. 클라우드 공급업체가 필수 API를 수정하는 경우 Red Hat은 클라우드 인프라 공급업체가 현재 제공하는 기능으로 API에 대한 지원을 유지하기 위해 상업적으로 합리적인 노력을 기울일 것입니다.
Red Hat에서는 애플리케이션 개발자가 종속된 모든 동작이 공식 API 문서에 명시적으로 정의되어 있는지 확인하여 특정 API 구현에 대한 지정되지 않은 동작이나 버그에 대한 종속성이 발생하는 것을 방지하도록 요청합니다. 예를 들어, 애플리케이션이 문서화되지 않은 API를 사용하거나 정의되지 않은 동작에 의존하는 경우, 인그레스 라우터의 새 릴리스가 이전 릴리스와 호환되지 않을 수 있습니다.
1.1. API 계층 링크 복사링크가 클립보드에 복사되었습니다!
상업적으로 지원되는 모든 API, 구성 요소 및 기능은 다음 지원 수준 중 하나에 연결됩니다.
1.1.1. API 티어 1 링크 복사링크가 클립보드에 복사되었습니다!
API와 애플리케이션 운영 환경(AOE)은 주요 릴리스 내에서 안정적입니다. 주요 릴리스에서 더 이상 사용되지 않을 수 있지만, 후속 주요 릴리스가 나올 때까지 제거되지는 않습니다.
1.1.2. API 티어 2 링크 복사링크가 클립보드에 복사되었습니다!
API와 AOE는 주요 릴리스 내에서 사용 중단 발표일로부터 최소 9개월 또는 3개의 마이너 릴리스 기간 동안 안정적으로 유지됩니다.
1.1.3. API 티어 3 링크 복사링크가 클립보드에 복사되었습니다!
이 수준은 Operator Hub를 통해 OpenShift Container Platform에 포함된 언어, 도구, 애플리케이션 및 선택적 운영자에 적용됩니다. 각 구성 요소는 API와 AOE가 지원되는 수명을 지정합니다. 언어 런타임별 구성 요소의 최신 버전은 가능한 한 마이너 버전 간에 API 및 AOE 호환성을 유지하려고 노력합니다. 그러나 하위 버전 간의 호환성은 보장되지 않습니다.
Operator Hub를 통해 지속적인 업데이트를 받는 구성 요소와 개발자 도구(Operator 및 Operand라고 함)는 API 계층 3으로 간주되어야 합니다. 개발자는 주의를 기울여야 하며, 각 사소한 릴리스마다 이러한 구성 요소가 어떻게 변경될 수 있는지 이해해야 합니다. 사용자는 해당 구성 요소에 문서화된 호환성 지침을 참조하는 것이 좋습니다.
1.1.4. API 티어 4 링크 복사링크가 클립보드에 복사되었습니다!
호환성이 제공되지 않습니다. API와 AOE는 언제든지 변경될 수 있습니다. 이러한 기능은 장기 지원이 필요한 애플리케이션에서는 사용하면 안 됩니다.
Operator는 작업을 수행하기 위해 내부적으로 CRD(사용자 정의 리소스 정의)를 사용하는 것이 일반적입니다. 이러한 객체는 운영자 외부의 행위자가 사용하도록 의도된 것이 아니며 숨겨져 있어야 합니다. CRD가 운영자 외부의 행위자가 사용하도록 의도되지 않은 경우, 운영자 ClusterServiceVersion (CSV)의 operators.operatorframework.io/internal-objects 주석을 지정하여 해당 리소스가 내부적으로만 사용되며 CRD에 명시적으로 4계층이라는 레이블을 지정할 수 있음을 알려야 합니다.
1.2. API 계층을 API 그룹에 매핑 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat이 정의한 각 API 계층에 대해 업스트림 커뮤니티가 상위 호환성을 유지하기 위해 노력하는 특정 API 그룹에 대한 매핑 테이블을 제공합니다. 명시적인 호환성 수준을 지정하지 않고 아래에서 구체적으로 설명하지 않는 모든 API 그룹에는 기본적으로 API 계층 3이 할당됩니다. 단, v1alpha1 API의 경우 기본적으로 계층 4가 할당됩니다.
1.2.1. Kubernetes API 그룹 지원 링크 복사링크가 클립보드에 복사되었습니다!
접미사 *.k8s.io 로 끝나거나 접미사 없이 version.<name> 형식을 갖는 API 그룹은 Kubernetes 사용 중단 정책에 따라 관리되며, 달리 지정되지 않는 한 공개된 API 버전과 해당 지원 계층 간의 일반적인 매핑을 따릅니다.
| API 버전 예시 | API 계층 |
|---|---|
|
| 계층 1 |
|
| 계층 2 |
|
| 계층 2 |
1.2.2. OpenShift API 그룹 지원 링크 복사링크가 클립보드에 복사되었습니다!
*.openshift.io 접미사로 끝나는 API 그룹은 OpenShift Container Platform 지원 중단 정책에 따라 관리되며, 달리 지정하지 않는 한 공개된 API 버전과 해당 호환성 수준 간의 일반적인 매핑을 따릅니다.
| API 버전 예시 | API 계층 |
|---|---|
|
| 계층 1 |
|
| 1계층, 일부 1계층은 더 이상 사용되지 않음 |
|
| 1계층, 일부 1계층은 더 이상 사용되지 않음 |
|
| 계층 1 |
|
| 계층 1 |
|
| 계층 1 |
|
| 계층 1 |
|
| 계층 1 |
|
| 계층 1 |
|
| 계층 1 |
|
| 계층 1 |
|
| 계층 1 |
|
| 계층 1 |
|
|
|
|
| 계층 1 |
|
| 계층 2 |
1.2.3. 모니터링 API 그룹 지원 링크 복사링크가 클립보드에 복사되었습니다!
monitoring.coreos.com 접미사로 끝나는 API 그룹은 다음과 같은 매핑을 갖습니다.
| API 버전 예시 | API 계층 |
|---|---|
|
| 계층 1 |
|
| 계층 1 |
|
| 계층 1 |
1.2.4. Operator Lifecycle Manager API 그룹 지원 링크 복사링크가 클립보드에 복사되었습니다!
Operator Lifecycle Manager(OLM)는 operators.coreos.com 접미사가 붙은 API 그룹을 포함하는 API를 제공합니다. 이러한 API에는 다음과 같은 매핑이 있습니다.
| API 버전 예시 | API 계층 |
|---|---|
|
| 계층 1 |
|
| 계층 1 |
|
| 계층 1 |
1.3. API 지원 중단 정책 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift Container Platform은 다양한 상류 커뮤니티에서 공급된 많은 구성 요소로 구성됩니다. 구성 요소 세트, 관련 API 인터페이스 및 관련 기능은 시간이 지남에 따라 발전할 것으로 예상되며 해당 기능을 제거하기 위해 공식적인 사용 중단이 필요할 수도 있습니다.
1.3.1. API의 일부 사용 중단 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift Container Platform은 여러 구성 요소가 일련의 구조화된 API를 통해 클러스터 제어 평면에서 관리되는 공유 상태와 상호 작용하는 분산 시스템입니다. Kubernetes 규칙에 따라 OpenShift Container Platform에서 제공하는 각 API는 그룹 식별자와 연결되며 각 API 그룹은 독립적으로 버전이 지정됩니다. 각 API 그룹은 Kubernetes, Metal3, Multus, Operator Framework, Open Cluster Management, OpenShift 자체 등을 포함한 별도의 업스트림 커뮤니티에서 관리됩니다.
각 상류 커뮤니티가 해당 API 그룹 및 버전에 대해 고유한 사용 중단 정책을 정의할 수 있는 반면, Red Hat은 최종 사용자의 사용과 지원을 단순화하기 위해 각 상류 커뮤니티에 대한 통합과 인지를 바탕으로 커뮤니티별 정책을 이전에 정의된 호환성 수준 중 하나로 정규화합니다.
API의 사용 중단 정책과 일정은 호환성 수준에 따라 다릅니다.
중단 정책은 다음을 포함한 API의 모든 요소에 적용됩니다.
- REST 리소스는 API 객체라고도 합니다.
- REST 리소스 필드
- 버전별 한정자를 제외한 REST 리소스에 대한 주석
- 열거형 또는 상수 값
각 그룹의 최신 API 버전 외에 이전 API 버전은 발표된 지원 중단 후 최소 다음 기간 동안 지원되어야 합니다.
| API 계층 | duration |
|---|---|
| 계층 1 | 주요 릴리스 내에서 안정적입니다. 주요 릴리스에서 더 이상 사용되지 않을 수 있지만, 후속 주요 릴리스가 나올 때까지 제거되지는 않습니다. |
| 계층 2 | 지원 중단 발표 후 9개월 또는 3회 출시 후 중 더 긴 기간이 적용됩니다. |
| 계층 2 | 구성 요소별 일정을 확인하세요. |
| 계층 2 | 없음. 호환성이 보장되지 않습니다. |
다음 규칙은 모든 계층 1 API에 적용됩니다.
- API 요소는 그룹의 버전을 높여서만 제거할 수 있습니다.
- 일부 버전에 존재하지 않는 전체 REST 리소스를 제외하고 API 객체는 정보 손실 없이 API 버전 간에 왕복이 가능해야 합니다. 버전 간에 동등한 필드가 없는 경우 변환 중에 데이터가 주석 형태로 보존됩니다.
- 특정 그룹의 API 버전은 최소한 안정적인 새로운 API 버전이 출시될 때까지 사용 중단될 수 없습니다. 단, 전체 API 개체가 제거되는 경우는 예외입니다.
1.3.2. CLI 요소 사용 중단 링크 복사링크가 클립보드에 복사되었습니다!
클라이언트 중심 CLI 명령은 API와 동일한 방식으로 버전이 관리되지 않지만, 사용자 중심 구성 요소 시스템입니다. 사용자가 CLI와 상호 작용하는 두 가지 주요 방법은 명령이나 플래그를 통한 것인데, 이 맥락에서 이를 CLI 요소라고 합니다.
달리 명시되지 않은 경우나 CLI가 하위 계층 API에 의존하는 경우를 제외하고 모든 CLI 요소는 기본적으로 API 계층 1로 설정됩니다.
| 요소 | API 계층 | |
|---|---|---|
| 일반적으로 사용 가능(GA) | 플래그 및 명령 | 계층 1 |
| 기술 프리뷰 | 플래그 및 명령 | 계층 2 |
| 개발자 프리뷰 | 플래그 및 명령 | 계층 2 |
1.3.3. 전체 구성 요소 사용 중단 링크 복사링크가 클립보드에 복사되었습니다!
전체 구성 요소를 사용 중단하는 기간과 일정은 해당 구성 요소에서 노출된 API의 가장 높은 API 계층과 연관된 기간에 직접 매핑됩니다. 예를 들어, 1계층과 2계층 API를 표면화한 구성 요소는 1계층 사용 중단 일정이 충족될 때까지 제거할 수 없습니다.
| API 계층 | duration |
|---|---|
| 계층 1 | 주요 릴리스 내에서 안정적입니다. 주요 릴리스에서 더 이상 사용되지 않을 수 있지만, 후속 주요 릴리스가 나올 때까지 제거되지는 않습니다. |
| 계층 2 | 지원 중단 발표 후 9개월 또는 3회 출시 후 중 더 긴 기간이 적용됩니다. |
| 계층 2 | 구성 요소별 일정을 확인하세요. |
| 계층 2 | 없음. 호환성이 보장되지 않습니다. |
2장. API 호환성 지침 이해 링크 복사링크가 클립보드에 복사되었습니다!
이 지침은 계층화된 OpenShift 컨테이너 플랫폼 제공에 적용되지 않습니다.
2.1. 호환성 지침 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat은 애플리케이션 개발자가 OpenShift Container Platform과의 호환성을 개선하기 위해 다음 원칙을 채택할 것을 권장합니다.
- 애플리케이션의 요구 사항에 맞는 지원 계층을 갖춘 API와 구성 요소를 사용하세요.
- 가능하면 게시된 클라이언트 라이브러리를 사용하여 애플리케이션을 빌드하세요.
- 애플리케이션은 실행을 위해 빌드된 환경과 동일한 새로운 환경에서 실행되는 경우에만 올바르게 실행된다는 것이 보장됩니다. OpenShift Container Platform 4.14용으로 빌드된 애플리케이션은 OpenShift Container Platform 4.13에서 제대로 작동하지 않을 수 있습니다.
- 시스템 패키지나 다른 구성 요소가 제공하는 구성 파일에 의존하는 애플리케이션을 설계하지 마세요. 상위 커뮤니티에서 이를 보존하기로 명확하게 약속하지 않는 한, 이러한 파일은 버전 간에 변경될 수 있습니다. 적절한 경우, 이후 호환성을 유지하기 위해 해당 구성 파일에 대한 Red Hat 제공 인터페이스 추상화를 사용합니다. 구성 파일을 직접 파일 시스템에 수정하는 것은 권장되지 않으며, 사용자는 이중 작성자 충돌을 피하기 위해 가능한 경우 운영자가 제공하는 API와 통합하는 것이 좋습니다.
-
지원되지 않는 <FieldName>으로 시작하는 API 필드나 제품 설명서에 명시적으로 언급되지 않은 주석을 사용하지 마세요. - 애플리케이션보다 호환성 보장 기간이 짧은 구성 요소에 의존하지 마세요.
- etcd 서버에서 직접 저장 작업을 수행하지 마세요. 모든 etcd 액세스는 API 서버나 문서화된 백업 및 복원 절차를 통해 수행되어야 합니다.
Red Hat은 애플리케이션 개발자가 Red Hat Enterprise Linux(RHEL)에서 정의한 호환성 지침을 따를 것을 권장합니다. OpenShift Container Platform에서는 플랫폼에서 애플리케이션을 빌드하거나 호스팅할 때 다음 지침을 강력히 권장합니다.
- 특정 Linux 커널이나 OpenShift Container Platform 버전에 의존하지 마세요.
-
proc,sys,debug파일 시스템이나 다른 가상 파일 시스템에서 읽는 것을 피하세요. -
ioctls를 사용하여 하드웨어와 직접 상호 작용하지 마십시오. -
컨테이너 실행 환경을 제공하는 OpenShift Container Platform 호스트 에이전트와 충돌하지 않도록
cgroup과의 직접적인 상호 작용을 피하세요.
릴리스 수명 주기 동안 Red Hat은 모든 마이너 릴리스와 z-stream 릴리스에서 API 및 애플리케이션 운영 환경(AOE) 호환성을 유지하기 위해 상업적으로 합리적인 노력을 기울입니다. 필요에 따라 Red Hat은 심각한 영향을 미치는 보안 문제 또는 기타 다른 중요한 문제를 해결하기 위해 이러한 호환성 유지에 예외를 둘 수 있습니다.
2.2. API 호환성 예외 링크 복사링크가 클립보드에 복사되었습니다!
다음은 OpenShift Container Platform의 호환성에 대한 예외입니다.
2.2.1. 지원되는 운영자를 통해 RHEL CoreOS 파일 시스템을 수정하지 않았습니다. 링크 복사링크가 클립보드에 복사되었습니다!
지원되는 연산자(예: Machine Config Operator 또는 Node Tuning Operator)를 통해 공개된 인터페이스를 통해 수정한 경우를 제외하고 호스트 운영 파일 시스템에 대한 수정 사항이 마이너 릴리스에서 보존된다는 보장은 현재 제공되지 않습니다.
2.2.2. 클라우드 또는 가상화 환경에서 클러스터 인프라 수정 링크 복사링크가 클립보드에 복사되었습니다!
현재 클러스터를 지원하는 클라우드 호스팅 환경에 대한 수정 사항이 제품에 노출된 공개 인터페이스를 통해 이루어진 경우나 지원되는 구성으로 문서화된 경우를 제외하고 보존된다는 보장은 없습니다. 클러스터 인프라 제공자는 API를 통해 해당 권한을 제품에 위임하는 경우를 제외하고 클라우드 또는 가상화된 인프라를 보존할 책임이 있습니다.
2.2.3. 업그레이드된 클러스터와 새 설치 간의 기능적 기본값 링크 복사링크가 클립보드에 복사되었습니다!
현재로서는 제품 하위 릴리스를 새로 설치할 때 이전 하위 릴리스와 함께 설치하고 동등한 버전으로 업그레이드한 제품 버전과 동일한 기능적 기본값이 적용된다는 보장은 없습니다. 예를 들어, 제품의 향후 버전에서는 이전 마이너 버전과 다른 기본값으로 클라우드 인프라를 제공할 수 있습니다. 또한, 이전 버전의 제품과는 다른 기본 보안 선택이 향후 버전의 제품에서 이루어질 수 있습니다. 이전 버전의 제품은 포워드 업그레이드를 거치지만, 이전 버전과의 호환성을 유지하기 위해 필요한 경우 기존 선택 사항을 보존합니다.
2.2.4. "지원되지 않음" 접두사 또는 문서화되지 않은 주석이 있는 API 필드 사용 링크 복사링크가 클립보드에 복사되었습니다!
제품의 일부 API는 접두사 unsupported<FieldName>이 있는 필드를 노출합니다. 현재 이 필드의 사용이 릴리스 전반이나 릴리스 내에서 지원된다는 보장은 없습니다. 제품 지원팀은 특정 문제를 디버깅할 때 고객에게 이 필드에 값을 지정하도록 요청할 수 있지만, 해당 상호작용 외에는 이 값을 사용할 수 없습니다. 명시적으로 문서화되지 않은 객체에 대한 주석 사용은 마이너 릴리스에서 지원이 보장되지 않습니다.
2.2.5. 제품 설치 토폴로지별 API 가용성 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift 배포판은 지원하는 설치 토폴로지를 계속해서 발전시킬 것이며, 하나의 설치 토폴로지에 있는 모든 API가 반드시 다른 설치 토폴로지에 포함되는 것은 아닙니다. 예를 들어, 특정 토폴로지는 제품 설치 토폴로지와 충돌하는 경우 특정 API에 대한 읽기/쓰기 액세스를 제한할 수 있고, 해당 토폴로지와 관련이 없는 경우 특정 API를 전혀 포함하지 않을 수 있습니다. 주어진 토폴로지에 존재하는 API는 위에 정의된 호환성 계층에 따라 지원됩니다.
2.3. API 호환성 공통 용어 링크 복사링크가 클립보드에 복사되었습니다!
2.3.1. 애플리케이션 프로그래밍 인터페이스(API) 링크 복사링크가 클립보드에 복사되었습니다!
API는 소프트웨어 프로그램이 다른 소프트웨어와 상호작용할 수 있도록 구현한 공개 인터페이스입니다. OpenShift Container Platform에서 API는 중앙 API 서버에서 제공되며 모든 시스템 상호 작용의 허브로 사용됩니다.
2.3.2. 애플리케이션 운영 환경(AOE) 링크 복사링크가 클립보드에 복사되었습니다!
AOE는 최종 사용자 애플리케이션 프로그램을 실행하는 통합 환경입니다. AOE는 호스트 운영 체제(OS)로부터 격리를 제공하는 컨테이너화된 환경입니다. 최소한 AOE를 사용하면 호스트 OS 라이브러리 및 바이너리와 격리된 방식으로 애플리케이션을 실행할 수 있지만 호스트의 다른 모든 컨테이너와 동일한 OS 커널을 공유할 수 있습니다. AOE는 런타임에 적용되며 애플리케이션과 운영 환경 간의 인터페이스를 설명합니다. 여기에는 플랫폼, 운영 체제 및 환경 간의 교차점이 포함되며, 사용자 애플리케이션에는 하향 API, DNS, 리소스 회계, 장치 액세스, 플랫폼 워크로드 ID, 컨테이너 간 격리, 컨테이너와 호스트 OS 간 격리가 포함됩니다.
AOE에는 컨테이너 네트워크 인터페이스(CNI) 플러그인 선택이나 입장 후크와 같은 제품 확장 등 설치에 따라 달라질 수 있는 구성 요소가 포함되지 않습니다. 컨테이너 환경보다 낮은 수준에서 클러스터와 통합되는 구성 요소는 버전 간에 추가적인 차이가 있을 수 있습니다.
2.3.3. 가상화된 환경에서의 호환성 링크 복사링크가 클립보드에 복사되었습니다!
가상 환경은 베어 메탈 환경을 에뮬레이트하므로 베어 메탈 환경에서 실행되는 권한이 없는 애플리케이션은 해당 가상 환경에서 수정되지 않고 실행됩니다. 가상 환경은 물리적 자원을 단순화되고 추상화된 형태로 보여주므로 약간의 차이가 있을 수 있습니다.
2.3.4. 클라우드 환경에서의 호환성 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift Container Platform은 클라우드 공급자별 통합을 통해 호스팅 클라우드 환경과의 통합 포인트를 제공하기로 선택할 수 있습니다. 이러한 통합 지점의 호환성은 네이티브 클라우드 공급업체가 제공하는 보장과 OpenShift Container Platform 호환성 창과의 교차점에 따라 달라집니다. OpenShift Container Platform이 기본 설치의 일부로 클라우드 환경과의 통합을 제공하는 반면, Red Hat은 안정적인 클라우드 API 엔드포인트를 기반으로 개발하여 안정적인 사용 중단 정책을 포함한 미래 지향적 호환성을 갖춘 상업적으로 합리적인 지원을 제공합니다. 클라우드 공급자와 OpenShift Container Platform 간의 통합 영역에는 동적 볼륨 프로비저닝, 서비스 로드 밸런서 통합, Pod 워크로드 ID, 컴퓨팅의 동적 관리, 초기 설치의 일부로 프로비저닝된 인프라 등이 포함되지만 이에 국한되지는 않습니다.
2.3.5. 메이저, 마이너 및 z-stream 릴리스 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat의 주요 릴리스는 제품 개발에 있어서 중요한 단계를 나타냅니다. 마이너 릴리스는 주요 릴리스 범위 내에서 더 자주 나타나며 향후 애플리케이션 호환성에 영향을 줄 수 있는 지원 중단 경계를 나타냅니다. z-stream 릴리스는 연관된 하위 릴리스에 대한 지속적인 수정 사항 스트림을 제공하는 하위 릴리스에 대한 업데이트입니다. 예상치 못한 보안 영향에 대응하기 위해 이 정책이 명시적으로 재정의되는 경우를 제외하고는 z-stream 릴리스에서 API와 AOE 호환성이 끊어지는 일이 없습니다.
예를 들어, 릴리스 4.13.2에서는 다음과 같습니다.
- 4는 주요 릴리스 버전입니다
- 13은 마이너 릴리스 버전입니다
- 2는 z-stream 릴리스 버전입니다
2.3.6. 확장된 사용자 지원(EUS) 링크 복사링크가 클립보드에 복사되었습니다!
중요한 버그 수정을 위한 확장된 지원 기간이 포함된 OpenShift Container Platform의 주요 릴리스의 사소한 릴리스입니다. 사용자는 EUS 릴리스 간에 점진적으로 마이너 버전을 채택하여 EUS 릴리스 간에 마이그레이션할 수 있습니다. 중요한 점은 사용 중단 정책이 마이너 릴리스에 대해서만 정의되고 EUS 릴리스에는 정의되지 않는다는 것입니다. 결과적으로 EUS 사용자는 각 마이너 릴리스를 순차적으로 업그레이드하는 동안 향후 EUS로 마이그레이션할 때 사용 중단에 대응해야 할 수도 있습니다.
2.3.7. 개발자 프리뷰 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat에서 공식적으로 지원하지는 않지만 초기 단계 기술을 탐색할 수 있는 메커니즘을 제공하기 위한 선택적 제품 기능입니다. 기본적으로 개발자 미리 보기 기능은 옵트인으로 제공되며 언제든지 제거될 수 있습니다. 개발자 미리 보기 기능을 활성화하면 기능 범위에 따라 클러스터를 지원하지 못할 수도 있습니다.
Red( )Hat 고객 또는 파트너이시고 이러한 개발자 미리 보기 버전에 대한 피드백이 있으시면 OpenShift 버그 추적기를 사용하여 문제를 제출하세요. 공식적인 Red( )Hat 지원 서비스 티켓 프로세스를 사용하지 마세요. 다음 지식 문서 에서 지원 처리에 대한 자세한 내용을 읽을 수 있습니다.
2.3.8. 기술 프리뷰 링크 복사링크가 클립보드에 복사되었습니다!
개발 과정에서 기능을 테스트하고 피드백을 제공하기 위해 곧 출시될 제품 혁신에 조기에 접근할 수 있는 선택적 제품 기능입니다. 해당 기능은 완벽하게 지원되지 않으며, 기능적으로 완벽하지 않을 수 있으며, 프로덕션 용도로 의도된 것이 아닙니다. 기술 프리뷰 기능을 사용하려면 명시적으로 옵트인해야 합니다. 기술 미리 보기 기능 지원 범위 에 대해 자세히 알아보세요.
3장. kubelet 로그 수준 상세 정보 편집 및 로그 수집 링크 복사링크가 클립보드에 복사되었습니다!
노드의 일부 문제를 해결하려면 추적할 문제에 따라 kubelet의 로그 수준 자세성을 설정합니다.
3.1. kubelet을 일회성 시나리오로 수정 링크 복사링크가 클립보드에 복사되었습니다!
machine-config(spec":{"paused":false}}) 변경으로 인해 노드를 재부팅하지 않고 한 번만 kubelet을 수정하여 서비스에 영향을 주지 않고 kubelet을 수정하려면 다음 절차를 따르세요.
프로세스
디버그 모드에서 노드에 연결합니다.
oc debug node/<node>
$ oc debug node/<node>Copy to Clipboard Copied! Toggle word wrap Toggle overflow chroot /host
$ chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow 혹은 노드에 SSH를 실행하여 루트가 되는 것도 가능합니다.
액세스가 설정된 후 기본 로그 수준을 확인하세요.
systemctl cat kubelet
$ systemctl cat kubeletCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
/etc/systemd/system/kubelet.service.d/20-logging.conf [Service] Environment="KUBELET_LOG_LEVEL=2"
# /etc/systemd/system/kubelet.service.d/20-logging.conf [Service] Environment="KUBELET_LOG_LEVEL=2"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 새로운
/etc/systemd/system/kubelet.service.d/30-logging.conf파일에서 필요한 새로운 자세한 정보를 정의합니다. 이 파일은/etc/systemd/system/kubelet.service.d/20-logging.conf를 재정의합니다. 이 예에서는 자세한 내용이2에서8로 변경되었습니다.echo -e "[Service]\nEnvironment=\"KUBELET_LOG_LEVEL=8\"" > /etc/systemd/system/kubelet.service.d/30-logging.conf
$ echo -e "[Service]\nEnvironment=\"KUBELET_LOG_LEVEL=8\"" > /etc/systemd/system/kubelet.service.d/30-logging.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow systemd를 다시 로드하고 서비스를 다시 시작합니다.
systemctl daemon-reload
$ systemctl daemon-reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart kubelet
$ systemctl restart kubeletCopy to Clipboard Copied! Toggle word wrap Toggle overflow 로그를 수집한 다음 로그 수준 증가를 되돌립니다.
rm -f /etc/systemd/system/kubelet.service.d/30-logging.conf
$ rm -f /etc/systemd/system/kubelet.service.d/30-logging.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl daemon-reload
$ systemctl daemon-reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart kubelet
$ systemctl restart kubeletCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2. 영구적인 kubelet 로그 수준 구성 링크 복사링크가 클립보드에 복사되었습니다!
프로세스
영구 kubelet 로그 수준 구성에 다음
MachineConfig오브젝트를 사용합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 일반적으로
0~4는디버그 수준 로그로,5~8은추적 수준 로그로 적용하는 것이 좋습니다.
3.3. 로그 상세 설명 링크 복사링크가 클립보드에 복사되었습니다!
| 로그 상세도 | 설명 |
|---|---|
|
| 항상 운영자에게 표시됩니다. |
|
| 자세한 로그 표시를 원하지 않는 경우 적절한 기본 로그 수준을 선택하세요. |
|
| 서비스에 대한 유용한 정상 상태 정보와 시스템의 중대한 변경 사항과 관련이 있을 수 있는 중요한 로그 메시지입니다. 이는 권장되는 기본 로그 수준입니다. |
|
| 변경 사항에 대한 자세한 정보입니다. |
|
| 디버그 수준의 자세한 설명. |
|
| 요청된 리소스를 표시합니다. |
|
| HTTP 요청 헤더를 표시합니다. |
|
| HTTP 요청 콘텐츠를 표시합니다. |
3.4. kubelet 로그 수집 링크 복사링크가 클립보드에 복사되었습니다!
프로세스
kubelet의 로그 수준 자세한 정보가 올바르게 구성된 후 다음 명령을 실행하여 로그를 수집할 수 있습니다.
oc adm node-logs --role master -u kubelet
$ oc adm node-logs --role master -u kubeletCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc adm node-logs --role worker -u kubelet
$ oc adm node-logs --role worker -u kubeletCopy to Clipboard Copied! Toggle word wrap Toggle overflow 또는 노드 내부에서 다음 명령을 실행합니다.
journalctl -b -f -u kubelet.service
$ journalctl -b -f -u kubelet.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 마스터 컨테이너 로그를 수집하려면 다음 명령을 실행하세요.
sudo tail -f /var/log/containers/*
$ sudo tail -f /var/log/containers/*Copy to Clipboard Copied! Toggle word wrap Toggle overflow 모든 노드의 로그를 직접 수집하려면 다음 명령을 실행하세요.
- for n in $(oc get node --no-headers | awk '{print $1}'); do oc adm node-logs $n | gzip > $n.log.gz; done- for n in $(oc get node --no-headers | awk '{print $1}'); do oc adm node-logs $n | gzip > $n.log.gz; doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4장. API index 링크 복사링크가 클립보드에 복사되었습니다!
| API | API 그룹 |
|---|---|
| policy.networking.k8s.io/v1alpha1 | |
| k8s.ovn.org/v1 | |
| monitoring.openshift.io/v1 | |
| monitoring.coreos.com/v1 | |
| monitoring.coreos.com/v1beta1 | |
| monitoring.openshift.io/v1 | |
| apiserver.openshift.io/v1 | |
| config.openshift.io/v1 | |
| apiregistration.k8s.io/v1 | |
| quota.openshift.io/v1 | |
| config.openshift.io/v1 | |
| operator.openshift.io/v1 | |
| metal3.io/v1alpha1 | |
| policy.networking.k8s.io/v1alpha1 | |
| v1 | |
| metal3.io/v1alpha1 | |
| template.openshift.io/v1 | |
| build.openshift.io/v1 | |
| config.openshift.io/v1 | |
| build.openshift.io/v1 | |
| build.openshift.io/v1 | |
| build.openshift.io/v1 | |
| operators.coreos.com/v1alpha1 | |
| certificates.k8s.io/v1 | |
| operator.openshift.io/v1 | |
| cloud.network.openshift.io/v1 | |
| autoscaling.openshift.io/v1 | |
| olm.operatorframework.io/v1 | |
| operator.openshift.io/v1 | |
| olm.operatorframework.io/v1 | |
| config.openshift.io/v1 | |
| quota.openshift.io/v1 | |
| authorization.openshift.io/v1 | |
| rbac.authorization.k8s.io/v1 | |
| authorization.openshift.io/v1 | |
| rbac.authorization.k8s.io/v1 | |
| operators.coreos.com/v1alpha1 | |
| k8s.ovn.org/v1 | |
| config.openshift.io/v1 | |
| v1 | |
| imageregistry.operator.openshift.io/v1 | |
| operator.openshift.io/v1 | |
| samples.operator.openshift.io/v1 | |
| v1 | |
| console= | config.openshift.io/v1 |
| console= | operator.openshift.io/v1 |
| console.openshift.io/v1 | |
| console.openshift.io/v1 | |
| console.openshift.io/v1 | |
| console.openshift.io/v1 | |
| console.openshift.io/v1 | |
| console.openshift.io/v1 | |
| console.openshift.io/v1 | |
| console.openshift.io/v1 | |
| machineconfiguration.openshift.io/v1 | |
| machineconfiguration.openshift.io/v1 | |
| apps/v1 | |
| machine.openshift.io/v1 | |
| cloudcredential.openshift.io/v1 | |
| batch/v1 | |
| storage.k8s.io/v1 | |
| storage.k8s.io/v1 | |
| operator.openshift.io/v1 | |
| storage.k8s.io/v1 | |
| apiextensions.k8s.io/v1 | |
| apps/v1 | |
| metal3.io/v1alpha1 | |
| apps/v1 | |
| apps.openshift.io/v1 | |
| apps.openshift.io/v1 | |
| apps.openshift.io/v1 | |
| apps.openshift.io/v1 | |
| config.openshift.io/v1 | |
| operator.openshift.io/v1 | |
| ingress.operator.openshift.io/v1 | |
| k8s.ovn.org/v1 | |
| k8s.ovn.org/v1 | |
| k8s.ovn.org/v1 | |
| network.operator.openshift.io/v1 | |
| k8s.ovn.org/v1 | |
| v1 | |
| discovery.k8s.io/v1 | |
| operator.openshift.io/v1 | |
| v1 | |
| events.k8s.io/v1 | |
| policy/v1 | |
| config.openshift.io/v1 | |
| metal3.io/v1alpha1 | |
| flowcontrol.apiserver.k8s.io/v1 | |
| gateway.networking.k8s.io/v1 | |
| gateway.networking.k8s.io/v1 | |
| user.openshift.io/v1 | |
| gateway.networking.k8s.io/v1 | |
| metal3.io/v1alpha1 | |
| helm.openshift.io/v1beta1 | |
| autoscaling/v2 | |
| metal3.io/v1alpha1 | |
| metal3.io/v1alpha1 | |
| metal3.io/v1alpha1 | |
| gateway.networking.k8s.io/v1 | |
| user.openshift.io/v1 | |
| config.openshift.io/v1 | |
| image.openshift.io/v1 | |
| config.openshift.io/v1 | |
| operator.openshift.io/v1alpha1 | |
| config.openshift.io/v1 | |
| imageregistry.operator.openshift.io/v1 | |
| image.openshift.io/v1 | |
| image.openshift.io/v1 | |
| image.openshift.io/v1 | |
| image.openshift.io/v1 | |
| image.openshift.io/v1 | |
| image.openshift.io/v1 | |
| image.openshift.io/v1 | |
| image.openshift.io/v1 | |
| config.openshift.io/v1 | |
| config.openshift.io/v1 | |
| config.openshift.io/v1 | |
| networking.k8s.io/v1 | |
| networking.k8s.io/v1 | |
| operator.openshift.io/v1 | |
| operator.openshift.io/v1 | |
| operators.coreos.com/v1alpha1 | |
| ipam.cluster.x-k8s.io/v1beta1 | |
| ipam.cluster.x-k8s.io/v1beta1 | |
| k8s.cni.cncf.io/v1alpha1 | |
| whereabouts.cni.cncf.io/v1alpha1 | |
| batch/v1 | |
| operator.openshift.io/v1 | |
| operator.openshift.io/v1 | |
| machineconfiguration.openshift.io/v1 | |
| operator.openshift.io/v1 | |
| operator.openshift.io/v1 | |
| coordination.k8s.io/v1 | |
| v1 | |
| authorization.openshift.io/v1 | |
| authorization.k8s.io/v1 | |
| authorization.openshift.io/v1 | |
| machine.openshift.io/v1beta1 | |
| autoscaling.openshift.io/v1beta1 | |
| machineconfiguration.openshift.io/v1 | |
| machineconfiguration.openshift.io/v1 | |
| operator.openshift.io/v1 | |
| machine.openshift.io/v1beta1 | |
| machineconfiguration.openshift.io/v1 | |
| machineconfiguration.openshift.io/v1 | |
| machine.openshift.io/v1beta1 | |
| infrastructure.cluster.x-k8s.io/v1beta1 | |
| infrastructure.cluster.x-k8s.io/v1beta1 | |
| k8s.cni.cncf.io/v1beta1 | |
| admissionregistration.k8s.io/v1 | |
| v1 | |
| config.openshift.io/v1 | |
| operator.openshift.io/v1 | |
| k8s.cni.cncf.io/v1 | |
| networking.k8s.io/v1 | |
| v1 | |
| config.openshift.io/v1 | |
| metrics.k8s.io/v1beta1 | |
| whereabouts.cni.cncf.io/v1alpha1 | |
| OAuth 2.0 | config.openshift.io/v1 |
| oauth.openshift.io/v1 | |
| oauth.openshift.io/v1 | |
| oauth.openshift.io/v1 | |
| oauth.openshift.io/v1 | |
| operators.coreos.com/v1 | |
| operator.openshift.io/v1 | |
| operator.openshift.io/v1 | |
| operators.coreos.com/v1 | |
| operators.coreos.com/v2 | |
| operators.coreos.com/v1 | |
| config.openshift.io/v1 | |
| network.operator.openshift.io/v1 | |
| whereabouts.cni.cncf.io/v1alpha1 | |
| packages.operators.coreos.com/v1 | |
| performance.openshift.io/v2 | |
| v1 | |
| v1 | |
| v1 | |
| policy/v1 | |
| metrics.k8s.io/v1beta1 | |
| monitoring.coreos.com/v1 | |
| controlplane.operator.openshift.io/v1alpha1 | |
| security.openshift.io/v1 | |
| security.openshift.io/v1 | |
| security.openshift.io/v1 | |
| v1 | |
| metal3.io/v1alpha1 | |
| scheduling.k8s.io/v1 | |
| flowcontrol.apiserver.k8s.io/v1 | |
| monitoring.coreos.com/v1 | |
| tuned.openshift.io/v1 | |
| config.openshift.io/v1 | |
| project.openshift.io/v1 | |
| helm.openshift.io/v1beta1 | |
| project.openshift.io/v1 | |
| monitoring.coreos.com/v1 | |
| monitoring.coreos.com/v1 | |
| metal3.io/v1alpha1 | |
| config.openshift.io/v1 | |
| security.openshift.io/v1 | |
| gateway.networking.k8s.io/v1beta1 | |
| apps/v1 | |
| v1 | |
| authorization.openshift.io/v1 | |
| v1 | |
| authorization.openshift.io/v1 | |
| rbac.authorization.k8s.io/v1 | |
| authorization.openshift.io/v1 | |
| rbac.authorization.k8s.io/v1 | |
| authorization.openshift.io/v1 | |
| route.openshift.io/v1 | |
| node.k8s.io/v1 | |
| autoscaling/v1 | |
| scheduler | config.openshift.io/v1 |
| v1 | |
| image.openshift.io/v1 | |
| security.openshift.io/v1 | |
| authorization.k8s.io/v1 | |
| authentication.k8s.io/v1 | |
| authorization.k8s.io/v1 | |
| authorization.openshift.io/v1 | |
| v1 | |
| v1 | |
| operator.openshift.io/v1 | |
| monitoring.coreos.com/v1 | |
| apps/v1 | |
| operator.openshift.io/v1 | |
| storage.k8s.io/v1 | |
| migration.k8s.io/v1alpha1 | |
| migration.k8s.io/v1alpha1 | |
| authorization.k8s.io/v1 | |
| authorization.openshift.io/v1 | |
| authorization.openshift.io/v1 | |
| operators.coreos.com/v1alpha1 | |
| template.openshift.io/v1 | |
| template.openshift.io/v1 | |
| monitoring.coreos.com/v1 | |
| authentication.k8s.io/v1 | |
| authentication.k8s.io/v1 | |
| tuned.openshift.io/v1 | |
| user.openshift.io/v1 | |
| k8s.ovn.org/v1 | |
| user.openshift.io/v1 | |
| oauth.openshift.io/v1 | |
| admissionregistration.k8s.io/v1 | |
| admissionregistration.k8s.io/v1 | |
| admissionregistration.k8s.io/v1 | |
| storage.k8s.io/v1 | |
| snapshot.storage.k8s.io/v1 | |
| snapshot.storage.k8s.io/v1 | |
| snapshot.storage.k8s.io/v1 |
Legal Notice
링크 복사링크가 클립보드에 복사되었습니다!
Copyright © 2025 Red Hat
OpenShift documentation is licensed under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0).
Modified versions must remove all Red Hat trademarks.
Portions adapted from https://github.com/kubernetes-incubator/service-catalog/ with modifications by Red Hat.
Red Hat, Red Hat Enterprise Linux, the Red Hat logo, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation’s permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.