3.3.3. 서비스
Kubernetes 서비스는 내부 로드 밸런서 역할을 합니다. 수신 연결을 프록시하기 위해 복제된 포드 집합을 식별합니다. 서비스에 의존하는 모든 항목이 일관된 주소에서 참조할 수 있도록 백업 포드를 서비스에 임의로 추가하거나 제거할 수 있습니다. 기본 서비스 clusterIP 주소는 OpenShift Container Platform 내부 네트워크에서 제공되며 포드가 서로 액세스할 수 있도록 허용하는 데 사용됩니다.
서비스에 대한 외부 액세스를 허용하려면 클러스터 외부에 있는 추가 externalIP
및 ingressIP
주소를 서비스에 할당할 수 있습니다. 이러한 externalIP
주소는 서비스에 대한 고가용성 액세스를 제공하는 가상 IP 주소일 수도 있습니다.
서비스에 액세스할 때 적절한 지원 포드로 프록시하는 IP 주소 및 포트 쌍이 할당됩니다. 서비스는 레이블 선택기를 사용하여 특정 포트에서 특정 네트워크 서비스를 제공하는 실행 중인 모든 컨테이너를 찾습니다.
포드와 마찬가지로 서비스는 REST 개체입니다. 다음 예는 위에서 정의한 Pod에 대한 서비스 정의를 보여줍니다.
서비스 오브젝트 정의(YAML)
apiVersion: v1 kind: Service metadata: name: docker-registry 1 spec: selector: 2 docker-registry: default clusterIP: 172.30.136.123 3 ports: - nodePort: 0 port: 5000 4 protocol: TCP targetPort: 5000 5
Kubernetes 설명서 에는 서비스에 대한 자세한 정보가 있습니다.
3.3.3.1. 서비스 externalIPs
클러스터의 내부 IP 주소 외에도 사용자는 클러스터 외부에 있는 IP 주소를 구성할 수 있습니다. 관리자는 트래픽이 이 IP를 사용하여 노드에 도착하는지 확인합니다.
master-config.yaml 파일에 구성된 externalIPNetworkCIDRs 범위에서 클러스터 관리자가 externalIP를 선택해야 합니다. master-config.yaml 이 변경되면 마스터 서비스를 다시 시작해야 합니다.
Sample externalIPNetworkCIDR /etc/origin/master/master-config.yaml
networkConfig: externalIPNetworkCIDRs: - 192.0.1.0.0/24
서비스 externalIPs 정의(JSON)
{
"kind": "Service",
"apiVersion": "v1",
"metadata": {
"name": "my-service"
},
"spec": {
"selector": {
"app": "MyApp"
},
"ports": [
{
"name": "http",
"protocol": "TCP",
"port": 80,
"targetPort": 9376
}
],
"externalIPs" : [
"192.0.1.1" 1
]
}
}
- 1
- 포트를 노출하는 외부 IP 주소 목록입니다. 이 목록은 내부 IP 주소 목록에 추가되어 있습니다.