2016-12-05 2 views
0

私はKubernetesを使いこなしていて、centosホスト(3ノード、1マスター)の小さなラボクラスタを持っています。Kubeが公開しているノードのIPへのリクエストが正しいポッドに当たったようです

$ kubectl get nodes 
NAME       STATUS AGE 
centos-kube-minion-1 Ready  2d 
centos-kube-minion-2 Ready  2d 
centos-kube-minion-3 Ready  2d 

私は、私の研究室のENV(http://kubernetes.io/docs/tutorials/kubernetes-basics/expose-interactive/)でインタラクティブなチュートリアルに従うことをうまく管理しました。

私はあなたが外部からデモアプリケーション(3のモジュール4ステップ1)を露出部分に到着しました:次のように

$ kubectl expose deployment/kubernetes-bootcamp --type="NodePort" --port 8080 

Kubectlは出力を説明します。

$ kubectl describe services/kubernetes-bootcamp 
Name:     kubernetes-bootcamp 
Namespace:    default 
Labels:     run=kubernetes-bootcamp 
Selector:    run=kubernetes-bootcamp 
Type:     NodePort 
IP:      10.254.224.254 
Port:     <unset> 8080/TCP 
NodePort:    <unset> 31686/TCP 
Endpoints:    172.30.3.2:8080 
Session Affinity:  None 
No events. 

次のステップをチュートリアルでは、ポッドが動作しているノードのDNS名(またはIP)と公開されているポート(私の場合は31686)のカールを呼び出します。

私の/ etc/hostsは次のようになります。

$ cat etc/hosts 
... 
10.10.0.231 centos-kube-master 
10.10.0.236 centos-kube-minion-1 
10.10.0.232 centos-kube-minion-2 
10.10.0.237 centos-kube-minion-3 

そして、実際のポッドは手先-3で実行されている:ときに私、

しかし
$ kubectl describe pod kubernetes-bootcamp-428840972-ukl15 
    Name:   kubernetes-bootcamp-428840972-ukl15 
    Namespace:  default 
    Node:   centos-kube-minion-3/10.10.0.237 

(と、ここで実際の質問があります)これらのDNSエントリと公開されているポートのいずれかをカールすると、私はアプリにヒット:

$ curl centos-kube-minion-1:31686 
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-428840972-ukl15 | v=1 

$ curl centos-kube-minion-2:31686 
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-428840972-ukl15 | v=1 

$ curl centos-kube-minion-3:31686 
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-428840972-ukl15 | v=1 

私も実際のIPに対してカールDNSエントリで何も狂っていなかった。

$ curl 10.10.0.236:31686 
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-428840972-ukl15 | v=1 
$ curl 10.10.0.237:31686 
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-428840972-ukl15 | v=1 
$ curl 10.10.0.232:31686 
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-428840972-ukl15 | v=1 

私の質問は:これは意図したとおりに動作していますか?もしそうなら、誰もその魔法の説明に説明/リンクすることができますか?

答えて

2

はいこれは意図した通りです:nodePortは同じポートのすべてのノードでサービスを公開します。

基本的にサービスは、アプリケーションを実行するPodのプロキシです。 KubeProxyはすべてのノードで動作するため、nodePortを指定すると、定義されたポートからのトラフィックをサービスにリダイレクトするようにすべてのノードに通知されます。

http://kubernetes.io/docs/user-guide/services/#type-nodeport

関連する問題