2017-03-20 10 views
0

この要件は主に開発環境用です。Minikubeで展開を作成するときにnodeportを指定します

配備が作成され、Minikubeを通じて公開されているドッカーイメージを更新すると、この配備とサービスを削除して再作成する必要があります。 しかし、私はその特定のサービスに割り当てられたのと同じノードを維持したいと思います。私はMinikubeに任せれば、ランダムなポートが割り当てられることを知っています。しかし、NodePortを指定することはできますか?

次のYamlファイルを使用してデプロイメントを作成し、exposeコマンドでサービスを公開します。

apiVersion: extensions/v1beta1 
kind: Deployment 
metadata: 
    name: dpl_name 
spec: 
    template: 
    metadata: 
     labels: 
     app: app_name 
    spec: 
     containers: 
     - name: ctr_name 
     image: 192.168.42.22:80/imagename:latest 
     ports: 
     - containerPort: 8090 
     volumeMounts: 
     - mountPath: /var/containerdata 
      name: vlm 
     volumes: 
     - name: vlm 
      hostPath: 
      path: '/data/vlm' 

答えて

0

あなたはタイプNodePortのserviceを作成し、その.yaml構成でnodePort値を指定することで、展開を公開することができます:30000

kind: Service 
apiVersion: v1 
metadata: 
    name: app_name 
    labels: 
    app: app_name 
spec: 
    type: NodePort 
    ports: 
    - port: 80 
    targetPort: 8090 
    nodePort: 30000 # <-- 
    selector: 
    app: app_name 

これは常にnodePort値を使用するように指定します

+0

ありがとうございます。できます。これを答えとして受け入れる。私はしかし、いくつかのフォローアップの質問があります: "ポート"は何ですか?私が正しく理解していれば、targetportは要求を転送する場所(コンテナポートと同じ)をサービスに伝えますが、「ポート」は取得できません。 2番目の質問:私はVIPとポートでクラスタ内からサービスにアクセスしようとしましたが、機能しますが、その名前ではできません。私は追加する必要がある何か他にありますか?環境を変えればVIPが変わっても名前を使い続けることができるようにする必要があります。 –

関連する問題