Docker 桌面版支持 kubernetes

时间:2022-04-29
本文章向大家介绍Docker 桌面版支持 kubernetes,主要内容包括相关文章、加入计划、kubectl、启用、Minikube、查看集群详情、查看节点、使用 docker 命令部署 k8s 服务、查看服务详情、指定命名空间、Swarm mode 部署、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。

Docker for Mac v17.12 正式支持 k8s。

Docker for Windows v18.02-rc1 正式支持 k8s。

相关文章

视频:https://www.bilibili.com/video/av17307986/

加入计划

首先使用 Docker 账号在 https://beta.docker.com 注册预览计划,之后在 Docker 菜单登录该 Docker 账号。

kubectl

之前使用 brew 安装了 kubectl 请先卸载。

$ brew remove kubernetes-cli

启用

在 Docker 设置中启用 k8s,具体图解请查看 官方文档

镜像列表

注意,需要从 gcr.io 拉取以下镜像,由于网络问题可能会失败。

镜像列表:https://github.com/khs1994-docker/docker-with-kubernetes

Minikube

之前你可能使用了 minikube ,使用以下命令切换到 docker-for-desktop

$ kubectl config get-contexts

CURRENT   NAME                 CLUSTER                      AUTHINFO             NAMESPACE
          docker-for-desktop   docker-for-desktop-cluster   docker-for-desktop
*         minikube             minikube                     minikube

$ kubectl config use-context docker-for-desktop

查看集群详情

$ kubectl cluster-info

Kubernetes master is running at https://localhost:6443
KubeDNS is running at https://localhost:6443/api/v1/namespaces/kube-system/services/kube-dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

查看节点

$ kubectl get node

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

使用 docker 命令部署 k8s 服务

官方文档:https://docs.docker.com/docker-for-mac/kubernetes/

新建 docker-compose.yml 文件。

version: '3.3'

services:
  web:
    build: web
    image: dockerdemos/lab-web
    volumes:
     - "./web/static:/static"
    ports:
     - "80:80"

  words:
    build: words
    image: dockerdemos/lab-words
    deploy:
      replicas: 5
      endpoint_mode: dnsrr
      resources:
        limits:
          memory: 16M
        reservations:
          memory: 16M

  db:
    build: db
    image: dockerdemos/lab-db

部署服务

$ docker stack deploy --compose-file docker-compose.yml mystack

查看服务详情

$ docker stack services mystack

# or

$ kubectl get services

指定命名空间

默认的命名空间为 default,使用以下命令自定义命名空间。

$ docker stack deploy --namespace my-app --compose-file docker-compose.yml mystack

Swarm mode 部署

如果你想使用 Swarm mode 相关命令,你必须在前面加上 DOCKER_ORCHESTRATOR=swarm

$ DOCKER_ORCHESTRATOR=swarm docker node ls

$ DOCKER_ORCHESTRATOR=swarm docker stack deploy --compose-file /path/to/docker-compose.yml mystack