- 印刷する
- PDF
ロードバランサ連動ガイド
- 印刷する
- PDF
Classic環境で利用できます。
Kubernetesのサービスによるロードバランサー連動
ネイバークラウドプラットフォームのNcloud Kubernetes Serviceは、Kubernetesサービス作成時にタイプをLoadBalancerに指定すると、ロードバランサーインスタンスを自動的に作成します。
ロードバランサの設定はサービスマニフェスト(Manifest)のアノテーション(Annotation)によって行います。
次のロードバランサ設定のためのアノテーションを提供します。
設定値 | 説明 | 備考 |
---|---|---|
service.beta.kubernetes.io/ncloud-load-balancer-backend-protocol | ロードバランサプロトコル 次の値のいずれか選択 : tcp, http, https, ssl | 基本値 tcp |
service.beta.kubernetes.io/ncloud-load-balancer-proxy-protocol | プロキシプロトコルを有効にするかどうか。 次の値のいずれかを選択: true/false | ロードバランサプロトコルの値がsslあるいはtcpで選択されているときに有効。 |
service.beta.kubernetes.io/ncloud-load-balancer-internal | 私設ネットワークタイプのロードバランサ生成設定。 次の値のいずれかを選択 : true/false | 基本値 false |
service.beta.kubernetes.io/ncloud-load-balancer-ssl-cert | ロードバランサプロトコルがhttpsあるいはsslのときのlistener構成のためのSSL Certificateの名前 | Certificate Managerに登録されている認証書の名前を入力 |
service.beta.kubernetes.io/ncloud-load-balancer-ssl-ports | ロードバランサインスタンスがhttpsあるいはsslプロトコルであるとき、追加的にインスタンスに割り当てられるポート入力。 ','で区切って入力 | 入力例: "443,6443" |
service.beta.kubernetes.io/ncloud-load-balancer-l7-healthcheck-path | ロードバランサプロトコルがhttpあるいはhttpsのとき、L7 HealthcheckのためのPath | 基本値 "/" |
service.beta.kubernetes.io/ncloud-load-balancer-description | 作成されるロードバランサーインスタンスのメモ入力 | |
service.beta.kubernetes.io/ncloud-load-balancer-algorithm-type | ロードバランシングアルゴリズム 次の値のいずれか選択 : RR(ROUND ROBIN), LC(LEAST_CONNECTION), SIPHS(Source IP Hash) | 基本値 RR |
service.beta.kubernetes.io/ncloud-load-balancer-termination-protection | タイプがLoad Balancer に指定されたService を除去する際、ロードバランサーを自動除去することを防止するオプション | 基本値 false |
クライアントのIPを確認する場合には、service.beta.kubernetes.io
の値をtrue
と宣言します。 詳細は、[Ingressチュートリアル]の参考事項を参照してください。
ロードバランサインスタンス作成
Kubernetesのサービスを通じてロードバランサインスタンスを生成するには、サービスマニフェストのタイプを次のように指定します。
"type": "LoadBalancer"
以下は、そのタイプが適用された yaml 設定ファイルの例です。
私設のネットワーク タイプのロード バランサ インスタンスを生成するためのアノテーションが追加されていることを確認します。
kind: Service
apiVersion: v1
metadata:
name: example-service
annotations:
service.beta.kubernetes.io/ncloud-load-balancer-internal: "true"
spec:
ports:
- port: 8765
targetPort: 9376
selector:
app: example
type: LoadBalancer
上記の内容をnks-lb.yml
にし、kubectl apply -f nks-lb.yml
を通じて配布すると、NAVERクラウドプラットフォームのロードバランサーインスタンスが自動的に作成されます。
生成には水分がかかることがあります。
生成されたロードバランサ インスタンスの私設 IP アドレスを確認するためには、以下のコマンドを利用します。 IP アドレスはEXTERNAL-IP 列で確認できます。
$ kubectl --kubeconfig=$KUBE_CONFIG get svc example-service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
example-service LoadBalancer 172.16.101.104 10.39.10.118 8765:30365/TCP 2m11s
kubectl exposeコマンドを利用したロードバランサインスタンス作成
前述した方法以外にも、kubectl expose
コマンドと--type=LoadBalancer
フラグを利用してロードバランサインスタンスを生成することができます。
ロード バランサ インスタンスの生成を例題するため、以下のコマンドを利用して、my-nginx
名を持つ Deployment を配布します。 この配布でNginxパドを駆動させることができます。
$ kubectl --kubeconfig=$KUBE_CONFIG create deployment --image nginx my-nginx
以下のコマンドを利用して、ロード バランサ インスタンスを作成することができます。
$ kubectl --kubeconfig=$KUBE_CONFIG expose deployment my-nginx --port=80 --type=LoadBalancer
ロードバランサインスタンスを削除する
ロードバランサタイプで作成されたkubernetesサービスリソースは、自動的に作成されたネイバークラウドプラットフォームのロードバランサ(Load Balancer)インスタンスと連動されます。
kerbernetesで該当タイプのサービスを削除する場合、自動的にロードバランサインスタンスも削除されます。
以下のコマンドから、生成されたサービスを確認することができます。 サービスに対するタイプはTYPE 列で確認できます。
$ kubectl --kubeconfig=$KUBE_CONFIG get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
my-nginx LoadBalancer 172.16.188.167 slb-904582.ncloudslb.com 80:32681/TCP 21s
ロード バランサ タイプの kubernetes サービス リソースを削除するために、次のコマンドを利用します。
$ kubectl --kubeconfig=$KUBE_CONFIG delete service my-nginx
service "my-nginx" deleted
kubernetesサービスリソースが削除されると同時に、ロードバランサインスタンスも削除されます。 この作業には数分かかることがあります。