YugabyteDBのためのOkeのコスト- 2 -ヘルムチャートからインストール


その中で、オラクルクラウドでKubernetesクラスタを作成しました.このポストでは

名前空間


私は、yugabytedbをインストールするために名前空間を作成しています
dev@cloudshell:~ (uk-london-1)$

 kubectl create namespace yb-demo

namespace/yb-demo created

ストレージクラス


デフォルトのStorageClassを変更しますoci-bv , 推奨されるコンテナストレージインターフェース(CSI)ボリュームプラグインoci ( flexvolume 1 ).ブロックボリュームが労働者の計算インスタンスと同じ可用性ドメインにあることを保証するためにもこれを必要とします.
dev@cloudshell:~ (uk-london-1)$

 kubectl patch storageclass oci     \
 -p '{"metadata": {"annotations":{"storageclass.beta.kubernetes.io/\
is-default-class":"false"}}}'

storageclass.storage.k8s.io/oci patched

dev@cloudshell:~ (uk-london-1)$

 kubectl patch storageclass oci-bv \
 -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/\
is-default-class":"true"}}}'

storageclass.storage.k8s.io/oci-bv patched

結果:
dev@cloudshell:~ (uk-london-1)$

 kubectl get sc

NAME               PROVISIONER                       RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
oci                oracle.com/oci                    Delete          Immediate              false                   1h
oci-bv (default)   blockvolume.csi.oraclecloud.com   Delete          WaitForFirstConsumer   true                    1h

ヘルムチャート


ヘルムチャートから最新版をインストールします.
dev@cloudshell:~ (uk-london-1)$

 helm repo add yugabytedb https://charts.yugabyte.com

"yugabytedb" already exists with the same configuration, skipping

dev@cloudshell:~ (uk-london-1)$

 helm repo update

Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "kubernetes-dashboard" chart repository
...Successfully got an update from the "yugabytedb" chart repository
Update Complete. ⎈Happy Helming!⎈

dev@cloudshell:~ (uk-london-1)$

 helm search repo yugabytedb/yugabyte

NAME                    CHART VERSION   APP VERSION     DESCRIPTION                                       
yugabytedb/yugabyte     2.13.0          2.13.0.0-b42    YugabyteDB is the high-performance distributed ...

yugabytedbの設定


