【发布时间】:2019-03-21 15:26:42
【问题描述】:
在我的笔记本电脑上,我安装了 Linux Mint 操作系统。详情如下:
Mint version 19,
Code name : Tara,
PackageBase : Ubuntu Bionic
Cinnamon (64-bit)
我有使用 spring boot 和 mysql 编写的 web 服务。
它在本地运行良好。- 已验证和测试... 使用 dockerfile 我创建了 docker 映像。 从 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 链接起来。)
我已经在 docker 和容器 mysql-standalone 中有 mysql 映像。
- 我启动了 minikube 并检查了 pod 和部署
xxxxxxxxx:~$ pwd /home/sj xxxxxxxxxx:~$ minikube start xxxxxxxxxx:~$ kubectl get pods xxxxxxxxxx:~$ kubectl get deployments xxxxxxxxxx:~$ eval $(minikube docker-env)
现在,当我检查 docker 映像时,看起来就像 README 所描述的那样,它使用 eval $(minikube docker-env) 重用 Minikube 的 Docker 守护程序。
- 根据this 链接,我确实在 minikube 上设置了 mysql。 有了我在 pod、部署和服务中看到的内容
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 步中的相同 Web 服务部署到 kubernetes(minikube)。 我去了我有 dockerfile 的目录并运行如下构建命令:
xxxxxxxxx:/目录$ 码头工人建造。 -t users-mysql-kube:V1
验证我是否可以在 minikube 内的 deamon docker 中看到图像。
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
我按照测试目的尝试了以下步骤。我可能错了。请就此提出您的建议
- 如第 2 步中提到的我运行 docker 映像并将其链接到 mysql 的方式,我们如何在 minikube 中运行第 5 步中创建的映像并将其链接到已部署的 mysql? 是不是类似:
xxxxxxxxxxx:~$ kubectl run umk-01 --image=users-mysql-kube:V1 --image-pull-policy=Never
- 镜像部署后,如何暴露? 我应该这样做:
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
- 我尝试了第 6 步和第 7 步,然后尝试了下面的命令,但没有成功。
xxxxxxxxxxxxx:~$ minikube service umk-01 --url Waiting, endpoint for service is not ready yet...
这意味着在第 6 步和第 7 步中有问题。 有人可以帮忙吗?
【问题讨论】:
-
使用
minikube ip检查你的minikube的地址是什么。找到服务kubectl get svc umk-01使用的节点端口。最后用curl MINIKUBE_IP:NODE_PORT进行测试 -
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:连接被拒绝 -
您可以尝试使用
kubectl exec -it <POD_NAME> -- /bin/bash连接到您的 pod 并检查它是否可以在本地运行。
标签: mysql docker kubernetes linux-mint minikube