Alibaba Cloud Server Load Balancer を利用してサービスにアクセスできます。

コマンドラインを利用した操作

  1. コマンドラインを利用して Nginx アプリケーションを作成します。
    root@master # kubectl run nginx --image=registry.aliyuncs.com/acs/netdia:latest
    root@master # kubectl get po 
    NAME READY STATUS RESTARTS AGE
    nginx-2721357637-dvwq3 1/1 Running 1 6s
  2. Nginx アプリケーションへの Alibaba Cloud Server Load Balancer サービスを作成し、type=LoadBalancer を設定し、Nginx サーバーをインターネットに公開します。
    root@master # kubectl expose deployment nginx --port=80 --target-port=80 --type=LoadBalancer
    root@master # kubectl get svc
    NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
    nginx 172.19.10.209 101.37.192.20 80:31891/TCP 4s
  3. ブラウザから http://101.37.192.20 へアクセスし、お使いの Nginx サービスへ移動します。

詳細情報

Alibaba Cloud Server Load Balancer により、ヘルスチェック、請求方法および負荷分散などのパラメーター設定もサポートされています。 詳しくは、「Server Load Balancer 設定パラメーター」をご参照ください。

アノテーション

Alibaba Cloud では、アノテーションを利用することにより、多くの Server Load Balancer 機能がサポートされます。

既存のイントラネット Server Load Balancer インスタンスの使用

2 つのアノテーションを設定する必要があります。 お使いの Server Load Balancer インスタンス ID に置き換えます。

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alicloud-loadbalancer-address-type: intranet
    service.beta.kubernetes.io/alicloud-loadbalancer-id: your-loadbalancer-id
  labels:
    run: nginx
  name: nginx
  namespace: default
spec:
  ports:
  - name: web
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: nginx
  sessionAffinity: None
  type: LoadBalancer

前出の内容を "slb.svc" として保存し、コマンド kubectl apply -f slb.svc を実行します。

HTTPS タイプ Server Load Balancer インスタンスの作成

Alibaba Cloud コンソールで証明書を作成し、"cert-id" を登録します。 その後、以下のアノテーションを使用し、HTTPS タイプ Server Load Balancer インスタンスを作成します。

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alicloud-loadbalancer-cert-id: your-cert-id
    service.beta.kubernetes.io/alicloud-loadbalancer-protocol-port: "https:443"
  labels:
    run: nginx
  name: nginx
  namespace: default
spec:
  ports:
  - name: web
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    run: nginx
  sessionAffinity: None
  type: LoadBalancer
アノテーションは大文字と小文字を区別します。
アノテーション 説明 デフォルト値
service.beta.kubernetes.io/alicloud-loadbalancer-protocol-port コンマ (,) を使用し複数の値を分割します。 たとえば、"https:443,http:80" となります。 なし
service.beta.kubernetes.io/alicloud-loadbalancer-address-type 値は "Internet" または "Intranet" となります。 Internet
service.beta.kubernetes.io/alicloud-loadbalancer-slb-network-type Server Load Balancer ネットワークタイプ 値は "Classic" または "VPC" となります。 Classic
service.beta.kubernetes.io/alicloud-loadbalancer-charge-type 値は "paybytraffic" または "paybybandwidth" となります。 paybybandwidth
service.beta.kubernetes.io/alicloud-loadbalancer-id Server Load Balancer インスタンス ID です。 "loadbalancer-id" を持つ既存の Server Load Balancer を指定すると、既存のリスナーは上書きされます。 サービスが削除された場合、Server Load Balancer は削除されません。 なし
service.beta.kubernetes.io/alicloud-loadbalancer-backend-label ラベルを使用し、どのノードが Server Load Balancer バックエンドにマウントされるかを指定します。 なし
service.beta.kubernetes.io/alicloud-loadbalancer-region Server Load Balancer があるリージョンです。 なし
service.beta.kubernetes.io/alicloud-loadbalancer-bandwidth Server Load Balancer 帯域幅です。 50
service.beta.kubernetes.io/alicloud-loadbalancer-cert-id Alibaba Cloud での証明書の ID です。 まず、証明書がアップロードされている必要があります。 “”
service.beta.kubernetes.io/alicloud-loadbalancer-health-check-flag 値は "on" または "off" です。 デフォルト値は "off" です。 TCP パラメーターを変更する必要はありません。デフォルトで TCP によりヘルスチェックが有効化され、設定できないためです。
service.beta.kubernetes.io/alicloud-loadbalancer-health-check-type 『ヘルスチェック』をご参照ください。
service.beta.kubernetes.io/alicloud-loadbalancer-health-check-uri 『ヘルスチェック』をご参照ください。
service.beta.kubernetes.io/alicloud-loadbalancer-health-check-connect-port 『ヘルスチェック』をご参照ください。
service.beta.kubernetes.io/alicloud-loadbalancer-healthy-threshold 『ヘルスチェック』をご参照ください。
service.beta.kubernetes.io/alicloud-loadbalancer-unhealthy-threshold 『ヘルスチェック』をご参照ください。
service.beta.kubernetes.io/alicloud-loadbalancer-health-check-interval 『ヘルスチェック』をご参照ください。
service.beta.kubernetes.io/alicloud-loadbalancer-health-check-connect-timeout 『ヘルスチェック』をご参照ください。
service.beta.kubernetes.io/alicloud-loadbalancer-health-check-timeout 『ヘルスチェック』をご参照ください。