ここから2つのものをカスタマイズしますvalues.yaml :
  • ストレージ(各PersistentVolumeClaimに1テラバイトを入れます)
  • 配置情報(YugabyteDBは、それが1つの広告失敗に無言であるために、リーダーとフォロワーの正しいバランスを確実にするために、どの可用性ドメインに関して知っていなければなりません).
  • デフォルトはレプリケーション因子のRF = 3です.
    cat > yb-demo.yaml <<'YAML'
    storage:
      master:
        size: 1Ti
      tserver:
        size: 1Ti
    gflags:
      master:
        placement_cloud: $(curl -s http://169.254.169.254/opc/v1/instance/regionInfo/realmDomainComponent)
        placement_region: $(curl -s http://169.254.169.254/opc/v1/instance/region)
        placement_zone: $(curl -s http://169.254.169.254/opc/v1/instance/ociAdName)
      tserver:
        placement_cloud: $(curl -s http://169.254.169.254/opc/v1/instance/regionInfo/realmDomainComponent)
        placement_region: $(curl -s http://169.254.169.254/opc/v1/instance/region)
        placement_zone: $(curl -s http://169.254.169.254/opc/v1/instance/ociAdName)
    YAML
    
    いくつかのスクリーンショットは、後でこのカスタマイズなしで作られて、50 GBの記憶(OKEの最小)とCloud 1/Zone 1/RACK 1デフォルト配置を示していました.適切な配置情報はこちらです.

    yugabytedbインストール


    インストールは数分かかります.
    dev@cloudshell:~ (uk-london-1)$
    
     helm install yb-demo yugabytedb/yugabyte --namespace yb-demo \
     -f yb-demo.yaml --wait
    
    NAME: yb-demo
    LAST DEPLOYED: Wed Apr  6 08:40:02 2022
    NAMESPACE: yb-demo
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None
    NOTES:
    1. Get YugabyteDB Pods by running this command:
      kubectl --namespace yb-demo get pods
    
    2. Get list of YugabyteDB services that are running:
      kubectl --namespace yb-demo get services
    
    3. Get information about the load balancer services:
      kubectl get svc --namespace yb-demo
    
    4. Connect to one of the tablet server:
      kubectl exec --namespace yb-demo -it yb-tserver-0 bash
    
    5. Run YSQL shell from inside of a tablet server:
      kubectl exec --namespace yb-demo -it yb-tserver-0 -- /home/yugabyte/bin/ysqlsh -h yb-tserver-0.yb-tservers.yb-demo
    
    6. Cleanup YugabyteDB Pods
      For helm 2:
      helm delete yb-demo --purge
      For helm 3:
      helm delete yb-demo -n yb-demo
      NOTE: You need to manually delete the persistent volume
      kubectl delete pvc --namespace yb-demo -l app=yb-master
      kubectl delete pvc --namespace yb-demo -l app=yb-tserver
    

    ポッド


    私の中でつくられるポッドは、ここにありますyb-demo 名前空間:
    dev@cloudshell:~ (uk-london-1)$
    
     kubectl get pods -n yb-demo -o wide
    
    NAME           READY   STATUS    RESTARTS   AGE   IP             NODE          NOMINATED NODE   READINESS GATES
    yb-master-0    2/2     Running   0          12m   10.244.0.4     10.0.10.51    <none>           <none>
    yb-master-1    2/2     Running   0          12m   10.244.1.3     10.0.10.152   <none>           <none>
    yb-master-2    2/2     Running   0          12m   10.244.0.131   10.0.10.103   <none>           <none>
    yb-tserver-0   2/2     Running   0          12m   10.244.0.132   10.0.10.103   <none>           <none>
    yb-tserver-1   2/2     Running   0          12m   10.244.1.4     10.0.10.152   <none>           <none>
    yb-tserver-2   2/2     Running   0          12m   10.244.0.5     10.0.10.51    <none>           <none>
    
    私は3を持っているmaster yugabytedbクラスタの制御面であり、3tserver はデータプレーンです.3が最小であるので、高可用性のために、クラスタは複製因子helm install with --set gflags.tserver.replication_factor=5 例えば).これは3master つはリーダーであり、2つの他の人は、利用可能なドメインの停電の場合にリーダーになる準備ができている.少なくとも3tserver 同じ理由で、多くのノードに接続、ロード、データを分配することができます.

    サービス


    The master and tserver ヘッドレスサービスを通してWebコンソールとSQLエンドポイントを公開するClusterIP それはLoadBalancer :
    
    dev@cloudshell:~ (uk-london-1)$
     kubectl get services -n yb-demo -o wide
    
    NAME                 TYPE           CLUSTER-IP      EXTERNAL-IP       PORT(S)                                                                      AGE   SELECTOR
    yb-master-ui         LoadBalancer   10.96.187.203   141.147.107.246   7000:31290/TCP                                                               17m   app=yb-master
    yb-masters           ClusterIP      None            <none>            7000/TCP,7100/TCP                                                            17m   app=yb-master
    yb-tserver-service   LoadBalancer   10.96.122.104   141.147.106.110   6379:32100/TCP,9042:30198/TCP,5433:31343/TCP                                 17m   app=yb-tserver
    yb-tservers          ClusterIP      None            <none>            9000/TCP,12000/TCP,11000/TCP,13000/TCP,9100/TCP,6379/TCP,9042/TCP,5433/TCP   17m   app=yb-tserver
    
    ポート7000はmaster 私がこの研究室のためにパブリックネットワークに置いた拡張IPでアクセスできるWebコンソールhttp://141.147.107.246:7000

    現時点では、データベースは空ですが、次のポストでSQLを実行します.PostgreSQL互換のポイントは、tserver ロードバランサpostgresql://141.147.106.110:5433/yugabyte :
    $ psql postgresql://141.147.106.110:5433/yugabyte
    psql (13.5, server 11.2-YB-2.13.0.0-b0)
    Type "help" for help.
    
    yugabyte=# select * from yb_servers();
    
                            host                        | port | num_connections | node_type | cloud  |   region    | zone  |                     public_ip
    ----------------------------------------------------+------+-----------------+-----------+--------+-------------+-------+----------------------------------------------------
     yb-tserver-1.yb-tservers.yb-demo.svc.cluster.local | 5433 |               0 | primary   | cloud1 | datacenter1 | rack1 | yb-tserver-1.yb-tservers.yb-demo.svc.cluster.local
     yb-tserver-0.yb-tservers.yb-demo.svc.cluster.local | 5433 |               0 | primary   | cloud1 | datacenter1 | rack1 | yb-tserver-0.yb-tservers.yb-demo.svc.cluster.local
     yb-tserver-2.yb-tservers.yb-demo.svc.cluster.local | 5433 |               0 | primary   | cloud1 | datacenter1 | rack1 | yb-tserver-2.yb-tservers.yb-demo.svc.cluster.local
    
    私はyb_servers() すべてのノードに関する情報を返す関数.注意public_ip Kubernetesクラスタ内のアドレスです.外部から、我々は自動的にOKEによって作成されている負荷のbalancersを使用しても、タグ付きOKEclusterName: yugabytedb :

    であるmaster コンソール141.147.107.246 , ポート7000のリスニング

    もう一つはtserver サービス141.147.106.110 , リスニング
  • 5433 ysqlエンドポイント( PostgreSQL互換API )
  • 9042 YCQL終点( Cassandra互換API )
  • 6379 Eryis Enspoint ( Redis互換API )

  • YugabyteDBは、何も分散SQLデータベースを共有することに加えて、また、マルチAPIです.
    次のポストにPostgreSQL互換APIを使用してロードを生成します.私の目標は、いくつかのストレージとネットワーク転送を使用して、Oracle雲のコストを評価することです