2017-02-09 12 views
1

私は1つのポッドに3つの画像を持つYAMLファイルを作成しました(彼らは127.0.0.1を超えて互いに通信する必要があります)。 yamlファイルにnodeportを定義しました。Kubernetes nodeportが動作しない

  • 連絡先-DB(MySQLデータベース)
  • フロントエンド(角度ウェブサイト)
  • ネットコア(API):

    1話の展開がありますが、それは三つの画像が含まれているapplicationsを定義し

私は3つのサービスを定義しました。すべてのコンテナに対して1つのサービスが定義されています。そこに私はそれにアクセスするためにタイプNodePortを定義しました。

だから私は、ポート番号を取得するためのサービスを取得した:

NAME   CLUSTER-IP  EXTERNAL-IP PORT(S)   AGE 
contacts-db 10.103.67.74  <nodes>  3306:30241/TCP 1d 
front-end  10.107.226.176 <nodes>  80:32195/TCP  1d 
net-core  10.108.146.87 <nodes>  5000:30245/TCP 1d 

そして私は、httpに私のブラウザでナビゲート://:32195とそれだけでロードを保持します。それは接続していません。これは完全なYamlファイルです。

--- 
apiVersion: v1 
kind: Namespace 
metadata: 
    name: three-tier 
--- 
apiVersion: extensions/v1beta1 
kind: Deployment 
metadata: 
    name: applications 
    labels: 
    name: applications 
    namespace: three-tier 
spec: 
    replicas: 1 
    template: 
    metadata: 
     labels: 
     name: applications 
    spec: 
     containers: 
     - name: contacts-db 
     image: mysql/mysql-server #TBD 
     env: 
      - name: MYSQL_ROOT_PASSWORD 
      value: quintor 
      - name: MYSQL_DATABASE 
      value: quintor #TBD 
     ports: 
     - name: mysql 
      containerPort: 3306 
     - name: front-end 
     image: xanvier/angularfrontend #TBD 
     resources: 
      requests: 
      cpu: 100m 
      memory: 100Mi 
     ports: 
     - containerPort: 80 
     - name: net-core 
     image: xanvier/contactsapi #TBD 
     resources: 
      requests: 
      cpu: 100m 
      memory: 100Mi 
     ports: 
     - containerPort: 5000 
--- 
apiVersion: v1 
kind: Service 
metadata: 
    name: contacts-db 
    labels: 
    name: contacts-db 
    namespace: three-tier 
spec: 
    type: NodePort 
    ports: 
    # the port that this service should serve on 
    - port: 3306 
    targetPort: 3306 
    selector: 
    name: contacts-db 
--- 
apiVersion: v1 
kind: Service 
metadata: 
    name: front-end 
    labels: 
    name: front-end 
    namespace: three-tier 
spec: 
    type: NodePort 
    ports: 
    - port: 80 
    targetPort: 80 #nodePort: 30001 
    selector: 
    name: front-end 
--- 
apiVersion: v1 
kind: Service 
metadata: 
    name: net-core 
    labels: 
    name: net-core 
    namespace: three-tier 
spec: 
    type: NodePort 
    ports: 
    - port: 5000 
    targetPort: 5000 #nodePort: 30001 
    selector: 
    name: net-core 
--- 

答えて

3

サービスのセレクタがポッドのラベルと一致しています。あなたのケースでは、定義されたセレクタはコンテナを指し、ポッドを選択するときは何も表示されません。

セレクタを1つ使用するか、コンテナを異なるデプロイメント/ポッドに分割するようにサービスを再定義する必要があります。サービスのために定義されたセレクタがうまくいくかどうかを確認するには

、あなたがそれらを確認することができます。

kubectl get pods -l key=value 

結果が空の場合は、あなたのサービスがあまりにも無効に実行されます。

+1

また、実際にエンドポイント(ポッド)によってサポートされているサービスを、 'kubectl get endpoints'で見ることができます。 –

関連する問題