YugabyteDB의 OKE 비용 - 2 - Helm 차트에서 설치
13254 단어 oraclecloudkubernetesyugabytedb
네임스페이스
YugabyteDB를 설치할 네임스페이스를 만들고 있습니다.
dev@cloudshell:~ (uk-london-1)$
kubectl create namespace yb-demo
namespace/yb-demo created
스토리지 클래스
기본 StorageClass를 기본값
oci-bv
(FlexVolume 1)이 아닌 권장 CSI(Container Storage Interface) 볼륨 플러그인인 oci
로 변경하고 있습니다. 블록 볼륨이 작업자의 컴퓨트 인스턴스와 동일한 가용성 도메인에 있는지 확인하기 위해서도 필요합니다.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
투구 차트
Helm Chart에서 최신 버전을 설치하겠습니다.
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 구성
여기에서 values.yaml에서 두 가지를 사용자 지정합니다.
기본값은 복제 계수 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
나중에 일부 스크린샷은 이 사용자 지정 없이 촬영되었으며 50GB 스토리지(OKE에서 최소) 및 cloud1/zone1/rack1 기본 배치를 보여줍니다. 올바른 배치 정보는 다음과 같습니다.
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>
YugabyteDB 클러스터의 컨트롤 플레인인 3개
master
와 데이터 플레인인 3개tserver
가 있습니다. 고가용성을 위해 클러스터가 복제 팩터 RF=3에 있기 때문에 3이 최소값입니다(예: helm install
에서 --set gflags.tserver.replication_factor=5
로 변경할 수 있음). 이것은 3master
을 의미합니다. 여기서 하나는 리더이고 다른 두 개는 팔로워이며 가용성 도메인 중단 시 리더가 될 준비가 되어 있습니다. 그리고 같은 이유로 최소 3개tserver
는 연결, 로드 및 데이터를 여러 노드에 분산하기 위해 더 많이 가질 수 있습니다.서비스
master
및 tserver
는 ClusterIP
를 통해 액세스할 수 있는 헤드리스 서비스LoadBalancer
를 통해 웹 콘솔 및 SQL 끝점을 노출합니다.
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로 액세스할 수 있으며 이 실습을 위해 공용 네트워크에 설정했습니다. 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 클러스터 내의 주소입니다. 외부에서는 OKEclusterName: yugabytedb
로 태그가 지정된 OKE에서 자동으로 생성된 로드 밸런서를 사용합니다.master
콘솔141.147.107.246
이 켜져 있고 포트 7000에서 수신 대기 중입니다.다른 하나는
tserver
서비스, 141.147.106.110
이며 다음에서 수신합니다.YugabyteDB는 비공유 분산 SQL 데이터베이스일 뿐만 아니라 다중 API이기 때문입니다.
다음 게시물에서 일부 로드를 생성하기 위해 PostgreSQL 호환 API를 사용하겠습니다. 내 목표는 일부 스토리지 및 네트워크 전송을 사용하여 Oracle Cloud의 비용을 평가하는 것입니다.
Reference
이 문제에 관하여(YugabyteDB의 OKE 비용 - 2 - Helm 차트에서 설치), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/franckpachot/the-cost-of-oke-for-yugabytedb-2-install-from-helm-chart-b7l텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)