部署Docker容器到Kubernetes
Get Started, Part 5: Stacks
Compose file version 3 reference
导言
虽然docker默认的swarm与k8s(kubernetes)处于竞争关系,docker依然可以部署容器到k8s。
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 
 | Server: Docker Engine - CommunityEngine:
 Version:          18.09.2
 API version:      1.39 (minimum version 1.12)
 Go version:       go1.10.6
 Git commit:       6247962
 Built:            Sun Feb 10 04:13:06 2019
 OS/Arch:          linux/amd64
 Experimental:     false
 Kubernetes:
 Version:          v1.10.11
 StackAPI:         v1beta2
 
 | 
一. vi compose.yml
文件内容如下(保存前删除注释):
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 
 | version: "3.7"                                        #compose file的版本,Docker Engine版本18.06.0+支持3.7services:                                             #service中运行的单个容器被称为task,系统中的单个模块被称为service
 web:
 image: localhost:5000/hello                       #使用私有镜像localhost:5000/hello(这里必须使用仓库中的,不可以用本地的)
 deploy:                                           #部署操作
 replicas: 5                                     #部署5个副本
 resources:
 limits:
 cpus: "0.1"                                 #每个副本最多使用10%的CPU时间片
 memory: 50M                                 #每个副本最多使用50MB的RAM
 restart_policy:
 condition: on-failure                         #容器运行失败后自动重启
 ports:
 - "4000:80"                                     #本地的4000端口映射到容器的80端口
 redis:
 image: redis                                    #docker hub上的redis镜像
 ports:
 - "6379:6379"                                 #本地的6379端口映射到容器的6379端口
 volumes:
 - "/home/docker/data:/data"                   #容器的/data目录挂载到本地的/home/docker/data目录(redis会将日志文件存储到/data目录)
 deploy:
 placement:
 constraints: [node.role == manager]         #限制本service只在manager节点执行
 command: redis-server --appendonly yes          #启动redis-server,同时指定数据持久化策略:AOF模式
 
 | 
二. docker stack deploy
| 12
 3
 4
 5
 6
 7
 
 | docker stack deploy --orchestrator=kubernetes -c compose.yml hello
 
 
 kubectl get all
 
 docker stack ls
 
 |