尝试在Windows上使用Docker测试Kubernetes

首先

虽然有很多关于在Docker for Mac上使用Kubernetes的文章,但是在Windows上找不到相关的内容,所以我会单独记录一下。
Windows版本目前只在Edge渠道提供。
你可以在稳定版本中使用Kubernetes!
参考:https://blog.docker.com/2018/07/kubernetes-is-now-available-in-docker-desktop-stable-channel/

之前,我通常在GKE环境中运行它,但是为了以后的学习会等,我想知道是否可以更简单地尝试一下,所以我尝试运行了一下。

安装

安裝環境

    • Windows 10 ( CPU:Core i7、メモリ:16GB)

 

    Hyper-V 有効化済み

下载

点击以下网页上的download.docker.com链接来进行下载。
https://docs.docker.com/docker-for-windows/install

如果您还没有下载安装程序(Docker for Windows Installer.exe),您可以从download.docker.com获取它。它通常会下载到您的下载文件夹,或者您可以从网页浏览器底部的最近下载栏运行它。

执行安装程序

image.png
image.png
image.png
image.png

Kubernetes的执行

启用Kubernetes

image.png
image.png
image.png
image.png

准备使用Windows上的Docker Kubernetes

请参考以下说明:
https://docs.docker.com/docker-for-windows/#kubernetes

Kubectl是包含并配置连接到本地Kubernetes服务器的客户端命令。如果您已经安装了kubectl并指向其他环境,比如minikube或GKE集群,请确保更改上下文,使kubectl指向docker-for-desktop:

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

在我的环境中,GKE集群的连接设置有效,因此执行上述命令会切换到Windows Docker的上下文。

运行应用程序

建立应用程序

既然如此,我想运行自己制作的应用程序,所以我会使用适当的示例应用程序。

> git clone -b openjdk11 https://github.com/h-r-k-matsumoto/spring-boot-sample.git
> cd spring-boot-sample
> mvn -Dgcp.project.name=sample-project  compile jib:dockerBuild

由于不将其推送到注册表,所以选择使用 jib:dockerBuild。

如果正常结束的话,您可以通过 docker images 命令来查看构建结果。

>docker images |findstr spring-boot
gcr.io/sample-project/spring-boot-sample   0.1.0-SNAPSHOT      4cc738f189da        46 seconds ago      997MB
>

应用程序的部署

将kubernetes/020_deployments.yml文件中的images部分更改为以下内容。

変更前:image: gcr.io/{change-me-gcp-project}/spring-boot-sample:0.1.0-SNAPSHOT
変更後:image: gcr.io/sample-project/spring-boot-sample:0.1.0-SNAPSHOT

由于使用本地映像,因此不会从注册表中获取不需要的Docker映像。

変更前:imagePullPolicy: Always
変更後:imagePullPolicy: IfNotPresent

申请。

> kubectl apply -f kubernetes
configmap "spring-boot-config" created
deployment.apps "spring-boot-sample" created
service "spring-boot-sample" created
>

确认应用程序的运行

使用NodePort进行访问。

我通过访问以下URL确认其正常运行。
http://localhost:30000/sample/hello

赠品

让我们试试运行Ingress。

我能玩 Ingress 吗?虽然只有一个服务,但我试试看。

从我看来似乎是可以的。

创建入口控制器

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/mandatory.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/provider/cloud-generic.yaml

创建Ingress

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: samplelb
spec:
  backend:
    serviceName: spring-boot-sample
    servicePort: 30000
  rules:
  - http:
      paths:
      - path: /*
        backend:
          serviceName: spring-boot-sample
          servicePort: 30000

我申请。

> kubectl apply -f kubernetes\040_ingress.yaml
ingress.extensions "samplelb" created
>

确认动作

> kubectl get ingress
NAME       HOSTS     ADDRESS     PORTS     AGE
samplelb   *         localhost   80        18m

>

http://localhost:30000/sample/hello的运作正常。

看起来Kubernetes的大部分功能都能够运行。在角色相关的细节方面可能不能太精确,但对于基本运行来说应该足够了。

变更历史

2018年8月12日 21:22

Windows稳定版的Docker已经可用于使用Kubernetes了!整个文章也已经改为使用稳定版的安装方法等。没有问题,可以启动应用程序,并确认Ingress的运行情况。非常感谢rubytomato@github的信息。

广告
将在 10 秒后关闭
bannerAds