我是docker和kubernetes的新手,我将docker-compose.yml作为
version: '2'
services:
db:
build:
context: ./db
dockerfile: Dockerfile
ports:
- "3306:3306"
networks:
docker-network:
ipv4_address: 172.18.0.2
restart: always
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: db
MYSQL_USER: user
MYSQL_PASSWORD: mypassword
createlinuxuser:
build:
context: ./createlinuxuser
dockerfile: Dockerfile
networks:
docker-network:
ipv4_address: 172.18.0.3
depends_on:
- db
tty: true
restart: always
networks:
docker-network:
driver: bridge
ipam:
config:
- subnet: 172.18.0.0/16
gateway: 172.18.0.1
我想用kubernetes上的容器之间的桥接网络部署这个多容器docker应用程序。我还希望对kubernetes上的两个容器都使用IP,以便它们可以相互通信,这可能吗?最佳做法是什么?
答案 0 :(得分:0)
正如David Maze所说,您想要实现的目标可能存在一些问题。 当然,您将无法立即使用该文件。您可以使用Kompose从Docker Compose转到Kubernetes或kompose convert。
Kompose支持V1,V2和V3 Docker Compose文件的转换 进入Kubernetes和OpenShift对象。 但是如上所述,它可能需要进行一些调整。
关于您的网络。您是否要在Pod中放置多个容器,还是要将它们全部部署为单独的Pod?在这种情况下,请阅读有关Kubernetes Networking的文档或一些文章。
就Docker结构而言,一个Pod被建模为一组Docker 共享网络名称空间的容器。容器内的所有容器 通过网络分配的IP地址和端口空间相同 分配给Pod的名称空间,并且可以通过localhost找到彼此 因为它们位于同一个命名空间中。
答案 1 :(得分:0)
您可能需要查看的另一个功能是使用docker cli本身部署到kuberentes,如docker stack deploy
中所述
客户端和守护程序API必须都至少为1.25,才能使用此命令
deploy命令支持撰写文件版本3.0及更高版本。因此,您可能需要将docker-compose.yml更新为v3
docker stack deploy --compose-file /path/to/docker-compose.yml mystack
可以指定其他选项,例如:--namespace
,--kubeconfig
此外,您还可以签出Helm,它是kubernetes的软件包管理器,您需要在其中编写头盔图以将其部署到kubernetes集群上。