Используйте локальный образ докера с mysql с minikube

На моем ноутбуке установлена ​​ОС Linux Mint. Подробности, как показано ниже:

Mint version 19, 
Code name : Tara,
PackageBase : Ubuntu Bionic
Cinnamon (64-bit)
  1. У меня есть веб-сервис, написанный с использованием весенней загрузки и mysql.

  2. Он отлично работает локально. - проверено и протестировано ... Используя dockerfile, я создал образ докера. Из каталога Dockerfile запустили команду- docker build . -t users-mysql-docker

Запустите созданный образ Docker (users-mysql-docker). docker run -p 8086:8086 --name users-mysql-app --link mysql-standalone:mysql -d users-mysql-docker (В этой команде мы как бы связываем наше собственное изображение с автономным mysql.)

У меня уже есть образ mysql в докере и контейнере mysql-standalone.

  1. Я запустил minikube и проверил модули и развертывания
xxxxxxxxx:~$ pwd
/home/sj
xxxxxxxxxx:~$ minikube start
xxxxxxxxxx:~$ kubectl get pods
xxxxxxxxxx:~$ kubectl get deployments
xxxxxxxxxx:~$ eval $(minikube docker-env)

Теперь, когда я проверяю изображения докеров, они выглядят так: README описывает, он повторно использует демон Docker из Minikube с eval $(minikube docker-env).

  1. Согласно этой ссылке, которую я установил mysql на minikube. с тем, что я вижу в модулях, развертываниях и сервисах
xxxxxxxxxx:~$ kubectl get pods
NAME                         READY   STATUS    RESTARTS   AGE
mysql-6c57cd4d76-gxb7g       1/1     Running   1          9d

xxxxxxxxxx:~$ kubectl get deployments
NAME        DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
mysql       1         1         1            1           8d

xxxxxxxxxx:~$ kubectl get services
NAME         TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
kubernetes   ClusterIP      10.96.0.1        <none>        443/TCP          9d
mysql        ClusterIP      None             <none>        3306/TCP         8d
  1. Теперь я хочу развернуть тот же веб-сервис с шага № 1 в кубернетах (minikube). Я пошел в каталог, где у меня есть файл dockerfile, и выполнил команду сборки, как показано ниже:

xxxxxxxxx: / каталог $ docker build. -t пользователи-mysql-kube: V1

Проверено, вижу ли я изображение в докере deamon в minikube.

xxxxxxxxxx:~$ docker images
REPOSITORY                                 TAG                 IMAGE ID            CREATED             SIZE
users-mysql-kube                           V1                  53152583b2b8        2 seconds ago       652MB
openjdk                                    8                   81f83aac57d6        5 weeks ago         624MB
mysql                                      5.7                 563a026a1511        5 weeks ago         372MB
k8s.gcr.io/coredns                         1.2.2               367cdc8433a4        6 weeks ago         39.2MB
k8s.gcr.io/kubernetes-dashboard-amd64      v1.10.0             0dab2435c100        7 weeks ago         122MB
k8s.gcr.io/kube-proxy-amd64                v1.10.0             bfc21aadc7d3        6 months ago        97MB
k8s.gcr.io/kube-apiserver-amd64            v1.10.0             af20925d51a3        6 months ago        225MB
k8s.gcr.io/kube-scheduler-amd64            v1.10.0             704ba848e69a        6 months ago        50.4MB
k8s.gcr.io/kube-controller-manager-amd64   v1.10.0             ad86dbed1555        6 months ago        148MB
k8s.gcr.io/etcd-amd64                      3.1.12              52920ad46f5b        7 months ago        193MB
k8s.gcr.io/kube-addon-manager              v8.6                9c16409588eb        7 months ago        78.4MB
k8s.gcr.io/k8s-dns-dnsmasq-nanny-amd64     1.14.8              c2ce1ffb51ed        9 months ago        41MB
k8s.gcr.io/k8s-dns-sidecar-amd64           1.14.8              6f7f2dc7fab5        9 months ago        42.2MB
k8s.gcr.io/k8s-dns-kube-dns-amd64          1.14.8              80cc5ea4b547        9 months ago        50.5MB
k8s.gcr.io/pause-amd64                     3.1                 da86e6ba6ca1        9 months ago        742kB
gcr.io/k8s-minikube/storage-provisioner    v1.8.1              4689081edb10        11 months ago       80.8MB

Ниже приведены шаги, которые я пробовал точно в ТЕСТИРОВАНИИ. Я могу ошибаться. Пожалуйста, поделитесь своими предложениями по этому поводу

  1. Как упоминалось в шаге № 2, как я запускаю образ докера и связываю его с mysql, как запустить созданный образ на шаге № 5 внутри minikube и связать его с развернутым mysql? Это что-то вроде:
xxxxxxxxxxx:~$ kubectl run umk-01 --image=users-mysql-kube:V1 --image-pull-policy=Never
  1. после развертывания образа, как его раскрыть? я должен сделать что-то вроде:
xxxxxxxxxxxxx:~$ kubectl expose deployment umk-01 --type=NodePort --port=8086

xxxxxxxxxxxxx:~$ kubectl get services
NAME         TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
kubernetes   ClusterIP      10.96.0.1        <none>        443/TCP          9d
mysql        ClusterIP      None             <none>        3306/TCP         8d
umk-01       NodePort       10.100.105.58    <none>        8086:30004/TCP   6s
  1. Я пробовал шаги 6 и 7, а затем попробовал команду ниже, но это не сработало.
xxxxxxxxxxxxx:~$ minikube service umk-01 --url
Waiting, endpoint for service is not ready yet...

Это означает, что на шагах №6 и 7 что-то не так. Кто-нибудь может с этим помочь?


person Shivraj    schedule 17.10.2018    source источник
comment
Проверьте адрес вашего мини-куба с помощью minikube ip. Найдите порт узла, используемый службой kubectl get svc umk-01. И, наконец, проверьте это с помощью curl MINIKUBE_IP:NODE_PORT   -  person Crou    schedule 17.10.2018
comment
xxxxxxxxxxxxx:~$ kubectl get svc umk-01 дал порт 8086: 32581 / TCP и xxxxxxxxxx:~$ minikube ip дал 192.168.99.100`, а затем попытался проверить xxxxxxxxxx:~$ curl 192.168.99.100:32581 это дает ошибку- curl: (7) Не удалось подключиться к 192.168.99.100 порт 32581: соединение отклонено   -  person Shivraj    schedule 17.10.2018
comment
Вы можете попробовать подключиться к своему модулю с помощью kubectl exec -it <POD_NAME> -- /bin/bash и проверить, работает ли он локально.   -  person Crou    schedule 18.10.2018


Ответы (1)


Я не уверен, что вы получите URL-адрес службы для службы nodeport с помощью Minikube. Вы можете получить прямой доступ к сервису через Minikube IP и порт 30004. Просто убедитесь, что у вас нет брандмауэра, блокирующего порт.

person coolsvap    schedule 17.10.2018
comment
Я делаю это локально, поэтому уверен, что проблем с брандмауэром нет. Однако, если вы пройдете через мое описание поста, шаги 6 и 7 будут выглядеть некорректно. Я думаю, если это будет исправлено, все должно сработать. Можете ли вы взглянуть на это и выразить свою мысль? - person Shivraj; 17.10.2018