在Kubernetes上部署

预计阅读时间: 3分钟

Docker Desktop包含独立的Kubernetes服务器和客户端以及Docker CLI集成。Kubernetes服务器在Docker实例中本地运行,不可配置,并且是单节点集群。

Kubernetes服务器在本地系统上的Docker容器中运行,并且仅用于本地测试。启用Kubernetes支持后,您可以在Kubernetes,Swarm上以及作为独立容器并行部署工作负载。启用或禁用Kubernetes服务器不会影响您的其他工作负载。

请参阅适用于Windows的Docker桌面>启用Kubernetes的入门 ,并开始在Kubernetes上测试工作负载的部署。

使用Docker命令

您可以使用docker docker stack deploydocker-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是协调器),也可以设置为swarmkubernetes 。以下命令通过在运行命令之前设置变量来覆盖单个部署的协调器。

set DOCKER_STACK_ORCHESTRATOR=swarm
docker stack deploy --compose-file /path/to/docker-compose.yml mystack

或者,可以在部署时将--orchestrator标志设置为swarmkubernetes ,以覆盖该部署的默认协调器。

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命令进行部署。

windowsedgekuberneteskubectl编排