在Windows 10上安装Docker Desktop并启用Kubernetes
更新:HHH   时间:2023-1-7


引言:在Windows上安装并启用kubernetes对于刚接触Kubernetes的开发人员是非常有帮助的。

在Windows 10上安装Docker Desktop

Windows版的Docker Desktop 是社区版本,您可以从Docker Hub上直接下载,下载链接如下:

https://hub.docker.com/?overlay=onboarding

注:在使用stable版(2.1.0.5)时,Docker Desktop偶尔会出现lifecycleserver超时无法正常启动,而使用Edge(2.1.7.0)版本正常。

系统要求:

1、Windows 10 64位,专业版、企业版、教育版(15063或更高版本),推荐从msdn上下载cn_windows_10_business_editions_version_1903_updated_sept_2019_x64_dvd_2f5281e1.iso(ed2k://|file|cn_windows_10_business_editions_version_1903_updated_sept_2019_x64_dvd_2f5281e1.iso|5231140864|B1D5C4C401036B0B1EBA64476A95F338|/)

2、必须启用了Hyper-V和windows 容器特性

硬件要求:

1、支持SLAT(Second Level Address Translation)的64位处理器

2、4GB或以上内存

3、必须在BIOS中设置启用硬件虚拟化

使用Docker Toolbox和Docker Machine或者Vmware的用户需知

Docker Desktop需要安装并启用Microsoft Hyper-V,并重新启动计算机。当启用Hyper-V后,VirtualBox或者Vmware将不能再正常使用。然而,任何现有的虚拟机镜像都会被保留。

使用docker-machine创建的VirtualBox虚拟机(包括安装Toolbox期间创建的默认虚拟机)将不能启动。这些虚拟机不能与Docker Desktop一起同时使用。但是,您仍然可以使用docker machine来管理vms。

注意:禁用Hyper-V后,仍可以正常使用VirtualBox和vmware。

安装Docker Desktop将包含以下内容

1、Docker引擎、Docker CLI、Docker Compose、Docker Machine和Kitematic。

2、使用Docker Desktop创建的容器和镜像在安装Docker Desktop的计算机上的所有用户帐户之间共享。这是因为所有Windows帐户都使用同一个VM来构建和运行容器。

3、嵌套的虚拟化场景,例如在VMWare或Parallels实例上运行Docker Desktop,可能可以正常使用,但不能保证。

注意:有关Docker与Windows服务器的完整兼容性信息,请参阅Docker兼容性列表(https://success.docker.com/article/compatibility-matrix)。

安装Hyper-V和Containers

单击 "控制面板" -->"所有控制面板" -->"程序和功能" -->"启用或关闭Windows功能",勾选上"Containers"和"Hyper-V",如下图1.1所示。

图1.1

安装完Hyper-V后会提示重启系统,完成重启后,我们可以在任务管理器中看到,在性能菜单中查看到CPU的虚拟化已启用,如图1.2所示。

图1.2

安装Docker Desktop

接下来开始安装Docker Desktop,双击“Docker Desktop Installer”开始安装,如图1.3所示。

图1.3

按默认勾选,完成安装,如图1.4所示。

图1.4

关于Windows容器

Use Windows containers instead of Linux containers(this can be changed after installation)表示是否用Windows容器来替代Linux容器(该切换操作在软件完成安装后也是可以切换的)

Windows和Linux容器之间的切换描述了如何在Docker Desktop中切换Linux和Windows容器(可参考:https://docs.docker.com/docker-for-windows/#switch-between-windows-and-linux-containers)。

Windows容器入门提供了如何在Windows 10、Windows Server 2016和Windows Server 2019上设置和运行Windows容器的教程(可参考:https://github.com/docker/labs/blob/master/windows/windows-containers/README.md)。

安装完成后,会提示注销当前用户并重新登录,点击"Close and log out",重新登录后,Docker Desktop会自动运行,这需要一定的时间才能完成启动,在启动过程中可能会告知Hyper-V和Containers的特性还未启用,询问是否启用,如图1.5所示,点击“OK"。

图1.5

Docker Desktop启动成功后,您应该会在电脑右下角的系统托盘中看到Docker图标,并且颜色是白色状态(若为红色则表示启动异常),如图1.6所示。然后还会弹出登录Docker Hub的对话框,如下图所示,如果你在Docker Hub上有注册过账号,此时是可以登录的,如图1.7所示。

图1.6

图1.7

右击系统托盘的docker图标,点击"About Docker Desktop",获取各组件版本信息,如图1.8所示。

图1.8

启用Kubernetes

右击系统托盘的docker图标,在导航中,选择“Settints" ,如图1.9所示。

图1.9

首先,设置Docker的镜像源为daocloud,便于后续镜像加速下载,如图1.10所示。

图1.10

{

  "registry-mirrors": [“http://f1361db2.m.daocloud.io”],

  "insecure-registries": [],

  "debug": true,

  "experimental": true

}

若我们直接在Setttings中勾选并启动kubernetes是无法启动成功的,原因是Docker Desktop在初始化kubernetes时所用到的镜像image都是国外源,无法下载成功。可以从 https://github.com/AliyunContainerService/k8s-for-docker-desktop 下载。

当前master分支默认为1.15.5版本,而我们安装的Docker Desktop中的Kubernetes版本就是1.15.5,所以克隆后,不需要checkout到其他分支

# git clone https://github.com/AliyunContainerService/k8s-for-docker-desktop.git

在Windows上,使用 PowerShell执行以命令命令,如图1.11所示

.\load_images.ps1

若报提示禁止运行脚本问题,则先以管理员运行PowerShell,并执行以下命令,按"Y"键确认

Set-ExecutionPolicy –ExecutionPolicy

图1.11

kubernetes的镜像下载成功后,再进入到Docker Desktop的"Settings"中,选中标记为"Enable Kubernetes"的复选框,如图1.12所示,然后单击"Apply&Restart"。Docker Desktop开始设置并启动Kubernetes。当成功启动Kubernetes后,我们可看到“Kubernetes is running”,左侧状态显示绿色,您就会知道一切都已成功完成。

图1.12

配置 Kubernetes 控制台

一个没有Web管理界面的Kubernetes对于小白来讲是没有灵魂的。

部署 Kubernetes dashboard


# kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

注:若提示"Unable to connect to the server...",可以多执行几次,或者先通过其他途径Wget下来,然后再执行命令 kubectl apply -f kubernetes-dashboard.yaml 。

开启 API Server 访问代理(当然,我们还可以使用NodePort方式发布Kubernetes dashboard的端口,这样就不需要启动kube proxy了,相关设置将在Linux部署版本中讲解)

# kubectl proxy &

通过如下 URL 访问 Kubernetes dashboard,如图1.13所示,使用kubeconfig登录。

http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/overview?namespace=default

图1.13

登录方式一

使用Kubeconfig文件登录,Kubeconfig文件位于:C:\Users\xxuser\.kube\config

登录方式二

配置控制台令牌并使用令牌登录,如图1.14所示

图1.14

创建并查看访问令牌方法如图1.15所示。


PS C:\Users\tgh> kubectl get pods -n kube-system

NAME                                     READY   STATUS    RESTARTS   AGE

coredns-5c98db65d4-gctdb                 1/1     Running   0          122m

coredns-5c98db65d4-kbvbt                 1/1     Running   0          122m

etcd-docker-desktop                      1/1     Running   0          121m

kube-apiserver-docker-desktop            1/1     Running   0          121m

kube-controller-manager-docker-desktop   1/1     Running   0          120m

kube-proxy-v6lln                         1/1     Running   0          122m

kube-scheduler-docker-desktop            1/1     Running   0          121m

kubernetes-dashboard-7d75c474bb-znk76    1/1     Running   0          22m

  

$TOKEN=((kubectl -n kube-system describe secret default | Select-String "token:") -split " +")[1]

kubectl config set-credentials docker-for-desktop --token="${TOKEN}"

echo $TOKEN

eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkZWZhdWx0LXRva2VuLXN4azhyIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRlZmF1bHQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIyZjZmZWZiYi05NGM3LTQ0NzAtYWNkOS1mNzE1NDBhZDNmN2IiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06ZGVmYXVsdCJ9.SeZDjaQsXdXyYyCh9hXqoAs93C9KXk766BfRBqy_E0u35uonHtLA6hezahMJUPJxcri1-cJHGhAACjTPZvhwq1hJnEQk2WHErh9DUlrcfSbEN0gQ5xxafhFa76praHHgpkRNZD0lgypfRzOtixwee3OPtMm2Jy_4nmwTr2lGAV-_Vu70VMutM1gk9QLVaBJS2NCDKoL_0z6JPqwpNbkIr3fsW8LWOVUSh2NNYbGlnKhjE9EnN_TbviXJpZQ4BUxgIA1IgbUZ9K6mch8Fp4Vawug_kxWu-ZhM21yK35I-cQ-FB7lRamdxhrr2nv8mRI5GX5_D74PbxUC98Uil3iUixA

图1.15

成功登录到Kubernetes 控制台,如图1.16所示。

图1.16

为了确认Kubernetes已启动并正常运行,现在创建一个名为pod.yaml的文本文件,其中包含以下内容:

apiVersion: v1

kind: Pod

metadata:

  name: demo

spec:

  containers:

  - name: testpod

    image: alpine:3.5

    command: ["ping", "114.114.114.114"]

如图1.17所示

图1.17

这段yaml配置用于创建一个pod,并且该pod中仅有一个容器(副本数为1),在该容器中执行ping命令。

在Powershell中执行如下命令创建pod。

kubectl apply -f pod.yaml

查看pod是否正常运行

# kubectl get pods

查看pod日志 

# kubectl logs demo


如图1.18所示。

图1.18

最后,删除这个pod,如图1.19所示。

图1.19


接下来我们就可以开启探索Kubernetes之旅了。


返回云计算教程...