当前位置: 首页 > 知识库问答 >
问题:

如何将托管在命名空间外部的mysql实例提供给命名空间中的pod?[副本]

阎声
2023-03-14

我需要将托管在命名空间 A 中的 mysql 数据库提供给部署在命名空间“B”中的应用程序。

到目前为止,我已经尝试了几种方法,其中最有希望的是使用endpoint和服务的组合,如下所示:

kind: Service
apiVersion: v1
metadata:
  name: mysql
spec:
  ports:
    - port: 3306
      targetPort: 31234
---
kind: Endpoints
apiVersion: v1
metadata:
  name: mysql
subsets:
  - addresses:
      - ip: 12.34.567.8
    ports:
      - port: 31234

而mysql容器的一个实例已经在名称空间“A”中分离,并通过节点端口配置在31234处公开。

该应用程序有一个init容器init-mysql,它使用主机名“mysql”和正确的凭证来ping MySQL实例。我期望应用程序像往常一样启动,但是它卡在pod初始化状态。当我试图检查init-mysql的日志时,我只得到以下内容:

Warning: Using a password on the command line interface can be insecure.

initContainer 'init-mysql '使用的命令有:

          command:
            - sh
            - -c
            - 'mysqladmin ping -hmysql -P3306 -uusername -ppassword'

共有1个答案

公孙慎之
2023-03-14

这个问题是在这里提出的

我发布了Paul(社区维基)的接受答案,以提高可见性:

我偶然发现了同样的问题,并找到了一个不需要任何静态ip配置的好解决方案

您可以通过服务的DNS名称(如您所述)访问服务:servicename.namespace.svc.cluster.local

您可以使用该DNS名称通过本地服务在另一个命名空间中引用它:

kind: Service
apiVersion: v1
metadata:
  name: service-y
  namespace: namespace-a
spec:
  type: ExternalName
  externalName: service-x.namespace-b.svc.cluster.local
  ports:
  - port: 80
 类似资料:
  • 为什么using指令在包含在匿名命名空间中时表现得好像出现在全局范围?

  • 关于术语的一点说明: 请务必注意一点,TypeScript 1.5里术语名已经发生了变化。 “内部模块”现在称做“命名空间”。 “外部模块”现在则简称为“模块”,这是为了与ECMAScript 2015里的术语保持一致,(也就是说 module X { 相当于现在推荐的写法 namespace X {)。 这篇文章描述了如何在TypeScript里使用命名空间(之前叫做“内部模块”)来组织你的代码

  • Let the word of Christ dwell in you richly in all wisdom; teaching and admonishing one another in psalms and hymns and spiritual songs, singing with grrace in your hearts tto the Lord. And whatsoever

  • 客户端有许多“命名空间”,通常是一些公开的可管理功能。命名空间对应 Elasticsearch 中各种可管理的 endpoint。下面是全部的命名空间: **命名空间** **功能** `indices()` 索引数据统计和显示索引信息 `nodes()` 节点数据统计和显示节点信息 `cluster()` 集群数据统计和显示集群信息 `snapshot()` 对集群和索引进行拍摄快照或恢复数据

  • 命名空间 由于 js 环境极少命名空间管理模块, namespace 相对陌生, 比如有这样的文件结构, src/ demo/ core.cljs 可以看到 core.cljs 的路径就是: src/demo/core.cljs 注意 JVM 环境有个 classpath 的环境变量, 用于判断怎样查找源码, classpath 对应多个路径, 也可能是 jar 包, 而 jar 包中

  • 命名空间,英文名字:namespaces 在研习命名空间以前,请打开在python的交互模式下,输入:import this >>> import this The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is better than implicit. Simple is better than