2017-12-08 5 views
0

を経由してマッピングされたポートを介してコマンドを送信します。それは、ポート22082を開いている。この場合私はそうのような特定のポートからコマンドを受け取ることができるアプリケーション持ってkubernetesサービス

echo <command> | nc <hostname> <port> 

を、私はそれにドッカーコンテナだと考えています。

このアプリケーションをkubernetesポッドに入れると、kubernetesサービスを作成してこのアプリケーションを公開する必要があります。ここに私のサービスは次のとおりです。

apiVersion: v1                                            
kind: Service                             
metadata:                              
    name: commander                            
spec:                               
    selector:                             
    app: commander                           
    ports:                              
    - protocol: TCP                           
     port: 22282                            
     targetPort: 22082                          
    #type: NodePort                            
    externalIPs:                            
    - 10.10.30.19 

注:私は、そのメソッドを使用してポートを公開することができていないので、私はNodePortをコメントアウト。 sudo netstat -nlp | grep 22282を使うたびに何も得られません。

外部IPの使用私はポートを見つけてnetcatを使用して接続することができますが、ポートを介してコマンドを発行するたびにハングアップします。

通常、私は 'help'コマンドを発行してアプリに関する情報を得ることができます。 kubernetesでは、私は同じ出力を得ることができません。私は私のアプリのYAML(ないサービス)でhostNetwork: trueを使用する場合

今、私はポートに接続することができ私の「ヘルプ」の情報を取得します。

hostNetwork設定を使用していないときに、自分のコマンドがアプリに届かない原因は何ですか?

おかげ

UPDATE:sudo iptables --listからこのメッセージに気づいた:

Chain KUBE-SERVICES (1 references) 
target  prot opt source    destination   
REJECT  tcp -- anywhere    172.21.155.23  /* default/commander: has no endpoints */ tcp dpt:22282 reject-with icmp-port-unreachable 

UPDATE#2:私は司令官にspec.template.metadata.labels.appを設定することにより、上記のエラーを解決しました。私はまだ、しかし、アプリにコマンドを送信することができないことが発生している。私はそうのような実際のnodePort設定するために必要なことを発見し@sfgroupsへ

+1

NodePortを使用する場合は、ポッドに接続できるポートを使用して30000よりも大きな値を与えます。ここに私の 'NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S)AGE grafana-grafana NodePort 10.104.97.35 80:30612/TCP 17d ' – sfgroups

+0

@sfgroupsだから私の 'port'を設定する必要があると言いますフィールドを30000より大きい値に設定しますか? –

答えて

0

ありがとう:

apiVersion: v1                                            
kind: Service                             
metadata:                              
    name: commander                            
spec:                               
    selector:                             
    app: commander                           
    ports:                              
    - protocol: TCP                           
     port: 22282 
     nodePort: 32282                            
     targetPort: 22082                          
    type: NodePort    

かなり奇妙な行動は、私はport場のポイントでもあるのだろうかになります!

+0

ポートフィールドは、クラスタ内のサービス(つまり、サービスにアクセスするポッド)にアクセスするときにはより意味があります。その場合にはポート22282を使用する必要があります。 –

+0

@JavierSalmeronああ、ポートのスコープに関するすべてです。ありがとう –

関連する問題