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命令安裝在路徑中。
- 啓用並運行Kubernetes後,Docker desktop settings'的右下角將顯示一個附加狀態欄項目。 Kubernetes的狀態顯示在Docker菜單中,上下文指向docker-desktop。
- 要隨時禁用Kubernetes支持,取消勾選Enable Kubernetes複選框。 Kubernetes容器將停止並刪除,並且/ usr / local / bin / kubectl命令也將刪除。
- 要刪除所有堆棧和Kubernetes資源,請選擇Reset Kubernetes Cluster。
- 如果通過其他方法安裝了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。