서비스

서비스 (Service)

이 페이지는 포드 집합에 대한 네트워크 서비스를 추상화하는 Service 객체를 설명해요. 포드에 안정적인 IP와 DNS 이름을 제공하는 구조체랍니다.

출처: Kubernetes API Reference

본문

Service는 포드 집합에서 실행 중인 애플리케이션을 네트워크 서비스로 노출하는 방법입니다.

apiVersion: v1

import "k8s.io/api/core/v1"

Service

Service는 포드 집합에서 실행 중인 애플리케이션을 네트워크 서비스로 노출하는 방법입니다.


Field Description
apiVersion
string APIVersion은 이 객체 표현의 버전 스키마를 정의합니다. 서버는 인식된 스키마를 최신 내부 값으로 변환해야 하며, 인식되지 않은 값은 거부할 수 있습니다. 자세한 내용: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
kind
string Kind는 이 객체가 나타내는 REST 리소스를 나타내는 문자열 값입니다. 서버는 클라이언트가 요청을 제출하는 엔드포인트에서 이를 추론할 수 있습니다. 업데이트할 수 없습니다. CamelCase 형식입니다. 자세한 내용: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
metadata
ObjectMeta 객체의 표준 메타데이터입니다. 자세한 내용: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec
ServiceSpec spec는 클라이언트가 사용 가능하게 하려는 서비스의 동작을 정의합니다. 자세한 내용: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
status
ServiceStatus status는 서비스의 현재 상태를 나타냅니다. 자세한 내용: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status

ServiceSpec

ServiceSpec는 Service의 원하는 상태를 정의합니다.


Field Description
allocateLoadBalancerNodePorts
boolean allocateLoadBalancerNodePorts는 LoadBalancer로 생성된 서비스에 대해 노드 포트가 할당될지 여부를 정의합니다. 이 필드는 type=LoadBalancer일 때만 유지됩니다. 기본값은 true입니다.
clusterIP
string clusterIP는 서비스의 가상 IP 주소입니다. 이 필드가 지정되면 사용된 값은 동작에 따라 달라집니다.
clusterIPs
string array clusterIPs는 이 서비스에 할당된 IP 주소의 목록입니다. 이 주소는 항상 각자의 IPFamily를 가집니다.
externalIPs
string array externalIPs는 이 서비스로 트래픽이 전달될 외부 IP의 목록입니다. 라우터에 의해 설정되며 일반적으로 노드 IP입니다.
externalName
string externalName은 type=ExternalName인 서비스의 외부 참조 이름입니다.
externalTrafficPolicy
string externalTrafficPolicy는 외부 트래픽이 서비스를 통해 라우팅되는 방법을 나타냅니다. 유효한 값은 Cluster, Local입니다.
healthCheckNodePort
integer healthCheckNodePort는 kube-proxy가 서비스에 대한 health check를 노출하는 데 사용하는 포트입니다. 이 값은 externalTrafficPolicy가 Local일 때만 유지됩니다.
internalTrafficPolicy
string internalTrafficPolicy는 내부 트래픽이 서비스를 통해 라우팅되는 방법을 나타냅니다. 유효한 값은 Cluster, Local입니다.
ipFamilies
string array ipFamilies는 이 서비스에서 할당된 IP 주소의 IP 패밀리 목록입니다. 유효한 값은 IPv4, IPv6입니다. 이 필드는 지정된 경우 clusterIPs의 각 항목과 일치해야 합니다.
ipFamilyPolicy
string ipFamilyPolicy는 이 서비스가 할당받게 될 IP 패밀리에 대한 정책을 나타냅니다. 유효한 값은 SingleStack, PreferDualStack, RequireDualStack입니다.
loadBalancerClass
string loadBalancerClass는 이 서비스의 LoadBalancer 구현을 결정하기 위해 선택된 클래스에 대한 참조입니다.
loadBalancerIP
string loadBalancerIP는 LoadBalancer에 대해 요청된 외부 IP 주소입니다.
loadBalancerSourceRanges
string array loadBalancerSourceRanges는 LoadBalancer로 생성된 서비스에 들어오는 트래픽을 허용하는 소스 IP 범위의 목록입니다.
ports
ServicePort array ports는 이 Service가 노출하는 포트 목록입니다. 각 항목은 프런트엔드와 백엔드 포트 사이의 관계를 정의합니다.
publishNotReadyAddresses
boolean publishNotReadyAddresses는 준비되지 않은 포드에 대한 엔드포인트를 게시할지 여부를 나타냅니다. 기본값은 false입니다.
selector
map[string]string selector는 이 서비스가 트래픽을 라우팅할 포드의 라벨 셀렉터입니다.
sessionAffinity
string sessionAffinity는 세션 기반의 자세한 지속 방법을 나타냅니다. 유효한 값은 ClientIP, None입니다.
sessionAffinityConfig
SessionAffinityConfig sessionAffinityConfig는 세션 선호도 설정을 포함합니다.
trafficDistribution
string trafficDistribution은 이 서비스의 트래픽을 라우팅하는 방법에 대한 실질적인 힌트를 제공합니다. 유효한 값은 PreferClose입니다.
type
string type는 서비스의 노출 유형을 결정합니다. 유효한 값은 ClusterIP, NodePort, LoadBalancer, ExternalName입니다. 기본값은 ClusterIP입니다.

