在今年的 DockerCon EU (2017) 上,Solomon、Brendan、Hockin等联合宣布Docker将原生支持Kubernetes,也就是说Kubernetes将和Swarm一样作为Docker平台的编排管理系统。这包括Docker EE、Docker CE以及Docker for Mac/Windows等全平台的支持。
Docker for Mac/Windows
Docker for Mac/Windows将原生支持把基于docker-compose/swarm的应用部署到本地的Kubernetes集群中,docker swarm和Kubernetes共享相同的镜像、存储卷以及容器(也就是两种调度系统同时管理同一套容器)。这有助于简化容器应用的开发、构建、运行以及测试。
为了实现这个目标,Docker基于Kubernetes Custom Resources和API server aggregation将Docker Compose apps 部署为原生的Kubernetes Pods/Services。
这里是一个Docker for Mac的示例视频,非常有趣。
Docker EE
在创建Stack的时候可以选择Swarm或者Kubernetes:
并且还可以在Shared Resources除查看共享的资源:
当然,部署也很简单,内置在Docker EE中,swarm和Kubernetes共享相同的Node:
这里这里也有一个Docker EE + Kubernetes的示例视频。
Docker CE/Moby
Moby与Kubernetes的集成通过一系列的开源项目来实现:
- containerd 和 cri-containerd,可以参考Kubernetes The Hard Way查看使用方法
- LinuxKit:支持构建Kubernetes镜像
- InfraKit:支持Kubernetes Flavor
- libnetwork:增加CNI的支持 https://github.com/docker/libnetwork/pull/1978
- Notary将会贡献给CNCF
- libentitlement将提供高级安全接口
不过遗憾的是,Kubernetes的支持需要等到下个release。想要提前预览的同学可以点击https://beta.docker.com/注册预览版。
注:本文同步发布到知乎专栏《Kubernetes指南》。