尝试在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获取它。它通常会下载到您的下载文件夹,或者您可以从网页浏览器底部的最近下载栏运行它。
执行安装程序
Kubernetes的执行
启用Kubernetes
准备使用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的信息。