これは私が問題の流れを理解する方法です:
ただし、私のコンテナは別のポート、たとえば3000を公開しています。ステップ2または3で80:3000のようなポートマッピングを作成するにはどうすればよいですか?
Kubernetesのドキュメントにはtargetport
やhostport
のような紛らわしいオプションがありますが、役に立ちませんでした。 kubectl port-forward
デバッグのために、ローカル(開発)マシンのポートのみを特定のポッドに転送しているようです。
これらは、GoogleCloudでサービスを設定するために使用するコマンドです。
kubectl run test-app --image=eu.gcr.io/myproject/my_app --port=80
kubectl expose deployment test-app --type="LoadBalancer"
2番目のコマンドにいくつかの引数を追加する必要があることがわかりました。
kubectl expose deployment test-app --type="LoadBalancer" --target-port=3000 --port=80
これにより、着信httpトラフィック(ポート80)をポート3000のポッドに転送するサービスが作成されます。
このすべてを行うためのより良い方法は、yamlファイルを使用することですservice.yaml
およびdeployment.yaml
と呼び出し
kubectl create -f deployment.yaml
kubectl create -f service.yaml
ファイルにはこれらの内容が含まれています
# deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: app-deployment
spec:
replicas: 2
template:
metadata:
labels:
app: test-app
spec:
containers:
- name: user-app
image: eu.gcr.io/myproject/my_app
ports:
- containerPort: 3000
そして
# service.yaml
apiVersion: v1
kind: Service
metadata:
name: app-service
spec:
selector:
app: test-app
ports:
- port: 80
targetPort: 3000
type: LoadBalancer
サービスのセレクターは、デプロイメントのラベルと一致する必要があることに注意してください。