Azure Kubernetes Service (AKS)
Prerequisites
Before deploying YugabyteDB on AKS, perform the following:
-
Connect to the Azure Cloud Shell. See Azure bash cloud shell.
-
Register the necessary Azure service providers by running the following:
az provider register -n Microsoft.Network az provider register -n Microsoft.Storage az provider register -n Microsoft.Compute az provider register -n Microsoft.ContainerService
-
Execute the following command to configure a default location. Remember to replace
eastus
with an appropriate Azure location (region) of your choice that supports AKS clusters:az configure --defaults location=eastus
Create an Azure cluster
Create an Azure resource group, a logical group in which Azure resources are deployed and managed.
Execute the following command to specify a default location or pass the location parameter to create the resource:
az group create --name yb-eastus-resource
The resources you create for the AKS cluster will live in this Azure resource.
Create a three-node AKS cluster by running the following command:
az aks create --resource-group yb-eastus-resource --name yb-aks-cluster --node-count 3 --generate-ssh-keys
Configure kubectl
to work with this cluster, as follows:
az aks get-credentials --resource-group yb-eastus-resource --name yb-aks-cluster
Verify the cluster by running the following command:
kubectl get nodes
NAME STATUS ROLES AGE VERSION
aks-nodepool1-25019584-0 Ready agent 4h v1.7.9
aks-nodepool1-25019584-1 Ready agent 4h v1.7.9
aks-nodepool1-25019584-2 Ready agent 4h v1.7.9
Create a YugabyteDB cluster
Create a YugabyteDB cluster by running the following command:
curl -s "https://raw.githubusercontent.com/yugabyte/yugabyte-db/master/cloud/kubernetes/yugabyte-statefulset.yaml" | sed "s/storageClassName: standard/storageClassName: default/g" | kubectl create -f -
service "yb-masters" created
statefulset "yb-master" created
service "yb-tservers" created
statefulset "yb-tserver" created
Check the cluster
Check which pods are running using the following command:
kubectl get pods
NAME READY STATUS RESTARTS AGE
yb-master-0 1/1 Running 0 3m
yb-master-1 1/1 Running 0 3m
yb-master-2 1/1 Running 0 3m
yb-tserver-0 1/1 Running 0 3m
yb-tserver-1 1/1 Running 0 3m
yb-tserver-2 1/1 Running 0 3m
View the persistent volumes, as follows:
kubectl get persistentvolumes
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pvc-849395f7-36f2-11e8-9445-0a58ac1f27f1 1Gi RWO Delete Bound default/datadir-yb-master-0 default 12m
pvc-8495d8cd-36f2-11e8-9445-0a58ac1f27f1 1Gi RWO Delete Bound default/datadir-yb-master-1 default 12m
pvc-8498b836-36f2-11e8-9445-0a58ac1f27f1 1Gi RWO Delete Bound default/datadir-yb-master-2 default 12m
pvc-84abba1a-36f2-11e8-9445-0a58ac1f27f1 1Gi RWO Delete Bound default/datadir-yb-tserver-0 default 12m
pvc-84af3484-36f2-11e8-9445-0a58ac1f27f1 1Gi RWO Delete Bound default/datadir-yb-tserver-1 default 12m
pvc-84b35d19-36f2-11e8-9445-0a58ac1f27f1 1Gi RWO Delete Bound default/datadir-yb-tserver-2 default 12m
You can view all the services by running the following command:
kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP XX.XX.XX.X <none> 443/TCP 23m
yb-masters ClusterIP None <none> 7000/TCP,7100/TCP 17m
yb-tservers ClusterIP None <none> 9000/TCP,9100/TCP,9042/TCP,6379/TCP 14m
Connect to the cluster
To open the YCQL shell (ycqlsh
), run the following command:
kubectl exec -it yb-tserver-0 -- ycqlsh yb-tserver-0
Connected to local cluster at 127.0.0.1:9042.
[ycqlsh 5.0.1 | Cassandra 3.9-SNAPSHOT | CQL spec 3.4.2 | Native protocol v4]
Use HELP for help.
ycqlsh> DESCRIBE KEYSPACES;
system_schema system_auth system
Destroy the YugabyteDB cluster
You can destroy the YugabyteDB cluster by running the following command:
kubectl delete -f https://raw.githubusercontent.com/yugabyte/yugabyte-db/master/cloud/kubernetes/yugabyte-statefulset.yaml
service "yb-masters" deleted
statefulset "yb-master" deleted
service "yb-tservers" deleted
statefulset "yb-tserver" deleted
To destroy the persistent volume claims (and lose all the data), run the following commands:
$ kubectl delete pvc -l app=yb-master
$ kubectl delete pvc -l app=yb-tserver
Destroy the AKS cluster
To destroy the resource you created for the AKS cluster, run the following:
az group delete --name yb-eastus-resource