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.)