
bretfisher/wordsmith-webWordsmith 是 DockerCon EU 2017 上展示的演示项目,当时 Docker 宣布其平台将支持 Kubernetes。该演示应用由三个容器组成:
!在 Docker for Mac 上的 Kubernetes 中运行的 Wordsmith 应用
作为演示如何在 Kubernetes 上部署复杂多容器应用的示例,适用于学习 Docker 与 Kubernetes 集成、多服务应用编排的开发者。
构建和运行应用的唯一要求是 Docker。克隆仓库后,使用 Docker Compose 构建所有镜像:
cd k8s-wordsmith-demo docker-compose build
或者可以使用
docker-compose pull从 Docker Hub 拉取预构建镜像。
最新版本的 Docker for Mac 内置了 Kubernetes。Docker 允许使用简单的 Docker Compose 文件格式将复杂应用部署到 Kubernetes,可通过 docker-compose.yml 将应用部署到本地 Kubernetes 集群。
检查 Docker 编排器:
docker version -f '{{ .Client.Orchestrator }}'
可通过
DOCKER_ORCHESTRATOR环境变量切换编排器(设置为kubernetes或swarm)。
部署应用到 Kubernetes:
export DOCKER_ORCHESTRATOR=kubernetes docker stack deploy wordsmith -c docker-compose.yml
验证部署:
检查服务状态:
kubectl get svc
预期输出类似:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE db ClusterIP None <none> 55555/TCP 2m kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 38d web Load*** 10.107.215.211 <pending> 8080:30220/TCP 2m words ClusterIP None <none> 55555/TCP 2m
检查 Pod 状态:
kubectl get pods
预期看到数据库和 Web 组件各 1 个 Pod,以及 5 个 words API Pod(compose 文件中指定的副本数):
NAME READY STATUS RESTARTS AGE db-8678676c79-h2d99 1/1 Running 0 1m web-5d6bfbbd8b-6zbl8 1/1 Running 0 1m words-858f6678-6c8kk 1/1 Running 0 1m words-858f6678-7bqbv 1/1 Running 0 1m words-858f6678-fjdws 1/1 Running 0 1m words-858f6678-rrr8c 1/1 Running 0 1m words-858f6678-x9zqh 1/1 Running 0 1m
可通过 Kubernetes 清单 部署相同应用,该清单用 Kubernetes 的部署、服务和 Pod 规范描述了应用。
移除现有 Kubernetes stack(可选):
docker stack rm wordsmith
或者保留现有部署,在新的 Kubernetes 命名空间中创建第二个部署。
应用 Kubernetes 清单:
kubectl apply -f kube-deployment.yml






manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务