我在图中显示了这种情况。
我想配置kubernetes容器,以便它们可以与外部docker容器“ mysql”对话,但是我不知道如何配置它,特别是关于告诉他们连接的IP地址。我不能使用“ localhost”,因为它只会重定向回到调用方Pod,而我不能使用192.168.1.8,因为该端口未从那里暴露出来。
在这种情况下,什么是数据库主机IP?
感谢您提供任何线索
+----------------------------------------------------------------------------------------------------------+
| |
| My Macbook Pro Laptop |
| |
| Today's DHCP IP: 192.168.1.8 |
| +-------------------------+ |
| | | |
| | K8s Cluster | |
| | | |
| | | |
| | K8s Pod | |
| | +---------------+ | |
| | | Docker | | |
| | | Container | | |
| | | +-----------+ | | |
| ??? | | | | | | |
| <-----------+ Foo | | | |
| +-------------+ | | | Program | | | |
| | Docker | | | | | | | |
| +-----------------------+ | container | Listening | | +-----------+ | | |
| | Local Hard Disk | | +---------+ | Port | +---------------+ | |
| | +------------------+ | | | | | 3306 | | |
| | | /Users/foo/data <------------- mysql <------+ | | |
| | | | | | | | | | K8s Pod | |
| | +------------------+ | | +---------+ | | +---------------+ | |
| +-----------------------+ +-------------+ | | Docker | | |
| | | Container | | |
| | | +-----------+ | | |
| ??? | | | | | | |
| <-----------+ Bar | | | |
| | | | Program | | | |
| | | | | | | |
| | | +-----------+ | | |
| | +---------------+ | |
| | | |
| | | |
| +-------------------------+ |
| |
| |
+----------------------------------------------------------------------------------------------------------+
注意由于可用于MacOS的kubernetes系统的当前限制,我无法通过kubernetes将数据持久保存到本地硬盘(到我希望指定的位置)上。但是我可以使用Docker做到这一点,所以这是我能找到的唯一配置,可以达到在容器/荚的生存期之外持久存储数据库文件的预期目标
答案 0 :(得分:0)
您可以使用数据库主机IP创建外部IP或外部名称服务,然后从POD调用该服务。
还有其他选择是将DB作为Pod部署在具有无头服务的k8集群上。
出于好奇,如果您有k8集群,为什么还要使用docker将db作为容器部署?
答案 1 :(得分:0)
我没有OSX可以对其进行测试,但是这种说法似乎并不正确-无法将数据持久化在Kubernetes上以用于OSX。为此,您只需创建一个Persistent Volume,它将成为集群中的资源,然后添加PersistentVolumeClaim:
PV是集群中的资源,就像节点是集群一样 资源。 PV是类似于Volumes的体积插件,但是具有生命周期 独立于使用PV的任何单个吊舱。
PVC是用户存储的请求。它类似于吊舱。豆荚 消耗节点资源,PVC消耗PV资源。豆荚可以要求 特定级别的资源(CPU和内存)。索赔可以要求 特定的大小和访问模式(例如,可以在读/写一次后安装 或多次只读)。
您可以找到说明 here。以及如何here逐步配置mySQL,在本例中为Wordpress。
关于您的设置,请首先尝试遵循有关在集群内部运行mySQL的官方文档(假设您使用的是minikube,但如果没有,则不会有太大差异),如果您没有成功,我们将继续。我已经开始尝试从群集内部连接到外部的mysql容器(我的设置是带有minikube的Ubuntu 18.04)。
您也是对的,您将无法在localhost上访问它,因为docker实际上正在使用172.17(如果我没记错的话),因此您的选项之一是构建新映像并将主机IP设置为具有暴露端口。