5.16.2. 다중 아키텍처 컴퓨팅 머신 및 Operator 워크로드의 노드 유사성 규칙 정보
Operator 워크로드를 다중 아키텍처 컴퓨팅 머신에서 실행할 수 있도록 노드 유사성 규칙을 설정해야 합니다. 노드 유사성은 스케줄러에서 Pod 배치를 정의하는 데 사용하는 규칙 세트입니다. 노드 유사성 규칙을 설정하면 Operator의 워크로드가 호환되는 아키텍처가 있는 컴퓨팅 머신에 예약됩니다.
Operator가 특정 아키텍처에서 더 잘 수행하는 경우 기본 노드 유사성 규칙을 설정하여 지정된 아키텍처가 있는 머신에 Pod를 예약할 수 있습니다.
자세한 내용은 "다중 아키텍처 컴퓨팅 머신이 있는 클러스터 수락" 및 "노드 선호도 규칙을 사용하여 노드에 Pod 배치 제어"를 참조하십시오.
5.16.2.1. Operator 프로젝트에 필요한 노드 유사성 규칙을 사용하여 다중 아키텍처 컴퓨팅 머신 지원 링크 복사링크가 클립보드에 복사되었습니다!
Operator에서 다중 아키텍처 컴퓨팅 머신을 지원하려면 Operator의 필수 노드 유사성 규칙을 정의해야 합니다.
사전 요구 사항
- Operator SDK 1.36.1 이상을 사용하여 Operator 프로젝트를 생성하거나 유지 관리합니다.
- Operator에서 지원하는 플랫폼을 정의하는 매니페스트 목록입니다.
프로세스
Pod 사양 및 Pod 템플릿 사양 오브젝트를 정의하는 Kubernetes 매니페스트에서 Operator 프로젝트를 검색합니다.
중요오브젝트 유형 이름은 YAML 파일에 선언되지 않으므로 Kubernetes 매니페스트에서 필수
컨테이너필드를 찾습니다. Pod 사양 및 Pod 템플릿 사양 오브젝트를 둘 다 지정하는 경우containers필드가 필요합니다.Pod ,
Deployment,DaemonSet,StatefulSet과 같은 오브젝트를 포함하여 Pod 사양 또는Pod템플릿 사양을 정의하는 모든 Kubernetes 매니페스트에서 노드 유사성 규칙을 설정해야 합니다.Kubernetes 매니페스트의 예
apiVersion: v1 kind: Pod metadata: name: s1 spec: containers: - name: <container_name> image: docker.io/<org>/<image_name>다음 예와 유사하게 Pod 사양 및 Pod 템플릿 사양 오브젝트를 정의하는 Kubernetes 매니페스트에 필요한 노드 유사성 규칙을 설정합니다.
Kubernetes 매니페스트의 예
apiVersion: v1 kind: Pod metadata: name: s1 spec: containers: - name: <container_name> image: docker.io/<org>/<image_name> affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution:1 nodeSelectorTerms:2 - matchExpressions:3 - key: kubernetes.io/arch4 operator: In values: - amd64 - arm64 - ppc64le - s390x - key: kubernetes.io/os5 operator: In values: - linux동적으로 생성된 워크로드를 사용하는 Go 기반 Operator 프로젝트는 Operator 논리에 Pod 사양 및 Pod 템플릿 사양 오브젝트를 포함할 수 있습니다.
프로젝트에 Operator 논리에 Pod 사양 또는 Pod 템플릿 사양 오브젝트가 포함된 경우 다음 예와 유사한 Operator의 논리를 편집합니다. 다음 예제에서는 Go API를 사용하여
PodSpec오브젝트를 업데이트하는 방법을 보여줍니다.Template: corev1.PodTemplateSpec{ ... Spec: corev1.PodSpec{ Affinity: &corev1.Affinity{ NodeAffinity: &corev1.NodeAffinity{ RequiredDuringSchedulingIgnoredDuringExecution: &corev1.NodeSelector{ NodeSelectorTerms: []corev1.NodeSelectorTerm{ { MatchExpressions: []corev1.NodeSelectorRequirement{ { Key: "kubernetes.io/arch", Operator: "In", Values: []string{"amd64","arm64","ppc64le","s390x"}, }, { Key: "kubernetes.io/os", Operator: "In", Values: []string{"linux"}, }, }, }, }, }, }, }, SecurityContext: &corev1.PodSecurityContext{ ... }, Containers: []corev1.Container{{ ... }}, },다음과 같습니다.
RequiredDuringSchedulingIgnoredDuringExecution- 필요한 규칙을 정의합니다.
NodeSelectorTerms-
nodeAffinity유형과 연결된nodeSelectorTerms를 여러 개 지정하는 경우nodeSelectorTerms중 하나를 충족하면 Pod를 노드에 예약할 수 있습니다. MatchExpressions-
nodeSelectorTerms와 연결된matchExpressions를 여러 개 지정하는 경우 모든matchExpressions를 충족할 때만 Pod를 노드에 예약할 수 있습니다. kubernetes.io/arch- 매니페스트 목록에 정의된 아키텍처를 지정합니다.
kubernetes.io/os- 매니페스트 목록에 정의된 운영 체제를 지정합니다.
노드 유사성 규칙을 설정하지 않고 컨테이너가 호환되지 않는 아키텍처가 있는 컴퓨팅 머신에 예약된 경우 Pod가 실패하고 다음 이벤트 중 하나를 트리거합니다.
CrashLoopBackOff-
이미지 매니페스트의 진입점이 실행되지 않고 로그에
exec 형식 오류메시지가 출력되는 경우 발생합니다. ImagePullBackOff- 매니페스트 목록에 Pod가 예약되거나 노드 유사성 용어가 잘못된 값으로 설정된 아키텍처에 대한 매니페스트가 포함되지 않은 경우 발생합니다.