ServicePort

ServicePort는 Service에서 제공되는 포트를 나타냅니다.


Field Description
appProtocol
string appProtocol는 이 포트에 대한 애플리케이션 레벨 프로토콜입니다. 이 필드는 IANA 표준 서비스 이름의 문자열을 사용할 수 있습니다.
name
string name는 포트의 이름입니다. 서비스 내에서 고유해야 하며 DNS 라벨이어야 합니다.
nodePort
integer nodePort는 이 Service가 노출되는 노드의 포트입니다. 전체 클러스터에서 서비스에 대해 고유해야 합니다.
port *****
integer port는 Service를 통해 노출되는 포트입니다.
protocol
string protocol는 이 포트에 사용할 IP 프로토콜입니다. 유효한 값은 TCP, UDP, SCTP입니다. 기본값은 TCP입니다.
targetPort
IntOrString targetPort는 서비스가 연결할 포드의 포트 번호나 이름입니다. 기본값은 port와 동일합니다.

SessionAffinityConfig

SessionAffinityConfig는 세션 선호도 구성을 나타냅니다.


Field Description
clientIP
ClientIPConfig clientIP는 세션 선호도가 ClientIP일 때 사용되는 클라이언트 IP 구성입니다.

ClientIPConfig

ClientIPConfig는 세션 선호도가 ClientIP일 때의 구성을 나타냅니다.


Field Description
timeoutSeconds
integer timeoutSeconds는 클라이언트 IP 세션의 세션 제휴에 대한 유효 시간을 지정합니다. 최소값은 1이며, 기본값은 10800(3시간)입니다.

ServiceStatus

ServiceStatus는 Service의 현재 상태를 나타냅니다.


Field Description
conditions
ServiceCondition array conditions는 관찰 가능한 서비스 상태의 목록입니다.
loadBalancer
LoadBalancerStatus loadBalancer는 서비스에 대한 부하 분산 장치의 현재 상태를 나타냅니다.

LoadBalancerStatus

LoadBalancerStatus는 서비스에 대한 부하 분산 장치의 현재 상태를 나타냅니다.


Field Description
ingress
LoadBalancerIngress array ingress는 부하 분산 장치에 의해 할당된 IP 주소와 호스트 이름과 같은 수신 트래픽에 대한 정보 목록입니다.

LoadBalancerIngress

LoadBalancerIngress는 부하 분산 장치에 대한 수신 트래픽 정보를 나타냅니다.


Field Description
hostname
string hostname는 부하 분산 장치에 할당된 호스트 이름입니다.
ip
string ip는 부하 분산 장치에 할당된 IP 주소입니다.
ipMode
string ipMode는 IP 주소의 모드입니다. 값은 VIP와 Proxy입니다.
ports
PortStatus array ports는 부하 분산 장치에서 노출되는 포트 목록입니다.

PortStatus

PortStatus는 부하 분산 장치에서 노출되는 포트를 나타냅니다.


Field Description
error
string error는 이 포트에 대한 부하 분산 장치 설정 오류를 나타냅니다.
port *****
integer port는 부하 분산 장치에서 노출되는 포트 번호입니다.
protocol *****
string protocol는 이 포트에 대한 IP 프로토콜입니다. 유효한 값은 TCP, UDP, SCTP입니다.

ServiceCondition

ServiceCondition는 서비스의 상태 조건을 나타냅니다.


Field Description
lastTransitionTime
Time lastTransitionTime는 조건이 한 상태에서 다른 상태로 전환된 마지막 시간입니다.
message
string message는 조건에 대한 세부 정보를 포함하는 사람이 읽을 수 있는 메시지입니다.
reason
string reason는 조건의 마지막 전환에 대한 이유입니다.
status *****
string status는 조건의 상태입니다. True, False, Unknown 중 하나입니다.
type *****
string type는 조건의 유형입니다.

더 알아보기 (Learn more)