2つのポートが公開されているGoogle Container Engineでポッドを作成することは可能ですか?ポート8080は着信コンテンツをリッスンし、ポート80はこのコンテンツをクライアントに配信しますか?
ポッドを作成する次のコマンドは、Googleによって例として提供されています。
kubectl run hello-node --image=gcr.io/${PROJECT_ID}/hello-node --port=8080
リスニングポートを定義できないようで、2つ目の「--port =」スイッチを追加すると、1つのポートしか表示されません。 2番目のポートを公開する方法はありますか、それともコンテナごとに1つのポートに制限されていますか?
コマンドラインから、-overridesオプションを使用して複数のポートを指定することができます。
この例では、ポート80と8080の両方を公開しています。
export APP_NAME=app-hello
export IMAGE=gcr.io/google-samples/hello-app:1.0
kubectl run $APP_NAME \
--image=$IMAGE \
--overrides='{"spec": {"template": {"spec": {"containers": [{"name": "'$APP_NAME'", "image": "'$IMAGE'",
"ports": [{"containerPort": 8080, "protocol": "TCP"}, {"containerPort": 80, "protocol": "TCP"}]}]}}}}'
ヘルムを介して必要な場合は、次のように実現できます。
deployment.yaml
ports:
- containerPort: {{ .Values.containerport1 }}
#name: containerport1
- containerPort: {{ .Values.containerport2 }}
#name: containerport2
- containerPort: {{ .Values.containerport3 }}
#name: containerport3
サービスファイルにはポート名が必要です。そうでない場合、レンダリングエラーが発生します。
service.yaml
ports:
- name: containerport1
protocol: TCP
port: {{ .Values.exposedport1 }}
targetPort: {{ .Values.containerport1 }}
- name: containerport2
protocol: TCP
port: {{ .Values.exposedport2 }}
targetPort: {{ .Values.containerport2 }}
- name: containerport3
protocol: TCP
port: {{ .Values.exposedport3 }}
targetPort: {{ .Values.containerport3 }}
値は、ヘルムチャートのインストール中に--setパラメーターを使用して設定できます。
values.yaml
containerport1: 8001
containerport2: 8002
containerport3: 8003
exposedport1: 8004
exposedport2: 8005
exposedport3: 8006
Kubernetesはターゲットポートをサポートしています。
kubectl expose deployment example --type=LoadBalancer --port 8080 --target-port 80
Kubernetesを使用した別の回答で指摘されているように、ターゲティングだけでなく複数のポートも使用できます。
kubectl expose deployment example --type=LoadBalancer --port 8080,8081 --target-port 80