- 印刷する
- PDF
Load Balancer インスタンスの連携
- 印刷する
- PDF
最新のコンテンツが反映されていません。早急にアップデート内容をご提供できるよう努めております。最新のコンテンツ内容は韓国語ページをご参照ください。
VPC環境で利用できます。
Ncloud Kubernetes Serviceを利用するためにサービスを作成する際、そのサービスと連携する Load Balancerインスタンスを自動的に作成できます。
Kubernetesと連携する Load Balancerインスタンスの管理
Kubernetesで作成した NAVERクラウドプラットフォームのロードバランサを Kubernetesの Serviceリソースではなくコンソールと APIを通じて設定する場合、状態の同期に問題が発生する場合があります。作成したロードバランサに関する設定の変更は、必ず Kubernetesで作成した Serviceリソースを修正して行ってください。
インスタンス作成
Ncloud Cloud Kubernetes Serviceと連携する Load Balancerインスタンスを作成するには、サービスマニフェストのタイプを LoadBalancerに指定し、service.beta.kubernetes.io/ncloud-load-balancer-layer-type
アノテーションを nplbまたは nlbに設定します。
- nplb: ネットワークプロキシロードバランサ(NPLB)インスタンスを作成します。
- nlb: ネットワークロードバランサ(NLB)インスタンスが作成されます。
インスタンスのプロパティ設定
サービスマニフェストのアノテーションを用いて作成するインスタンスのプロパティを設定します。インスタンスのプロパティを設定するには、インスタンスを作成する際に下記の表を参照して metadata.annotationsの値を入力します。
- ネットワークロードバランサ(NPLB)
アノテーション | 説明 | 備考 |
---|---|---|
service.beta.kubernetes.io/ncloud-load-balancer-layer-type | ロードバランサのネットワーク層タイプを設定 次の値の中から1つ選択: nplb、nlb | デフォルト値 nplb |
service.beta.kubernetes.io/ncloud-load-balancer-size | ロードバランサの負荷処理性能 次の値の中から1つ選択: SMALL、MEDIUM、LARGE | デフォルト値 SMALL |
service.beta.kubernetes.io/ncloud-load-balancer-internal | プライベートネットワークタイプのロードバランサ作成を設定 次の値の中から1つ選択: "true" 、"false" | デフォルト値 "false" |
service.beta.kubernetes.io/ncloud-load-balancer-retain-public-ip-on-termination | ロードバランサの削除時に割り当てられたグローバル IPアドレスを保存する設定。グローバル IPアドレスが割り当てられたロードバランサにのみ適用。 次の値の中から1つ選択: "true" 、"false" | デフォルト値 "false" |
service.beta.kubernetes.io/ncloud-load-balancer-description | 作成するロードバランサインスタンスについてメモを入力 | - |
service.beta.kubernetes.io/ncloud-load-balancer-termination-protection | タイプが LoadBalancerに指定された Serviceを削除する場合、ロードバランサの自動削除を防止する設定 次の値の中から1つ選択: "true" 、"false" | デフォルト値 "false" |
service.beta.kubernetes.io/ncloud-load-balancer-subnet-id | ロードバランサを作成するためのロードバランサ専用サブネットの ID値 | デフォルトで kube-system内の ncloud-config名の configmap内の lbSubnetNoを使用 |
service.beta.kubernetes.io/ncloud-load-balancer-ssl-certificate-no | プロトコルが TLSのリスナーに適用する Certificate Managerの証明書番号 - 証明書番号は Resource Managerの nrnで確認できます。(例: nrn:PUB:CertificateManager::000:Certificate/External/${certificateNo}) | - |
service.beta.kubernetes.io/ncloud-load-balancer-tls-ports | TLSを適用するポートリスト。 e.g. "443,6443" | デフォルト値 "443" 、 コンマで区切られた値を使用可能 |
service.beta.kubernetes.io/ncloud-load-balancer-tls-min-version | TLS最小サポートバージョンタイプコード 次の値の中から1つ選択: TLSV10、TLSV11、TLSV12 | デフォルト値 TLSV10 |
service.beta.kubernetes.io/ncloud-load-balancer-proxy-protocol | プロキシプロトコルの有効化有無。次の値の中から1つ選択: "true" 、"false" | デフォルト値 "false" |
service.beta.kubernetes.io/ncloud-load-balancer-algorithm-type-code | Algorithmタイプに Round Robin(RR) Source Ip Hash(SIPHS) Least Connection(LC)の中から1つを設定可能。次の値の中から1つ選択: RR、SIPHS、LC | デフォルト値 RR |
service.beta.kubernetes.io/ncloud-load-balancer-enable-skip-acg-update | ACGのアップデート設定有無。次の値の中から1つ選択: "true" 、"false" | デフォルト値 "false" |
service.beta.kubernetes.io/ncloud-load-balancer-idle-timeout | ロードバランサの Idle Timeoutを設定(1~3600) | デフォルト値 60 |
service.beta.kubernetes.io/ncloud-load-balancer-cipher-suite-list | リスナーでサポートする Cipher Suiteリスト、(例: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) | デフォルト値リスナーでサポートするすべての cipher suite |
- ネットワークロードバランサ(NLB)
アノテーション | 説明 | 備考 |
---|---|---|
service.beta.kubernetes.io/ncloud-load-balancer-layer-type | ロードバランサのネットワーク層タイプを設定 次の値の中から1つ選択: nplb, nlb | デフォルト値 nplb ネットワークロードバランサを作成するには nlbと入力 |
service.beta.kubernetes.io/ncloud-load-balancer-size | ロードバランサの負荷処理性能 次の値の中から1つ選択: SMALL, MEDIUM, LARGE、DYNAMIC | デフォルト値はDYNAMICです。**新規作成時にはDYNAMICのみ設定可能です。**DYNAMICタイプでない場合、一部のロードバランサーにおいてDYNAMICアノテーションを適用すると、DYNAMICタイプに変更可能です。DYNAMICタイプから他のタイプへの変更は不可能です。 |
service.beta.kubernetes.io/ncloud-load-balancer-internal | プライベートネットワークタイプのロードバランサ作成を設定 次の値の中から1つ選択: "true" 、"false" | デフォルト値 "false" |
service.beta.kubernetes.io/ncloud-load-balancer-retain-public-ip-on-termination | ロードバランサの削除時に割り当てられたグローバル IPアドレスを保存する設定。グローバル IPアドレスが割り当てられたロードバランサにのみ適用。 次の値の中から1つ選択: "true" 、"false" | デフォルト値 "false" |
service.beta.kubernetes.io/ncloud-load-balancer-description | 作成するロードバランサインスタンスについてメモを入力 | - |
service.beta.kubernetes.io/ncloud-load-balancer-termination-protection | タイプが LoadBalancerに指定された Serviceを削除する場合、ロードバランサの自動削除を防止する設定 次の値の中から1つ選択: "true" 、"false" | デフォルト値 "false" |
service.beta.kubernetes.io/ncloud-load-balancer-inbound-source | ACGルールの Inboundアクセスソースとして使用する値 例) 119.194.195.143/32,143.248.12.77/32 | デフォルト 0.0.0.0/0 |
service.beta.kubernetes.io/ncloud-load-balancer-subnet-id | ロードバランサを作成するためのロードバランサ専用サブネットの ID値 | デフォルト値として kube-system内の ncloud-configという名前を持つ configmap内の lbSubnetNoを使用 |
service.beta.kubernetes.io/ncloud-load-balancer-algorithm-type-code | Algorithmタイプに Hash(MH) Round Robin(RR)の中から1つを設定可能。次の値の中から1つ選択: MH、RR | デフォルト値 MH |
service.beta.kubernetes.io/ncloud-load-balancer-enable-skip-acg-update | ACGのアップデート設定有無。次の値の中から1つ選択: "true" 、"false" | デフォルト値 "false" |
service.beta.kubernetes.io/ncloud-load-balancer-sticky-session | Sticky Sessionの設定有無。次の値の中から1つ選択: "true" 、"false" | デフォルト値 "false" |
ロードバランサの Subnetタイプに応じたグローバルおよびプライベート IPアドレスの割り当て方式
ロードバランサ Subnetには Public Subnetと Private Subnetの2つのタイプがあります。各タイプは、グローバルおよびプライベート IPアドレスが付与されたロードバランサを作成するために必要です。ロードバランサを作成する際、kube-system名前空間内の ncloud-config ConfigMapで定義された lbPublicSubnetNoと lbSubnetNoフィールドにある Subnet IDを使用します。この Subnet IDはロードバランサを作成する時、service.beta.kubernetes.io/ncloud-load-balancer-subnet-id
annotationを利用して他の Subnet IDを使うように指定できます。
1. Public Subnet(Internet Gateway専用)
グローバル IPアドレスが付与されたロードバランサを作成するためには、Public Subnetが必要です。NAVERクラウドプラットフォームコンソールの VPC > Public IP メニューからグローバル IPアドレスを申し込み、これをロードバランサに割り当てることができます。グローバル IPアドレスを指定しないと、新規グローバル IPアドレスが申し込まれます。
2. Private Subnet
VPC内でロードバランサをプライベート IPアドレスが割り当てられた Private Subnetに作成するには、そのサブネットが必要です。
インスタンスプロパティ設定のユースケース
インスタンスのプロパティ設定に関するユースケースは、Load Balancerプロパティ設定のユースケースをご参照ください。
ネットワークプロキシロードバランサ(NPLB)インスタンス作成のユースケース
以下は、Kubernetesと連携する NPLBインスタンスを作成するユースケースです。
- 以下のサンプルコードを nks-lb.ymlファイルとして保存します。
- 以下のサンプルコードで、プライベートネットワークプロキシタイプのロードバランサインスタンスを作成するためのアノテーションを確認できます。
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx
spec:
replicas: 1
selector:
matchLabels:
run: my-nginx
template:
metadata:
labels:
run: my-nginx
spec:
containers:
- name: my-nginx
image: nginx
ports:
- containerPort: 80
---
kind: Service
apiVersion: v1
metadata:
name: my-nginx
annotations:
service.beta.kubernetes.io/ncloud-load-balancer-layer-type: "nplb"
service.beta.kubernetes.io/ncloud-load-balancer-internal: "true"
service.beta.kubernetes.io/ncloud-load-balancer-size: "SMALL"
spec:
ports:
- port: 80
targetPort: 80
selector:
run: my-nginx
type: LoadBalancer
kubectl apply -f nks-lb.yml
コマンドを実行してリリースします。
ネットワークロードバランサ(NLB)インスタンス作成のユースケース
- 以下のサンプルコードを nks-lb.ymlファイルとして保存します。
- 以下のサンプルコードで、プライベートネットワークプロキシタイプのロードバランサインスタンスを作成するためのアノテーションを確認できます。
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx
spec:
replicas: 1
selector:
matchLabels:
run: my-nginx
template:
metadata:
labels:
run: my-nginx
spec:
containers:
- name: my-nginx
image: nginx
ports:
- containerPort: 80
---
kind: Service
apiVersion: v1
metadata:
name: my-nginx
annotations:
service.beta.kubernetes.io/ncloud-load-balancer-layer-type: "nlb"
service.beta.kubernetes.io/ncloud-load-balancer-internal: "true"
service.beta.kubernetes.io/ncloud-load-balancer-size: "SMALL"
spec:
ports:
- port: 80
targetPort: 80
selector:
run: my-nginx
type: LoadBalancer
kubectl apply -f nks-lb.yml
コマンドを実行してリリースします。
作成されたロードバランサインスタンスの External IPアドレス確認
作成されたインスタンスの external IPアドレスを確認するには、下記のコマンドを実行します。
$ kubectl --kubeconfig $KUBE_CONFIG get svc example-service
EXTERNAL-IP列に当該インスタンスの external 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
インスタンス削除
LoadBalancerタイプで作成した Kubernetesサービスを削除すると、連携された Load Balancerインスタンスが自動的に一緒に削除されます。
LoadBalancerタイプで作成した Kubernetesサービスを確認して削除する方法は、次の通りです。
- 以下のコマンドを実行して作成した Kubernetesサービスを確認します。
- 結果値の TYPE欄で各サービスのタイプを確認できます。
$ kubectl --kubeconfig $KUBE_CONFIG get service
- 下記のコマンドを実行して LoadBalancerタイプのサービスを削除します。
$ kubectl --kubeconfig $KUBE_CONFIG delete service my-nginx