在Kubernetes上部署docker

本文介绍了如何在Docker Desktop上启用和管理Kubernetes,包括使用docker命令和kubectl进行部署,指定namespace,覆盖默认orchestrator,以及解决启动后Kubernetes一直显示starting状态的问题。

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

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

docker desktop里的kubernetes配置如下:

Kubernetes客户端命令kubectl已集成在内,并且默认配置为连接到本地Kubernetes服务器。 如果已经安装了kubectl并指向其他环境,例如minikube或GKE集群,则需要更改上下文信息,让kubectl指向docker-desktop:

> kubectl config get-contexts
> kubectl config use-context docker-desktop

要启用Kubernetes支持并安装作为Docker容器运行的Kubernetes独立实例,选择Enable Kubernetes。

要将Kubernetes设置为默认协调器,选择Deploy Docker Stacks to Kubernetes by default.。

默认情况下,Kubernetes容器对docker service ls之类的命令是隐藏的,因为Kubernetes容器不支持手动管理。 要使其可见,选择Show system containers (advanced).。 大多数用户不需要此选项。

单击Apply & Restart以保存设置。 docker将实例化将Kubernetes服务器作为容器运行所需的映像,并将kubectl.exe命令安装在路径中。

  1. 启用并运行Kubernetes后,Docker desktop settings'的右下角将显示一个附加状态栏项目。 Kubernetes的状态显示在Docker菜单中,上下文指向docker-desktop。
  2. 要随时禁用Kubernetes支持,取消勾选Enable Kubernetes复选框。 Kubernetes容器将停止并删除,并且/ usr / local / bin / kubectl命令也将删除。
  3. 要删除所有堆栈和Kubernetes资源,请选择Reset Kubernetes Cluster。
  4. 如果通过其他方法安装了kubectl,并且遇到冲突,请将其删除。

 

使用docker command

可以使用docker stack deploy,docker-compose.yml文件在Kubernetes上部署stack。

docker stack deploy --compose-file /path/to/docker-compose.yml mystack
docker stack services mystack

我们可以看到service使用kubectl get services命令部署。

指定namespace

默认情况下,使用default 名称空间。 我们可以使用--namespace标志指定名称空间。

docker stack deploy --namespace my-app --compose-file /path/to/docker-compose.yml mystack

运行kubectl get services -n my-app可以查看部署在my-app名称空间中的服务。

覆盖默认orchestrator

在测试Kubernetes时,我们可能也希望以集群模式部署一些工作负载。 使用DOCKER_STACK_ORCHESTRATOR变量来覆盖给定终端会话或单个Docker命令的默认协调器。 该变量可以未设置(不设置就是默认值,在这种情况下,Kubernetes是协调器),也可以设置为swarm或kubernetes。 我们可以在运行命令之前设置变量来覆盖单点部署的orchestrator。

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
 

使用kubectl command

Windows Kubernetes默认安装在在C:\> Program Files \ Docker \ Docker \ Resources \ bin \ kubectl.exe中提供Kubernetes CLI命令。 此位置可能不在PATH变量中,因此可能需要输入命令的完整路径或将其添加到PATH中。可以通过列出可用节点来测试命令:

kubectl get nodes

NAME                 STATUS    ROLES     AGE       VERSION
docker-desktop       Ready     master    3h        v1.8.2

Docker创建了以下demo应用程序,可以使用docker stack deploy命令将其部署到集群模式或Kubernetes。

 

问题:启动kubernets之后一直是starting状态

可以尝试下面几个

  1. Restore Docker to Factory Default settings and Quit Docker for Desktop
  2. Delete the folder C:\ProgramData\DockerDesktop\pki (Make a backup of it just in case)
  3. Delete the folder ~\.kube\ (Again make a backup to be safe)
  4. Start Docker again, open Docker settings, make the necessary configuration changes (adding proxy, setting resource limits, etc..), Enable Kubernetes and let it start
  5. Wait a while and both Docker and Kubernetes will be up now.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值