例如,我在 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_HOST
和 MYSQL_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/