2016-12-17 3 views
1

Rancher를 사용하여 VMware 호스트에 Kubernetes 클러스터를 성공적으로 설정했습니다. kubernetes-dashboard가 실행 중이고 kubectl을 사용하여 클러스터에 명령을 실행할 수 있습니다.Kubernetes API를 공개 IP에 노출시키는 방법은 무엇입니까?

이제 SaaS 빌드 도구 (Distelli)를 사용하여 응용 프로그램을 클러스터에 배포하려고합니다. 이 빌드 도구는 HTTPS 클라이언트 인증서, 클라이언트 키 및 클러스터 인증서를 사용하여 내 호스트에 연결해야합니다.

그러나 내 kubernetes API는 아직 공개되지 않았습니다.

이 나의 현재는 Kubernetes 서비스 구성입니다 : 내가 외부 IP 주소에이 서비스를 사용할 수 있도록하려면 어떻게

$kubectl describe services kubernetes 
Name:   kubernetes 
Namespace:  default 
Labels:   component=apiserver 
      provider=kubernetes 
Selector:  <none> 
Type:   ClusterIP 
IP:   10.43.0.1 
Port:   https 443/TCP 
Endpoints:  10.42.173.175:6443 
Session Affinity: ClientIP 

? 서버에 진입로드 밸런서를 사용하려고 시도했지만 사용할 수없는 503 서비스 만 반환합니다.

아이디어가 있으십니까?

답변

1

공용 인터넷에서 API 서버까지의 경로가 있어야합니다. 이것은 api 서버를 실행하는 시스템에 공용 IP를 직접 할당하거나 직접로드 밸런서를 사용할 수 있습니다. VMWare에 있다고 언급 했으므로 네트워크 설정에 따라 몇 가지 다른 경로가있을 수 있습니다.

0

나는 이것에 대해 아직 완전히 이해하지 못했다. 왜냐하면 내가 내 자신의 구현과 관련하여 (예를 들어 어떻게 확장 할 수 있을까? 그러나 이것이 내가 그것을 한 방법이다.

먼저 "mywonderfulwebsite.com"이라는 도메인이 있고 편집 할 수있는 DNS 영역이 있다면 mywonderfulwebsite.com에 'A'레코드를 추가하고 귀하의 IP 주소를 가리 키십시오. 클러스터.

쿠버 넷 (Kubernetes)의 종류가 여러 개의 노드 (하나 이상의 마스터 및 하나의 응용 프로그램 서버)를 실행하기 때문에 어떤 IP 주소가 재미 있는지 살펴 보겠습니다. 따라서이 시나리오에서 사용할 ip 주소는 응용 프로그램 서버의 IP 주소입니다. 이것은 부수적으로 왜 이것을 확장하는 지 잘 모르는 이유입니다. 하나의 마스터 + 10 개의 앱 노드가 있다면 지금 사용하는 IP 주소가 있습니까? 모두들?

앱 노드에서 베어 메탈로드 밸런서 인 ingress-nginx-controller를 배포합니다. 베어 메탈은 굉장히 많이 들리는 용어입니다. 기본적으로 Kubernetes를 수동으로 설치 한 빈 서버가 있습니다. AWS, Azure 등이 아닙니다.

수신 컨트롤러를 설치하면이를 사용하는 수신 자원을 만들 수 있습니다. 그래서 처음에는 혼란 스러웠지만 지금은 모두 분명합니다. Ingress를 생성하는 것은 애플리케이션 배포를위한 리소스 일 뿐이지 만 외부 세계의 요청을 클러스터로 전달하려면 LoadBalancer 또는 Ingress 컨트롤러가 필요합니다.

일단 다른 입력을 만들면 해당 도메인의 모든 요청이 DNS 서버에서 앱 노드로 전달되고 ingress-nginx-controller로 전달되어 기존 ingress 자원과 일치 시키려고 시도합니다 하나를 찾으면 앱 및 빙고 용으로 만든 서비스 리소스의 백엔드로 구성됩니다! 앱에서 요청을 받게됩니다.

나는 당신을 도울 github가 있습니다 : http://github.com/christhomas/kubernetes-cluster