如何使用Docker部署应用程序撰写到kubernetes

时间:2019-02-27 18:56:36

标签: docker kubernetes containers

我是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,以便它们可以相互通信,这可能吗?最佳做法是什么?

2 个答案:

答案 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找到彼此   因为它们位于同一个命名空间中。

source

答案 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集群上。