Don*_*ott 59 docker kubernetes google-kubernetes-engine docker-compose
我一直在挖掘Kubernetes文档几个小时.我理解核心设计,以及服务,控制器,pod等的概念.
但是,我不明白的是我可以声明性地配置群集的过程.也就是说,我可以编写配置文件(或其中的一组)来定义组合,以及扩展云部署的选项.我希望能够在不运行大量cli命令的情况下声明我想要哪些容器在哪些容器中,它们将如何通信,如何扩展等等.
Kubernetes 是否有docker -compose功能?
我希望我的应用程序在git中定义为版本控制 - 而不依赖于手动cli交互.
这有可能以简洁的方式进行吗?是否有比官方文档更清晰的参考?
小智 33
如果你还在寻找,也许这个工具可以提供帮助:https://github.com/kelseyhightower/compose2kube
您可以创建撰写文件:
# sample compose file with 3 services
web:
image: nginx
ports:
- "80"
- "443"
database:
image: postgres
ports:
- "5432"
cache:
image: memcached
ports:
- "11211"
Run Code Online (Sandbox Code Playgroud)
然后使用该工具将其转换为kubernetes对象:
compose2kube -compose-file docker-compose.yml -output-dir output
Run Code Online (Sandbox Code Playgroud)
这将创建这些文件:
output/cache-rc.yaml
output/database-rc.yaml
output/web-rc.yaml
Run Code Online (Sandbox Code Playgroud)
然后你可以用它kubectl
来应用于kubernetes.
Docker已正式宣布docker-compose
kubernetes集群的功能.因此,从现在开始,您可以在文件中组合kubernetes资源并使用该单个文件应用它们.
首先,我们需要将Kosenetes控制器上的Compose安装到您的Kubernetes集群中.该控制器使用标准的Kubernetes扩展点来引入Stack
Kubernetes API.查看完整文档以安装docker compose控制器:
让我们写一个简单的撰写yaml文件:
version: "3.7"
services:
web:
image: dockerdemos/lab-web
ports:
- "33000:80"
words:
image: dockerdemos/lab-words
deploy:
replicas: 3
endpoint_mode: dnsrr
db:
image: dockerdemos/lab-db
Run Code Online (Sandbox Code Playgroud)
然后我们将使用docker客户端将其部署到运行控制器的Kubernetes集群:
$ docker stack deploy --orchestrator=kubernetes -c docker-compose.yml words
Waiting for the stack to be stable and running...
db: Ready [pod status: 1/1 ready, 0/1 pending, 0/1 failed]
web: Ready [pod status: 1/1 ready, 0/1 pending, 0/1 failed]
words: Ready [pod status: 1/3 ready, 2/3 pending, 0/3 failed]
Stack words is stable and running
Run Code Online (Sandbox Code Playgroud)
然后我们可以通过Kubernetes API与这些对象进行交互.在这里,您可以看到我们自动创建了服务,Pod,Deployments和ReplicaSet等较低级别的对象:
$ kubectl get deployments
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
deployment.apps/db 1 1 1 1 57s
deployment.apps/web 1 1 1 1 57s
deployment.apps/words 3 3 3 3 57s
Run Code Online (Sandbox Code Playgroud)
重要的是要注意,这不是一次性转换.Kubernetes API服务器上的Compose将Stack资源引入Kubernetes API.因此,我们可以在构建应用程序时以相同的抽象级别查询和管理所有内容.这使得深入研究上面的细节对于理解事物的工作方式或调试问题非常有用,但大部分时间都不需要:
$ kubectl get stack
NAME STATUS PUBLISHED PORTS PODS AGE
words Running 33000 5/5 4m
Run Code Online (Sandbox Code Playgroud)
Kubernetes肯定有自己的yaml(如" 部署应用程序 "中所示)
但是作为" Docker集群工具比较:Kubernetes与Docker Swarm ",它不是为Docker编写的(仅仅),它有自己的系统.
你可以使用docker-compose来启动Kubernetes,如" vyshane/kid
" 所示:它确实掩盖了kubectl
脚本中的一些命令cli(可以进行版本控制).
归档时间: |
|
查看次数: |
21346 次 |
最近记录: |