> 백엔드 개발 > Golang > 배포 포인터는 Kubernetes의 Runtime.Object 인터페이스를 어떻게 충족합니까?

배포 포인터는 Kubernetes의 Runtime.Object 인터페이스를 어떻게 충족합니까?

Mary-Kate Olsen
풀어 주다: 2024-11-01 01:03:01
원래의
1089명이 탐색했습니다.

How Does a Deployment Pointer Satisfy the runtime.Object Interface in Kubernetes?

&deployment는 어떻게 Kubernetes 코드의 Runtime.Object 유형을 충족하나요?

Kubernetes의 kubectl/run.go 코드에서 생성 함수는 다음을 포함하는 결과 목록을 반환합니다. 두 가지 유형: 런타임.객체 및 오류. 그러나 함수의 마지막 줄은 return &deployment, nil입니다. 이는 처음에 &deployment가 어떻게 Runtime.Object 유형을 충족할 수 있는지에 대한 의문을 제기합니다.

런타임 개체 인터페이스

runtime.Object는 k8s.io/apimachinery/pkg/runtime 패키지에 정의된 인터페이스입니다. Kubernetes API의 추상 객체를 나타냅니다. 인터페이스를 구현하려면 유형에 다음 메서드가 있어야 합니다.

  • GetObjectKind() 스키마.ObjectKind: 객체 유형에 대한 메타데이터를 반환합니다.
  • DeepCopyObject() 객체: 딥을 반환합니다.

유형 구현

이 경우 배포는 Kubernetes API 유형인 Extensionsv1beta1.Deployment 유형의 로컬 변수입니다. Extensionsv1beta1.Deployment는 GetObjectKind() 메서드를 제공하는 Metav1.TypeMeta를 확장합니다. 또한 Extensionsv1beta1.Deployment는 DeepCopyObject() 메서드도 직접 구현합니다.

포인터가 인터페이스를 만족합니다

Go의 & 연산자는 변수에 대한 포인터를 생성합니다. 포인터는 기본 유형과 별개의 유형을 갖습니다. 그러나 이 경우에는

  • 배포에는 포인터 수신기와 함께 GetObjectKind() 및 DeepCopyObject()가 모두 포함된 메서드 세트가 있습니다.
  • ObjectMeta는 배포 내에 포함됩니다. 이는 다음에 대한 포인터를 의미합니다. 또한 배포는 ObjectMeta에서 GetObjectKind() 메서드를 상속합니다.

Go 사양에 따르면 인터페이스 유형은 인터페이스의 상위 집합인 메서드 집합을 사용하여 모든 유형의 값을 저장할 수 있습니다. 이 경우 *extensionsv1beta1.Deployment의 메소드 세트는 Runtime.Object의 메소드 세트의 상위 세트입니다. 따라서 &deployment를 Runtime.Object 유형의 변수에 할당하여 생성 함수의 반환 유형을 만족시킬 수 있습니다.

위 내용은 배포 포인터는 Kubernetes의 Runtime.Object 인터페이스를 어떻게 충족합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