在Kubernetes上部署
预计阅读时间: 3分钟Docker Desktop包含独立的Kubernetes服务器和客户端以及Docker CLI集成。Kubernetes服务器在Docker实例中本地运行,不可配置,并且是单节点集群。
Kubernetes服务器在本地系统上的Docker容器中运行,并且仅用于本地测试。启用Kubernetes支持后,您可以在Kubernetes,Swarm上以及作为独立容器并行部署工作负载。启用或禁用Kubernetes服务器不会影响您的其他工作负载。
请参阅适用于Windows的Docker桌面>启用Kubernetes的入门 ,并开始在Kubernetes上测试工作负载的部署。
使用Docker命令
您可以使用docker docker stack deploy
, docker-compose.yml
文件和堆栈名称在Kubernetes上docker stack deploy
堆栈。
docker stack deploy --compose-file /path/to/docker-compose.yml mystack
docker stack services mystack
您可以看到使用kubectl get services
命令部署的kubectl get services
。
指定名称空间
默认情况下,使用default
名称空间。您可以使用--namespace
标志指定名称空间。
docker stack deploy --namespace my-app --compose-file /path/to/docker-compose.yml mystack
运行kubectl get services -n my-app
以仅查看部署在my-app
名称空间中的服务。
覆盖默认协调器
在测试Kubernetes时,您可能希望以集群模式部署一些工作负载。使用DOCKER_STACK_ORCHESTRATOR
变量来覆盖给定终端会话或单个Docker命令的默认协调器。该变量可以未设置(默认值,在这种情况下,Kubernetes是协调器),也可以设置为swarm
或kubernetes
。以下命令通过在运行命令之前设置变量来覆盖单个部署的协调器。
set DOCKER_STACK_ORCHESTRATOR=swarm
docker stack deploy --compose-file /path/to/docker-compose.yml mystack
或者,可以在部署时将--orchestrator
标志设置为swarm
或kubernetes
,以覆盖该部署的默认协调器。
docker stack deploy --orchestrator swarm --compose-file /path/to/docker-compose.yml mystack
注意 :在Kubernetes和集群模式下部署相同的应用程序可能会导致与端口和服务名称冲突。
使用kubectl命令
Windows Kubernetes集成在C:\>Program Files\Docker\Docker\Resources\bin\kubectl.exe
提供Kubernetes CLI命令。此位置可能不在外壳程序的PATH
变量中,因此您可能需要键入命令的完整路径或将其添加到PATH
。有关kubectl
更多信息,请参见kubectl
官方文档 。您可以通过列出可用节点来测试命令:
kubectl get nodes
NAME STATUS ROLES AGE VERSION
docker-for-desktop Ready master 3h v1.8.2
示例应用
Docker创建了以下演示应用程序,您可以使用docker docker stack deploy
命令docker stack deploy
到集群模式或Kubernetes。
version: '3.3'
services:
web:
image: dockersamples/k8s-wordsmith-web
ports:
- "80:80"
words:
image: dockersamples/k8s-wordsmith-api
deploy:
replicas: 5
endpoint_mode: dnsrr
resources:
limits:
memory: 50M
reservations:
memory: 50M
db:
image: dockersamples/k8s-wordsmith-db
如果您已经拥有Kubernetes YAML文件,则可以使用kubectl
命令进行部署。