2017-05-04 15 views
1

kubernetes 1.3.0でkubernetes環境をセットアップし、同じホスト上でマスターとノードを実行すると、RCでTomcat Webアプリケーションを実行し、ドッカーで1つのサービスがすべて正常に動作しているようですcurlコマンドで内部ネットワーク経由でサービスにアクセスできますが、パブリックIPでインターネットからサービスにアクセスしようとすると失敗します。外部ネットワーク経由でkubernetesサービスにアクセスできない

RCのconfigureがある:

apiVersion: v1 
kind: ReplicationController 
metadata: 
    name: myweb 
spec: 
    replicas: 2 
    selector: 
     app: myweb 
    template: 
     metadata: 
     labels: 
      app: myweb 
     spec: 
     containers: 
     - name: myweb 
      image: kubeguide/tomcat-app:v1 
      ports: 
      - containerPort: 8080 
      env: 
      - name: MYSQL_SERVICE_HOST 
      value: "mysql" 
      - name: MYSQL_SERVICE_PORT 
      value: '3306' 

サービスconfigureがある:

apiVersion: v1 
kind: Service 
metadata: 
    name: myweb 
spec: 
    type: NodePort 
    ports: 
    - port: 8080 
     nodePort: 30001 
    selector: 
    app: myweb 

見ての通り、ポートがKubernetesサービスで聴くと、サービスは、30001ポートを聞いて、それがすることはできませんインターネット経由でアクセスしますが、同じホスト上で nc -l 30001 コマンドを使用するとインターネットにアクセスすることができます。つまり、ネットワーク構成がシステムレイヤー上で適切です。

ホストのiptables設定では、すべての接続を受け入れますが、問題は引き続き発生します。

なぜkubernetesサービスでアクセスできますか?私が欠場する設定はありますか?

答えて

0

ホストネットワークを使用してkubernetesサービスを公開するには、Ingressルールを使用できます。

参照してください。あなたの場合https://kubernetes.io/docs/concepts/services-networking/ingress/

を次のように入口ルールはなります。 apiVersion: extensions/v1beta1 kind: Ingress metadata: name: nginx-test spec: rules: - host: test.example.com http: paths: - backend: serviceName: myweb servicePort: 30001 path:/

+0

ありがとうございます。あなたがまだ言ったように私はしません、それは私がkubernetesの高度なスキルであることを発見したので、私は将来私の研究でそれを試してみます。しかし、あなたがnginx proxypassで言ったように私は似ています、それは動作し、アプリケーションにアクセスすることができます。 –

関連する問題