Я учусь работать с Docker и Minikube на домашнем компьютере Windows 10. Я установил необходимое программное обеспечение. Я установил Docker, minikube, kubectl и последнюю версию MySQL, исправленные должным образом, чтобы можно было использовать его интерфейс командной строки. Я использую консоль Bash, предоставленную GIT, и / или Bash, предоставленную Cygwin. Оба, кажется, дают одинаковые (плохие) результаты.
Я запускаю Docker и устанавливаю службу MySQL. Команда kubectl get all показывает, что все работает нормально.
Согласно книге по программированию, над которой я работаю, я хочу попытаться получить доступ к MySQL с помощью этой команды:
mysql -h $(minikube service mysql-svc --format "{{.IP}}") -P $(minikube service mysql-svc --format "{{.Port}}") -u root -p
Результат должен быть приглашение MySQL CLI, например mysql>. Вместо этого я получаю следующее поведение:
Всплывающее окно с сообщением: «Windows не может найти '192.168.99.101'. Убедитесь, что вы правильно ввели имя, а затем повторите попытку».
Текст консоли:
Система не может найти файл 192.168.99.101.
*
Ошибка открытия URL-адреса X: 192.168. 99.101: статус выхода 1
*
* minikube выходит из-за ошибки. Если приведенное выше сообщение бесполезно, откройте проблему:
- (URL-адрес для отправки сообщения об ошибке)
Всплывающее окно с сообщением «Windows не удается найти» 31067 '. Убедитесь, что вы правильно ввели имя, а затем повторите попытку. "
Текст консоли:
mysql: [ОШИБКА] Неизвестный суффикс' | ' используется для переменной 'порт' (значение (дает границу, которая окружает вывод службы minikube mysql -sv c.) mysql: [ОШИБКА] (путь к mysql .exe): Ошибка при установке value '| ----- | --- (et c)' to 'port'
Ожидаемое поведение - вставка IP и порта в mysql в командной строке, а затем запустить команду типа mysql -h http://192.168.99.101 -P 31067 -u root -p.
Я думаю, что проблема связана с использованием Bash в среде Windows. Любое объяснение приветствуется.
Спасибо,
Джером.
ОБНОВЛЕНИЕ 07.08.2020:
Меня просят более тщательно задокументировать мою проблему. Здесь мы go.
Вот что знает Docker:
$ docker images
REPOSITORY TAG
IMAGE ID CREATED SIZE
logicaltiger/cloudnative-statelessness-posts latest
3a3c66daf7f3 5 days ago 139MB
logicaltiger/cloudnative-statelessness-connections latest
d060e9857f49 5 days ago 139MB
logicaltiger/cloudnative-statelessness-connectionposts-stateful latest
ce33f0966380 5 days ago 123MB
openjdk 8-jdk-alpine
a3562aa0b991 15 months ago 105MB
mysql 8.0.12
ee1e8adfcefb 22 months ago 484MB
Вот мой реконфигурация minikube. Другие плакаты предполагали, что minikube работает ненадежно, если не указано много ресурсов.
$ minikube delete
* Deleting "minikube" in virtualbox ...
* Removed all traces of the "minikube" cluster.
$ minikube start --cpus=4 --memory=4096
* minikube v1.12.1 on Microsoft Windows 10 Home 10.0.18363 Build 18363
* Automatically selected the virtualbox driver
* Starting control plane node minikube in cluster minikube
* Creating virtualbox VM (CPUs=4, Memory=4096MB, Disk=20000MB) ...
* Found network options:
- NO_PROXY=192.168.99.100
- no_proxy=192.168.99.100
* Preparing Kubernetes v1.18.3 on Docker 19.03.12 ...
- env NO_PROXY=192.168.99.100
* Verifying Kubernetes components...
* Enabled addons: default-storageclass, storage-provisioner
* Done! kubectl is now configured to use "minikube"
После запуска mysql из его файла yaml у меня он запускается: Теперь возьмите mysql -sv c URL:
$ minikube service mysql-svc --url
http://192.168.99.102:32235
Попробуйте запустить пример книги. Я снова получаю два всплывающих окна windows и то, что показано ниже в терминале. Я опускаю здесь текст всплывающего окна ...
$ mysql -h $(minikube service mysql-svc --format "{{.IP}}") -P $(minikube service mysql-svc --format "{{.Port}}") -u root -p
The system cannot find the file 192.168.99.102.
*
X open url failed: 192.168.99.102: exit status 1
*
* minikube is exiting due to an error. If the above message is not useful, open
an issue:
- https://github.com/kubernetes/minikube/issues/new/choose
The system cannot find the file 32235.
*
X open url failed: 32235: exit status 1
*
* minikube is exiting due to an error. If the above message is not useful, open
an issue:
- https://github.com/kubernetes/minikube/issues/new/choose
mysql: [ERROR] Unknown suffix '|' used for variable 'port' (value '|-----------|
-----------|-------------|-------|')
mysql: [ERROR] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exe: Error whil
e setting value '|-----------|-----------|-------------|-------|' to 'port'
Меня спрашивают, что произойдет, если я введу IP напрямую. Сверху этот IP-адрес был http://192.168.99.102: 32235
$ mysql -h http://192.168.99.102 -P 32235 -u root -p
Enter password: **********
ERROR 2005 (HY000): Unknown MySQL server host 'http://192.168.99.102' (0)
При прямом вводе IP-адреса и порта был достигнут MySQL сервер IS (см. "Введите пароль:"), но запрос отклонен. Я думаю, что не знаю, как заставить MySQL использовать HTTP-запрос.
Но разве MySQL не знает, что делать с IP-адресом, и как косвенный метод ( служба minikube mysql -sv c ...), связанная?
Продолжая, я редактирую свой файл cookbook-deployment-posts.yaml с адресом MySQL:
kind: Service
apiVersion: v1
metadata:
name: posts-svc
spec:
selector:
app: posts
ports:
- protocol: "TCP"
port: 80
targetPort: 8080
type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: posts
labels:
app: posts
spec:
replicas: 1
selector:
matchLabels:
app: posts
template:
metadata:
labels:
app: posts
spec:
containers:
- name: posts
image: cdavisafc/cloudnative-statelessness-posts
env:
- name: INSTANCE_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
- name: PORT
value: "8080"
- name: SPRING_APPLICATION_JSON
value: '{"spring":{"datasource":{"url":"jdbc:mysql://192.168.99.102:32235/cookbook"}}}'
При переходе на kubectl get all, постоянно запускается posts-sv c, выдает ошибки и перезагружается. Не знаю, в чем дело ...
Джером.