So, the point in the previous blog post was to leverage Persistent Volume Claims – PVC for data when using SQL server that it is needed in a stateful manner. But what happens when we don’t create SQL server in AKS without a PVC?
What are PVCs? As Microsoft states “A PersistentVolumeClaim requests either Disk or File storage of a particular StorageClass, access mode, and size. The Kubernetes API server can dynamically provision the underlying storage resource in Azure if there is no existing resource to fulfill the claim based on the defined StorageClass.”
Please see this link for more details https://docs.microsoft.com/en-us/azure/aks/concepts-storage#persistent-volume-claims
Anyways, my YAML file is below with NO PVC established.
apiVersion: apps/v1 kind: Deployment metadata: name: mssql-deploymentnopvc spec: replicas: 1 selector: matchLabels: app: mssql template: metadata: labels: app: mssql spec: terminationGracePeriodSeconds: 30 hostname: mssqlinst securityContext: fsGroup: 10001 containers: - name: mssql image: mcr.microsoft.com/mssql/server:2019-latest ports: - containerPort: 1433 env: - name: MSSQL_PID value: "Developer" - name: ACCEPT_EULA value: "Y" - name: SA_PASSWORD valueFrom: secretKeyRef: name: mssql key: SA_PASSWORD --- apiVersion: v1 kind: Service metadata: name: mssql-deploymentnopvc spec: selector: app: mssql ports: - protocol: TCP port: 1433 targetPort: 1433 type: LoadBalancer
I apply it and connect to service endpoint to via SSMS.
The one called mssql-deploymentnopvc. I then connect and create a database and a sample table with some data.
I am now going to go to the underlying virtual machines (within a scale set) and stop and start them. These are the compute running my nodes in Azure.
Now I connect back to SQL server – guess what, everything is gone, hence why we need to setup a PVC, that is if you need to.
Next week, we will look at making this stateful.