5장. 네트워킹


5.1. 네트워킹

5.1.1. 개요

Kubernetes는 pod가 네트워크를 통해 서로 연결할 수 있도록 하며 각 pod에 내부 네트워크의 IP 주소를 할당합니다. 이렇게 하면 pod 내의 모든 컨테이너가 마치 동일한 호스트에 있는 것처럼 작동합니다. 각 pod에 고유 IP 주소를 부여하면 포트 할당, 네트워킹, 이름 지정, 서비스 검색, 로드 밸런싱, 애플리케이션 구성 및 마이그레이션 등 다양한 업무를 할 때 pod를 물리적 호스트 또는 가상 머신처럼 취급할 수 있습니다.

포드 간 링크를 생성할 필요가 없으며 포드가 IP 주소를 사용하여 직접 서로 통신하지 않는 것이 좋습니다. 대신 서비스를 생성한 다음 서비스와 상호 작용하는 것이 좋습니다.

5.1.2. OpenShift Container Platform DNS

frontend 포드가 백엔드 서비스와 통신하기 위해 프론트엔드 및 백엔드 서비스와 같은 여러 서비스를 실행하는 경우 사용자 이름, 서비스 IP 등에 대한 환경 변수가 생성됩니다. 서비스를 삭제하고 다시 생성하면 새 IP 주소를 서비스에 할당할 수 있으며 서비스 IP 환경 변수의 업데이트된 값을 가져오기 위해 프론트엔드 포드를 다시 생성해야 합니다. 또한 서비스 IP가 올바르게 생성되고 프론트엔드 포드에 환경 변수로 제공할 수 있도록 백엔드 서비스를 생성한 후 frontend 포드에 생성해야 합니다.

이러한 이유로 서비스 DNS는 물론 서비스 IP/포트를 통해서도 서비스를 이용할 수 있도록 OpenShift Container Platform에 DNS를 내장했습니다. OpenShift Container Platform은 서비스의 DNS 쿼리에 응답하는 마스터에서 SkyDNS 를 실행하여 분할된 DNS를 지원합니다. 마스터는 기본적으로 포트 53을 수신 대기합니다.

노드가 시작되면 다음 메시지는 Kubelet이 마스터로 올바르게 확인되었음을 나타냅니다.

0308 19:51:03.118430    4484 node.go:197] Started Kubelet for node
openshiftdev.local, server at 0.0.0.0:10250
I0308 19:51:03.118459    4484 node.go:199]   Kubelet is setting 10.0.2.15 as a
DNS nameserver for domain "local"

두 번째 메시지가 표시되지 않으면 Kubernetes 서비스를 사용할 수 없습니다.

노드 호스트에서 각 컨테이너의 이름 서버에는 앞에 마스터 이름이 추가되고 컨테이너의 기본 검색 도메인은 <pod_namespace>.cluster.local 이 됩니다. 그런 다음 컨테이너는 Docker 형식 컨테이너의 기본 동작인 노드의 다른 이름 서버 앞에 이름 서버 쿼리를 마스터로 보냅니다. 마스터는 다음 양식이 있는 .cluster.local 도메인의 쿼리에 응답합니다.

표 5.1. DNS 예제 이름
개체 유형예제

Default

<pod_namespace>.cluster.local

서비스

<service>.<pod_namespace>.svc.cluster.local

엔드포인트

<name>.<namespace>.endpoints.cluster.local

이렇게 하면 서비스에 대한 새 IP를 생성하는 새 서비스를 가져오기 위해 프론트엔드 포드를 다시 시작하지 않아도 됩니다. 또한 포드에서 서비스 DNS를 사용할 수 있기 때문에 환경 변수를 사용할 필요가 없습니다. 또한 DNS는 변경되지 않으므로 구성 파일에서 데이터베이스 서비스를 db.local 로 참조할 수 있습니다. 조회가 서비스 IP로 확인되고, 프론트엔드 포드보다 먼저 백엔드 서비스를 만들 필요가 없기 때문에 와일드카드 조회도 지원됩니다. 따라서 서비스 이름(따라서 DNS)이 초기 상태로 설정되어 있기 때문입니다.

이 DNS 구조는 포털 IP가 서비스에 할당되지 않고 kube-proxy가 해당 엔드포인트에 라우팅을 로드 밸런싱하지 않거나 라우팅을 제공하는 헤드리스 서비스도 다룹니다. 서비스 DNS를 계속 사용하고 서비스의 각 포드에 하나씩 여러 A 레코드로 응답할 수 있으므로 클라이언트가 각 포드 간에 라운드 로빈할 수 있습니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.