启动 Docker Desktop自带的Kubernetes
基于 Docker Desktop 4.4.2 + kubernetes 1.22.5
大概分以下几步:
- 步骤1:安装 Docker Desktop
- 步骤2:下载 Kubernetes 镜像并启动运行
- 步骤3:下载 kubectl 工具
- 步骤4:启用 Dashboard(可选)
步骤1:安装 Docker Desktop
从 Docker 官网导航菜单,可以找到 Docker Desktop 产品页面,选择指定平台的版本下载。
备注:懒人可以参见本文末尾附件,以进行快速下载。
也可以访问 Docker Hub,找到社区版 Docker CE,并根据自己的操作系统选择对应的产品。
对于我这种新手来说,选择稳定版本即可:
不同的版本内置的 kubernetes 版本不一样,请在安装完 Docker Desktop 后到关于对话框查看具体的版本号。
- Docker Version 4.4.2~ 》kubernetes 1.22.5
- Docker Version 4.3.0~ 》kubernetes 1.22.4
- Docker Version 4.1.0~4.2.0 》kubernetes 1.21.5
如果要下载指定版本,可查看版本发布历史。 - macOS release notes
- Windows release notes
步骤2:下载 Kubernetes 镜像并启动运行
要想把 Kubernetes 启动起来,需要先下载 Kubernetes 组件的镜像。因为在阿里云上,有同步镜像的组件,我们就不需要翻到官网下载了。借鉴网上找到脚本 k8s-deploy,进行改良一下,加入了 Dashboard 组件进去。大家如果只使用 kubectl 来控制 Kubernetes 的话,可以自己将这部分去掉。对于新手来说,可能有个网页界面,看着舒服些。
另外,为了更顺畅的运行,可进入状态栏图标的下拉菜单项 “Preferences”,打开首选项对话框,选择“Resources > ADVANCED”,稍微调大一点运行资源:
再在 Docker Engine 的配置脚本中,添加国内的 Docker Hub、GCR、Quay 镜像加速器地址(比如七牛云、中科大、Azure、网易云、阿里云、Docker-cn等),从而提升获取 Docker 官方镜像的速度。你可以配置一个或多个地址。
{"debug": true,"experimental": false,"registry-mirrors": ["https://********.mirror.aliyuncs.com","https://mirror.ccs.tencentyun.com","https://reg-mirror.qiniu.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","https://hub-mirror.c.163.com","https://registry.docker-cn.com"],"insecure-registries": ["try-registry.mydomain.com"]}
备注:
- 阿里云的镜像加速器地址,参见 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors ,然后将 ******** 变更为你获取到的地址。
- 如果有自己搭建的、未配置 TLS 的镜像仓库,可以 insecure-registries 中添加。
现在,创建一个拉取 Kubernetes 镜像的脚本文件。
macOS 平台:docker-images-k8s.sh
#!/bin/bash
set -e
KUBE_VERSION=v1.22.5
KUBE_PAUSE_VERSION=3.5
ETCD_VERSION=3.5.0-0
COREDNS_VERSION=v1.8.4
GCR_URL=k8s.gcr.io
ALIYUN_URL=registry.cn-hangzhou.aliyuncs.com/google_containers
# get images
images=(kube-proxy:$KUBE_VERSION
kube-scheduler:$KUBE_VERSION
kube-controller-manager:$KUBE_VERSION
kube-apiserver:$KUBE_VERSION
pause:$KUBE_PAUSE_VERSION
etcd:$ETCD_VERSION)
for imageName in ${images[@]} ; do
docker pull $ALIYUN_URL/$imageName
docker tag $ALIYUN_URL/$imageName $GCR_URL/$imageName
docker rmi $ALIYUN_URL/$imageName
done
# get images - coredns
docker pull $ALIYUN_URL/coredns:$COREDNS_VERSION
docker tag $ALIYUN_URL/coredns:$COREDNS_VERSION $GCR_URL/coredns/coredns:$COREDNS_VERSION
docker rmi $ALIYUN_URL/coredns:$COREDNS_VERSION
# show images
docker images
旧版本 kubernetes 1.22.4:
KUBE_VERSION=v1.22.4
KUBE_PAUSE_VERSION=3.5
ETCD_VERSION=3.5.0-0
COREDNS_VERSION=v1.8.4
旧版本 kubernetes 1.21.5:
KUBE_VERSION=v1.21.5
KUBE_PAUSE_VERSION=3.4.1
ETCD_VERSION=3.4.13-0
COREDNS_VERSION=v1.8.0
接下来,我们增加文件的执行权限,并运行一下这个脚本:
$ chmod +x docker-images-k8s.sh
$ ./docker-images-k8s.sh
看到最终的运行结果:
REPOSITORY TAG IMAGE ID CREATED SIZE
docker/desktop-kubernetes kubernetes-v1.22.5-cni-v0.8.5-critools-v1.17.0-debian 88c30feb8fa7 3 weeks ago 294MB
k8s.gcr.io/kube-apiserver v1.22.5 059e6cd8cf78 6 weeks ago 128MB
k8s.gcr.io/kube-controller-manager v1.22.5 04185bc88e08 6 weeks ago 122MB
k8s.gcr.io/kube-scheduler v1.22.5 935d8fdc2d52 6 weeks ago 52.7MB
k8s.gcr.io/kube-proxy v1.22.5 8f8fdd6672d4 6 weeks ago 104MB
k8s.gcr.io/etcd 3.5.0-0 004811815584 7 months ago 295MB
k8s.gcr.io/coredns/coredns v1.8.4 8d147537fb7d 8 months ago 47.6MB
docker/desktop-vpnkit-controller v2.0 8c2c38aa676e 8 months ago 21MB
docker/desktop-storage-provisioner v2.0 99f89471f470 9 months ago 41.9MB
k8s.gcr.io/pause 3.5 ed210e3e4a5b 10 months ago 683kB
这时候稍等片刻,就可以看到 Kubernetes 已正常运行了。
Windows 平台:docker-images-k8s.ps1
$KUBE_VERSION="v1.22.5"
$KUBE_PAUSE_VERSION="3.5"
$ETCD_VERSION="3.5.0-0"
$COREDNS_VERSION="v1.8.4"
$GCR_URL="k8s.gcr.io"
$ALIYUN_URL="registry.cn-hangzhou.aliyuncs.com/google_containers"
# get images
docker pull $ALIYUN_URL/pause:$KUBE_PAUSE_VERSION
docker tag $ALIYUN_URL/pause:$KUBE_PAUSE_VERSION $GCR_URL/pause:$KUBE_PAUSE_VERSION
docker rmi $ALIYUN_URL/pause:$KUBE_PAUSE_VERSION
docker pull $ALIYUN_URL/kube-controller-manager:$KUBE_VERSION
docker tag $ALIYUN_URL/kube-controller-manager:$KUBE_VERSION $GCR_URL/kube-controller-manager:$KUBE_VERSION
docker rmi $ALIYUN_URL/kube-controller-manager:$KUBE_VERSION
docker pull $ALIYUN_URL/kube-scheduler:$KUBE_VERSION
docker tag $ALIYUN_URL/kube-scheduler:$KUBE_VERSION $GCR_URL/kube-scheduler:$KUBE_VERSION
docker rmi $ALIYUN_URL/kube-scheduler:$KUBE_VERSION
docker pull $ALIYUN_URL/kube-proxy:$KUBE_VERSION
docker tag $ALIYUN_URL/kube-proxy:$KUBE_VERSION $GCR_URL/kube-proxy:$KUBE_VERSION
docker rmi $ALIYUN_URL/kube-proxy:$KUBE_VERSION
docker pull $ALIYUN_URL/kube-apiserver:$KUBE_VERSION
docker tag $ALIYUN_URL/kube-apiserver:$KUBE_VERSION $GCR_URL/kube-apiserver:$KUBE_VERSION
docker rmi $ALIYUN_URL/kube-apiserver:$KUBE_VERSION
docker pull $ALIYUN_URL/etcd:$ETCD_VERSION
docker tag $ALIYUN_URL/etcd:$ETCD_VERSION $GCR_URL/etcd:$ETCD_VERSION
docker rmi $ALIYUN_URL/etcd:$ETCD_VERSION
docker pull $ALIYUN_URL/coredns:$COREDNS_VERSION
docker tag $ALIYUN_URL/coredns:$COREDNS_VERSION $GCR_URL/coredns/coredns:$COREDNS_VERSION
docker rmi $ALIYUN_URL/coredns:$COREDNS_VERSION
# show images
docker images
使用 PowerShell 来执行脚本:
.\docker-images-k8s.ps1
备注:如果因为安全策略而无法执行 PowerShell 脚本,请在 “以管理员身份运行” 的 PowerShell 中执行 Set-ExecutionPolicy RemoteSigned 命令。
步骤3:下载 kubectl 工具
根据你电脑的操作系统,从 github 上直接下载指定平台版本的 kubectl。
kubernetes 1.22.5
- macOS amd64 下载地址:kubernetes-client-darwin-amd64.tar.gz
- macOS arm64 下载地址:kubernetes-client-darwin-arm64.tar.gz
- Windows amd64 下载地址:kubernetes-client-windows-amd64.tar.gz
下载后解压 kubectl 到某个目录下。然后打开终端命令行,进入这个目录,执行以下脚本,将其变更为可执行命令,同时移动到系统特定目录下。
对于 macOS 版本,下载后解压 kubectl 文件到 /usr/local/bin 目录下(以 amd64 版本为例)。
$ tar zxvf kubernetes-client-darwin-amd64.tar.gz
$ cd ./kubernetes/client/bin
$ chmod +x kubectl && mv kubectl /usr/local/bin/kubectl
对于 Windows 版本,下载后解压 kubectl.exe 文件到 C:\Windows\System32 目录下。
我们可以看下 kubectl 的版本号:
Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.5", GitCommit:"5c99e2ac2ff9a3c549d9ca665e7bc05a3e18f07e", GitTreeState:"clean", BuildDate:"2021-12-16T08:38:33Z", GoVersion:"go1.16.12", Compiler:"gc", Platform:"darwin/amd64"}Server Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.5", GitCommit:"5c99e2ac2ff9a3c549d9ca665e7bc05a3e18f07e", GitTreeState:"clean", BuildDate:"2021-12-16T08:32:32Z", GoVersion:"go1.16.12", Compiler:"gc", Platform:"linux/amd64"}
步骤4:启用 Dashboard(可选)
需要注意的是,因为 Dashboard 的版本是单独演进的,参见 https://github.com/kubernetes/dashboard ,现使用的 v2.4.0 可以在 recommended.yaml 文件中查看到使用的容器镜像版本。
建议提前下载这两个镜像:
docker pull kubernetesui/dashboard:v2.4.0
docker pull kubernetesui/metrics-scraper:v1.0.7
接下来,我们要想启动 Kubernetes Dashboard,还得在集群中部署一下 recommended.yaml。
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml
namespace/kubernetes-dashboard created
serviceaccount/kubernetes-dashboard created
service/kubernetes-dashboard created
secret/kubernetes-dashboard-certs created
secret/kubernetes-dashboard-csrf created
secret/kubernetes-dashboard-key-holder created
configmap/kubernetes-dashboard-settings created
role.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
deployment.apps/kubernetes-dashboard created
service/dashboard-metrics-scraper created
deployment.apps/dashboard-metrics-scraper created
如果执行此命令有问题,可从之前网页上看到的 recommended.yaml 另存为本地来执行,或者使用文末附件网盘里已经帮你保存好的文件。
kubectl apply -f dashboard-recommended.yaml
部署成功后,启动 Kubernetes API Server 访问代理。
kubectl proxy
Starting to serve on 127.0.0.1:8001
这时候,打开浏览器,通过如下 URL 访问 Kubernetes Dashboard:http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/
通过以下脚本,配置访问控制台所需的令牌。
macOS 平台:
TOKEN=$(kubectl -n kube-system describe secret default| awk '$1=="token:"{print $2}')
kubectl config set-credentials docker-desktop --token="${TOKEN}"
echo $TOKEN
Windows 平台:
$TOKEN=((kubectl -n kube-system describe secret default | Select-String "token:") -split " +")[1]
kubectl config set-credentials docker-desktop --token="${TOKEN}"
echo $TOKEN
复制生成的令牌字符串,并在登录对话框中选择“令牌”方式登录后,粘贴到输入框中,登录即可。
要想重新找到令牌字符串,可以查看 kubeconfig 文件。
macOS 平台:
$HOME/.kube/config
可以使用 “shift + command + .” 命令查看隐藏目录,并找到文件 ~/.kube/config 。
- Windows 平台:
%UserProfile%\.kube\config
找到 kubeconfig 文档后,在文档末尾就可以发现刚生成的令牌。
token: eyJh....UIUT-GFkv....WDtO-XesQ....5Kwh-ONGgbgAQFIVf0MdA
好的,那就介绍到这里。
如果在使用 Docker 中还是出现各种异常,可以考虑使用状态栏图标的下拉菜单项 “Troubleshoot”,打开故障排除对话框,以解决各种疑难杂症。
如果是从旧版本升级,出现始终无法正常启动时,建议 Clear / Purge Data 一下,完全从头执行一遍。
如果要检查 Pod 是否正常运行,可以考虑使用状态栏图标的下拉菜单项 “Dashboard”,就可以查看当前运行的 Pod 情况。如果有问题可以手动将相关的镜像删除,并重新拉取后,再重启 Docker 试下。
转自链接:https://www.jianshu.com/p/e5c056baa8ab
对于文章中提到的安装文件或脚本。↓↓↓下载地址↓↓↓
发表评论