Как развернуть SQL Server Express на Docker Desktop Kubernetes - PullRequest
0 голосов
/ 13 июля 2020

Я изучал «Kubernetes Up and Running» Хайтауэра и др. (Первое издание), глава 13, где они обсуждали создание надежного MySQL синглтона (поскольку я только что обнаружил, что существует второе издание, я думаю, что я скоро куплю его).

Используя их MySQL надежный пример синглтона в качестве модели, я искал несколько примеров файлов YAML для аналогичного развертывания с Microsoft SQL Server (Express ) на Docker Desktop для Kubernetes.

Очевидно, мне нужны файлы YAML для развертывания

  1. Постоянный том
  2. Требование тома (это должно быть NFS?)
  3. SQL Сервер (Express версия) набор реплик (несмотря на то, что это всего лишь синглтон).

Я пробовал этот пример но я запутался, потому что он не содержит постоянного тома и утверждения и не работает. Я получаю сообщение об ошибке

Ошибка: невозможно распознать «sqlserver.yml»: нет совпадений для вида «Deployment» в версии «apps / v1beta1»

Может кто-нибудь, пожалуйста указать мне несколько примеров файлов YAML, которые не Azure указаны c, которые будут работать на Docker Desktop Kubernetes для Windows 10? После отладки моего приложения я хочу развернуть его на Azure (AKS).

Среда, 15 июля 2020 г. Обновление

Я пропустил "-n" namespace "для команды установки helm (возможно, потому, что я использую Helm, а вы используете helm v2?).

Эта команда установки по-прежнему не работает. Затем я сделал

helm repo add stable https://kubernetes-charts.storage.googleapis.com/

Теперь эта команда работает:

helm install todo-app-database stable/mssql-linux

Progress!

Когда я делаю «k get pods», я вижу, что моя задача- app-ms sql - linux база данных находится в состоянии ожидания. Итак, я сделал

kubectl get events

и вижу

Warning   FailedScheduling   pod/todo-app-database-mssql-linux-8668d9b88c-lsh5l   0/1 nodes are available: 1 Insufficient memory.

Я искал в Google запрос «Недостаточно памяти Kubernetes» и не нашел совпадения.

I Подозреваю, что это проблема, указанная с c на «Docker Desktop Kubernetes».

Когда я смотрю на вывод для

helm -n ns-todolistdemo template todo-app-database stable/mssql-linux

, я вижу, что развертывание требует 2Gi. (Интересно: когда я использую команду шаблона, "-n ns-todolistdemo" не вызывает ошибку, как это происходит с командой установки).

Так что я делаю

kubectl describe deployment todo-app-database-mssql-linux >todo-app-database-mssql-linux.yaml

Я редактирую файл yaml, чтобы изменить 2Gi на 1Gi.

kubectl apply -f todo-app-database-mssql-linux.yaml

Я получаю эту ошибку:

error: error parsing todo-app-database-mssql-linux.yaml: error converting YAML to JSON: yaml: line 9: mapping values are not allowed in this context

Хм ... это не сработало. Я пытаюсь удалить:

kubectl delete deployment todo-app-database-mssql-linux
kubectl create -f todo-app-database-mssql-linux.yaml

Я получаю эту ошибку:

error: error validating "todo-app-database-mssql-linux.yaml": error validating data: invalid object to validate; if you choose to ignore these errors, turn validation off with --validate=false

Поэтому я пытаюсь применить:

kubectl apply -f todo-app-database-mssql-linux.yaml

Та же ошибка!

Шукс .... Есть ли способ отрегулировать выделение памяти для Docker Desktop?

Спасибо

Siegfried

1 Ответ

1 голос
/ 13 июля 2020

Короткий ответ

https://github.com/helm/charts/blob/master/stable/mssql-linux/templates/pvc-master.yaml

Подробный ответ

Docker Для настольных ПК уже есть StorageClass по умолчанию: #

This storage class is responsible for auto-provisioning of PV whenever you create a PVC.

If you have a YAML definition of PVC (persistent volume claim), you just need to keep storageClass empty, so it will use the default.

k get storageclass
NAME                 PROVISIONER                                       AGE
hostpath (default)   docker.io/hostpath                                11d

This is fair enough as Docker-For-Desktop Cluster is a one node cluster. So if your DB crashes and the cluster opens it again , it will not move to another node, because simply, you have a single node :)

Now should write the YAML of PVC from scratch ?

No , you don't need. Because Helm should be your best friend.

( I explained below Why you have to use Helm even without deep learning curve)

Fortunately, the community provides a chart called стабильный / мс sql - linux .. Давайте запустим его вместе:

helm -n <your-namespace> install todo-app-database stable/mssql-linux
# helm -n <namespace> install <release-name> <chart-name-from-community>

Если вы хотите проверить YAML (а именно PV C), вычисленный Helm, вы может запускать template вместо install

helm -n <your-namespace> template todo-app-database stable/mssql-linux

Почему я даю вам ответ с помощью Helm?

Написание YAML с нуля позволяет изобретать колесо, пока другие это делают.

Самый эффективный способ - повторно использовать то, что сообщество подготовило для вас.

Однако вы можете спросить: как я могу повторно использовать то, что делают другие?

Вот почему Helm приходит.

Helm становится вашим установщиком любого приложения поверх kubernetes независимо от того, сколько YAML требует ваше приложение.

Установите его сейчас и приступайте к делу choco install kubernetes-helm

...