2016-11-30 1 views
1

간단한 정적 웹 페이지를 제공하는 도커 이미지가 있습니다. 저는 4 개의 노드로 구성된 Kubernetes 클러스터를 운영하고 있습니다 (실제 서버는 클라우드에 있지 않습니다).그냥 Kubernetes에서 간단한 앱을 실행하고 싶습니다.

4 개의 Kubernetes 노드 중 2 개에서 해당 고정 이미지를 실행하고 클러스터 외부의 세계에 액세스 할 수있게하고로드 균형을 조정하여 다른 노드로 이동하도록합니다.

포드를 만든 다음 복제 컨트롤러에 다음 kube 프록시를 지정해야합니까? 또는 복제 컨트롤러를 만들어서 어떻게 든 노출해야합니까? 서비스를 받아야합니까?

나는 그러한 것들을 만드는 방법에 도움이 필요하지 않습니다. 그것은 문서화 된 것처럼 보이지만, 제가 무엇을해야 하는지를 말할 수는 없습니다. 당신이 필요로하는 무엇

+0

이 작업을 수행하는 한 가지 방법은 인스턴스를 관리하기위한 배포 및 인스턴스 앞에있는 서비스를 외부 세계에 노출시키는 것입니다. –

답변

2

당신의 서비스 (즉, 당신의 복제 컨트롤러에 의해 다시 시작/실행 조정됩니다 포드/구성) 노출이다. 복제 컨트롤러 대신 배포을 사용하면 (주로 응용 프로그램을 업데이트 할 때) 추가 이점이 있습니다.

베어 메탈을 사용하는 경우 type: NodePort을 통해 서비스를 제공하고 싶습니다. 클러스터의 모든 노드가 트래픽을 포드로 라우팅하는 고정 포트를 열게됩니다.

그런 다음로드 균형 조정기를 해당 포트의 해당 노드로 지정하거나 모든 Kubernetes 노드로 DNS 항목을 만들 수 있습니다.

문서 : http://kubernetes.io/docs/user-guide/quick-start/

+0

다음과 같이 복제 컨트롤러를 잊어 버리십시오. 배포 작성 -> 서비스 작성 -> 서비스 공개 -> DNS에 어떤 IP 주소를 넣으시겠습니까? 그러면로드 균형을 조정하고 장애 조치를 수행 할 수 있습니까? – elicriffield

+0

EXTERNAL로드 밸런서의 IP를 DNS에 넣습니다. 로드 밸런서를 모든 k8 노드의 IP 주소로 지정하십시오. –

+0

외부로드 밸런서 (loadbalancer)에 무엇을 사용할 지에 대한 제안이 있으십니까? 그리고 클러스터의 모든 노드를 가리킬 수는 없으며 그 중 2 명만 앱을 실행하고 있고 그 중 하나가 다운되면 어떻게됩니까? – elicriffield

1

당신이 필요합니다 :

1) 클러스터에서 노드 중 하나에 부하 분산, 즉 프록시 nginxupstream에 트래픽과 같은 리버스 프록시 포드입니다. 이 포드 필요한

ports: 
- containerPort: 80 
    hostPort: 80 
    name: http 
- containerPort: 443 
    hostPort: 443 
    name: https 

2) 대상으로 웹 서버 선택기를 사용하는 서비스 같은 hostPort를 사용하여 외부로 노출된다.

3)은 nginx를 설정

4) 선택이 서비스의 대상이되어야 할 것이다 웹 서버 포드, 배포 상류로 서비스 IP에 해결됩니다 서비스 이름을()를 설정합니다.

는 또한 서비스 http://kubernetes.io/docs/user-guide/services/#external-ips

에 대한 외부 IP보고 싶을 수도 있지만 나는 개인적으로 얻을 관리 결코 내 베어 메탈 클러스터에서 작동합니다.

관련 문제