最後のほうでは、サービスの作成方法LoadBalancer
や割り当て方法については簡単に触れています。NodePorts
このドキュメントさまざまなタイプとその機能については説明していますが、サービスに適用する方法については詳しく説明されていません。実行中のサービスを更新し、ロード バランサーを作成して指定されたポートに接続する方法はありますか?
Amazon Web Services を使用してクラスターをホストすると、サービスの作成に最適なロードバランサーがサポートされますが、サービスを変更する方法がわかりません。
編集:
これを試すとエラーが発生しました:
$ kubectl expose service frontend --port=80 --type=LoadBalancer
サーバーからのエラー: サービス「frontend」は既に存在します
答え1
かなりわかりにくいですが、どうやらkubectl expose
新しいサービスを作成することしかできず、既存のサービスを更新できないようです。既存のサービスで実行する場合は、--name
発生していた競合を回避するために、新しいサービスの希望する名前を指定するフラグを渡す必要があるとのことです。
kubectl patch
サービスをその場で更新するには、または のいずれかを使用できるはずです。おそらく最適なアプローチではありませんが、私は個人的に、 を実行し、必要に応じて svc.yaml を更新し (この場合は となるように)、 を実行するkubectl update
という方法でこの種の処理を実行する傾向があります。kubectl get svc svc-name -o yaml > svc.yaml
type: LoadBalancer
kubectl update -f svc.yaml
答え2
これがあなたのケースに適しているかどうかはわかりませんが、より根本的で簡単な方法は、サービスを削除することです(ただし、デプロイメントは削除しません)。
kubectl delete service 'service-name'
デプロイメントを LoadBalancer として再公開します。
kubectl expose deployment/'deployment-name' --type="LoadBalancer"
答え3
次のいずれかを実行できます。
- 対話的に
kubectl edit <SERVICE_NAME>
エディタでタイプを「LoadBalancer」に変更します。 - 一つのコマンドで
kubectl patch <SERVICE_NAME> -p '{"spec":{"type":"LoadBalancer"}}'