Docker for Mac是Kubernetes for Mac吗?我尝试学习入门

気になっていたKubernetesをDocker for Macでローカル実行できると聞いて、入門してみました。
Docker for Macの公式ドキュメントに準じてやっていきます。
Get started with Docker for Mac #Kubernetes | Docker Documentation
Deploy on Kubernetes | Docker Documentation

Kubernetesって何?という方は以下の記事を読んでみてください。
Docker(コンテナ型仮想化)と Kubernetes についての簡単な紹介
今さら人に聞けない Kubernetes とは?
3分で分かった気になる、Kubernetes とは?

运行环境

    • macOS High Sierra(10.13.4)

 

    Docker for Mac (edge) 18.05.0-ce

安裝Docker

今回初めて知りましたが、Docker for Macは安定版(Stable)と実験版(Edge) の2種類リリースされています。
Docker公式のアナウンスによると、Kubernetesはまだ、Edge版にしか含まれていないため、Stable版を使用している人でも新しくインストールする必要があるようです。

Kubernetes is only available in Docker for Mac 17.12 CE and higher, on the Edge channel. Kubernetes support is not included in Docker for Mac Stable releases. To find out more about Stable and Edge channels and how to switch between them, see General configuration.

引用来源: Docker文档: 在Kubernetes上部署

通过以下链接下载并安装 Edge 版本。
在 Docker Store 上下载并安装 Edge 版本。

如果您已经使用 Docker for Mac 的稳定版,那么当您替换应用程序时,注意您的镜像和容器将被初始化。

Docker_Community_Edition_for_Mac_-_Docker_Store.png

安装完成后,打开Docker的“关于”页面,您会发现其中包含了Kubernetes。

About_Docker.png

启用Kubernetes

请优先选择Kubernetes,并启用它。
如下所示,勾选启用Kubernetes,并应用更改。

Kubernetes.png

当启用时,Kubernetes的安装将花费几分钟时间。

安装完成后,打开终端。
现在可以使用kubectl命令进行Kubernetes操作。

$ which kubectl
/usr/local/bin/kubectl

如果使用了Homebrew等方式进行了安装的话,似乎会出现冲突问题。
因此,在安装Kubernetes之前需要删除/usr/local/bin/kubectl。

Kubernetes集群配置

通过以下命令确认正在使用的集群是否为docker-for-desktop。
当前使用的集群将在CURRENT栏中标有*。

$ kubectl config get-contexts
CURRENT   NAME                 CLUSTER                      AUTHINFO             NAMESPACE
*         docker-for-desktop   docker-for-desktop-cluster   docker-for-desktop

如果你已经在这个场景中使用了kubectl但不是按照本次的方法的话,有可能是由于使用了其他类似minikube的集群。那时候,可以使用以下命令切换到docker-for-desktop。

$ kubectl config use-context docker-for-desktop
スクリーンショット_2018-05-02_14_10_30.png

确认

当调用节点列表时,可以看到正在运行docker-for-desktop的主节点(在正在使用的个人电脑上)。
这样,就可以使用Kubernetes了。

$ kubectl get nodes
NAME                 STATUS    ROLES     AGE       VERSION
docker-for-desktop   Ready     master    3h        v1.9.6

使用Docker Compose 进行部署

那么,让我们使用Kubernetes来部署应用程序吧!
根据方法,似乎有以下两种选择:
– 使用docker-compose.yml
– 使用以Kubernetes格式编写的清单文件(*.yml)

まずはdocker-compose.ymlでやりましょう。

version: '3.3'

services:
  web:
    build: web
    image: dockerdemos/lab-web
    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
Ignoring unsupported options: build

Stack mystack was updated
Waiting for the stack to be stable and running...
 - Service db has one container running
 - Service words has one container running
 - Service web has one container running
Stack mystack is stable and running

让我们用以下命令来确认是否已经成功部署。

$ docker stack services mystack
ID                  NAME                MODE                REPLICAS            IMAGE                   PORTS
9427fd5a-4dc        mystack_db          replicated          1/1                 dockerdemos/lab-db      
942d4cd9-4dc        mystack_web         replicated          0/0                 dockerdemos/lab-web     *:80->80/tcp
942d4cd9-4dc        mystack_web         replicated          0/0                 dockerdemos/lab-web     *:80->80/tcp
942d4cd9-4dc        mystack_web         replicated          0/0                 dockerdemos/lab-web     *:80->80/tcp
9444649f-4dc        mystack_words       replicated          5/5                 dockerdemos/lab-words

看起来没有问题,我们访问一下。
http://127.0.0.1

dockercon_EU_17.png

使用Kubernetes的部署清单文件进行部署。

这次是使用Kubernetes的清单文件的方法。
由于这并没有在Docker的官方文档中提到,所以与之前的应用有所不同,但是在Github上有一个示例,我们将使用那个。

GitHub – kubernetes/dashboard:适用于Kubernetes集群的通用Web用户界面

示例清单文件

$  kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
secret "kubernetes-dashboard-certs" created
serviceaccount "kubernetes-dashboard" created
role "kubernetes-dashboard-minimal" created
rolebinding "kubernetes-dashboard-minimal" created
deployment "kubernetes-dashboard" created
service "kubernetes-dashboard" created

$ kubectl proxy
Starting to serve on 127.0.0.1:8001

如果成功的话,您可以通过以下URL查看已将本地Kubernetes转化为仪表板的应用程序。
http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/

スクリーンショット 2018-05-02 18.44.36.png

最后

在参考了各种网站的情况下,我试着将一个简单的应用程序部署到Kubernetes上。由于Kubernetes本身很庞大,我感到还需要更多地实际操作来理解它。

请提供参考链接

Kubernetes官方网站
Kubernetes: Deployment机制
Docker for Mac上的Kubernetes安装和部署

bannerAds