引言:在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之旅了。