2016-11-02 10 views
2

私は、LoadBalancerタイプを使用して、ポート30000(すべてのKubernetes NodePortsが私の理解から30000-32767の範囲内になければなりません)に公に公開されたKubernetesサービス(Python Flaskアプリケーション)を持っています。私は公衆向けのサービスが標準のHTTPポート80にアクセスできるようにする必要があります。これを行う最善の方法は何ですか?ポート80でKubernetesサービスにアクセス

答えて

2

あなたは、クラウド・プロバイダーのLBを使用したい場合は、あなたのアプリケーションがポート8080上で公開し、あなたが公にポート80でそれを公開すると仮定すると、ここでの設定はどのように見えるべきかです:

apiVersion: v1 
kind: Service 
metadata: 
    name: flask_app 
    labels: 
    run: flask_app 
    namespace: default 
spec: 
    type: LoadBalancer 
    ports: 
    - port: 80 
    targetPort: 8080 
    protocol: TCP 
    name: http 
    selector: 
    run: flask_app 
--- 
apiVersion: extensions/v1beta1 
kind: Deployment 
metadata: 
    name: flask_app 
    namespace: default 
spec: 
    replicas: 1 
    strategy: 
    rollingUpdate: 
     maxSurge: 1 
     maxUnavailable: 0 
    type: RollingUpdate 
    template: 
    metadata: 
     labels: 
     run: flask_app 
    spec: 
     restartPolicy: Always 
     terminationGracePeriodSeconds: 60 
     containers: 
     - name: flask_app 
     image: repo/flask_app:latest 
     ports: 
     - containerPort: 8080 
     imagePullPolicy: Always 

別のオプションがにありますたとえばNginxなどの入力コントローラを使用します。あなたはどんなcloudprovidersを使用しない場合

http://kubernetes.io/docs/user-guide/ingress/

私は、あなただけのサービスでは、ノード上でこのIPアップexternalIPsオプションを設定し、KUBE-プロキシ意志のルートができGitHub

+0

実施例のリンクが壊れています。ターゲットが別の場所に存在する場合は修正し、ターゲットが存在しなくなった場合は削除してください。 –

2

の実施例をしていますこのIPからあなたのポッドへのトラフィック。

{ 
    "kind": "Service", 
    "apiVersion": "v1", 
    "metadata": { 
     "name": "my-service" 
    }, 
    "spec": { 
     "selector": { 
      "app": "MyApp" 
     }, 
     "ports": [ 
      { 
       "name": "http", 
       "protocol": "TCP", 
       "port": 80, 
       "targetPort": 9376 
      } 
     ], 
     "externalIPs" : [ 
      "80.11.12.10" 
     ] 
    } 
} 

http://kubernetes.io/docs/user-guide/services/#external-ips

関連する問題