如何为kubernetes配置此外部服务?

时间:2019-02-05 13:07:19

标签: networking configuration kubernetes external

我在图中显示了这种情况。

我想配置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做到这一点,所以这是我能找到的唯一配置,可以达到在容器/荚的生存期之外持久存储数据库文件的预期目标

2 个答案:

答案 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设置为具有暴露端口。