mysql - 如何将容器网络放入 kubernetes YAML 文件

标签 mysql ruby-on-rails docker networking kubernetes

例如,我在 docker 上创建了网络

docker network create hello-rails

然后,我有连接到这个网络的mySQL

docker run -p 3306 -d --network=hello-rails --network-alias=db -e MYSQL_ROOT_PASSWORD=password --name hello-rails-db mysql

而且,我有 rails server,它也依赖这个网络

docker run -it -p 3000:3000 --network=hello-rails -e MYSQL_USER=root -e MYSQL_PASSWORD=password -e MYSQL_HOST=db --name hello-rails benjamincaldwell/hello-docker-rails:latest

我想用 YAML 文件为这两个容器在 kubernetes 上编写部署。但我不知道,如何将网络放入文件中的 containers 中。你有什么建议吗?

最佳答案

在 Kubernetes 中,您可以通过创建两个服务来解决这个问题。

MySQL 服务看起来像这样:

kind: Service
apiVersion: v1
metadata:
  name: mysql
spec:
  selector:
    app: mysql
  ports:
  - port: 3306

在您的 Rails 服务器中,您可以使用 mysql DNS 名称或使用 MYSQL_SERVICE_HOSTMYSQL_SERVICE_PORT 环境变量来访问 MySQL 服务.无需像在 Docker 中那样链接容器或指定网络。

您的 Rails 服务将如下所示:

kind: Service
apiVersion: v1
metadata:
  name: rails
spec:
  type: LoadBalancer
  selector:
    app: rails
  ports:
  - port: 3000

注意 type: LoadBalancer,它指定此服务将发布到外部世界。根据您运行 Kubernetes 的位置,公共(public) IP 地址将自动分配给此服务。

有关更多信息,请查看 Services documentation .

关于mysql - 如何将容器网络放入 kubernetes YAML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46201793/

相关文章:

mysql - 如何使用php在特定位置回显特定mysql数据?

ruby-on-rails - 找不到安装 sqlite3 公钥环时出错

ruby-on-rails - Rails 3参数不必要的包装

javascript - rails : displaying a value dynamically calculated in my form

python-3.x - Dockerfile 中的 Luigi Pipeline;未知指令 PYTHONPATH

docker - 在 GitHub 操作中,如何覆盖服务的入口点?

php - 项目从本地主机移动到第三方主机 : CodeIgniter Database Class not returning query results, 但 MySQLI 确实如此

mysql - SQL查询分组依据和全部

docker - Docker撰写,内插分配的端口

php - 数据库查询的 IF 语句不会执行