[解決済み】Kubernetesのサービス定義におけるtargetPortとportの違いについて
質問
Kubernetes
Service
を持つことができます。
targetPort
と
port
をサービス定義に追加してください。
kind: Service
apiVersion: v1
metadata:
name: my-service
spec:
selector:
app: MyApp
ports:
- protocol: TCP
port: 80
targetPort: 9376
とはどのような違いがあるのでしょうか?
port
と
targetPort
?
解決方法は?
サービス これは、トラフィックをポッドに誘導するものです。
ターゲットポート これは、コンテナ内でアプリケーションが実行される実際のポートです。
ポートです。 コンテナ内のアプリケーションが、異なるポートで異なるサービスを提供することがあります。
例
実際のアプリケーションは、以下のように実行できます。
8080
で、このアプリケーションのヘルスチェックは
8089
のポートに接続します。
そのため、もしポートなしでサービスにアクセスした場合、コンテナのどのポートにリクエストをリダイレクトすればよいのかがわかりません。サービスには、コンテナの特定のポートにアクセスできるようなマッピングが必要です。
kind: Service
apiVersion: v1
metadata:
name: my-service
spec:
selector:
app: MyApp
ports:
- name: http
nodePort: 30475
port: 8089
protocol: TCP
targetPort: 8080
- name: metrics
nodePort: 31261
port: 5555
protocol: TCP
targetPort: 5555
- name: health
nodePort: 30013
port: 8443
protocol: TCP
targetPort: 8085
を打つと
my-service:8089
にルーティングされます。
8080
のコンテナ(targetPort)の 同様に、もし
my-service:8443
にリダイレクトされます。
8085
のコンテナ(targetPort)の しかし、この
myservice:8089
はkubernetesクラスタの内部で、あるアプリケーションが他のアプリケーションと通信したいときに使用されます。そのため、クラスタの外からサービスにアクセスするには、kubernetesが動作しているホストマシンのポートを公開する必要があります。
コンテナのポートにトラフィックがリダイレクトされるように。これは
node port
(ホストマシンで公開されたポート)。
上の例では、クラスタの外からサービス (Postman やその他のクライアント) を呼び出すには
host_ip:nodePort
あなたのホストマシンのIPが
10.10.20.20
を実行すると、http、metrics、healthの各サービスを実行することができます。
10.10.20.20:30475
,
10.10.20.20:31261
,
10.10.20.20:30013
.
編集 以下のように編集されました。 レードワルド というコメントがあります。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン