DockerDesktop 安装自带k8s 1.19.7版本
开始之前请确认安装了 Docker Desktop
下载 Kubernetes 镜像并启动运行
要想把 Kubernetes 启动起来,需要先下载 Kubernetes 组件的镜像。因为在阿里云上,有同步镜像的组件,我们就不需要翻到官网下载了。借鉴网上找到脚本 k8s-deploy,进行改良一下,加入了 Dashboard 组件进去。大家如果只使用 kubectl 来控制 Kubernetes 的话,可以自己将这部分去掉。对于新手来说,可能有个网页界面,看着舒服些。
另外,为了更顺畅的运行,可进入状态栏图标的下拉菜单项 “Preferences”,打开首选项对话框,选择“Resources > ADVANCED”,稍微调大一点运行资源:
再在 Docker Engine 的配置脚本中,添加国内的 Docker Hub、GCR、Quay 镜像加速器地址(比如七牛云、中科大、Azure、网易云、阿里云、Docker-cn等),从而提升获取 Docker 官方镜像的速度。你可以配置一个或多个地址。
{
"registry-mirrors": [
"https://registry.docker-cn.com",
"https://dockerhub.azk8s.cn",
"https://reg-mirror.qiniu.com",
"https://hub-mirror.c.163.com"
],
"insecure-registries": [
],
"debug": false,
"experimental": false,
"features": {
"buildkit": true
}
现在,创建一个拉取 Kubernetes 镜像的脚本文件。
macOS 平台:docker-images-k8s.sh
#!/bin/bash
set -e
KUBE_VERSION=v1.19.7
KUBE_PAUSE_VERSION=3.2
ETCD_VERSION=3.4.13-0
COREDNS_VERSION=1.7.0
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}
coredns:${COREDNS_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
# show images
docker images
接下来,我们增加文件的执行权限,并运行一下这个脚本:
$ chmod +x docker-images-k8s.sh
$ ./docker-images-k8s.sh
REPOSITORY TAG IMAGE ID CREATED SIZE
minio/minio latest a49505aef004 3 weeks ago 184MB
docker/desktop-kubernetes kubernetes-v1.19.7-cni-v0.8.5-critools-v1.17.0-debian 93b3398dbfde 7 weeks ago 285MB
k8s.gcr.io/kube-proxy v1.19.7 9d368f4517bb 2 months ago 118MB
k8s.gcr.io/kube-apiserver v1.19.7 c15e4f843f01 2 months ago 119MB
k8s.gcr.io/kube-scheduler v1.19.7 4fa642720eea 2 months ago 45.6MB
k8s.gcr.io/kube-controller-manager v1.19.7 67b3bca112d1 2 months ago 111MB
k8s.gcr.io/etcd 3.4.13-0 0369cf4303ff 6 months ago 253MB
kubernetesui/dashboard v2.0.3 503bc4b7440b 9 months ago 225MB
k8s.gcr.io/coredns 1.7.0 bfe3a36ebd25 9 months ago 45.2MB
kubernetesui/metrics-scraper v1.0.4 86262685d9ab 12 months ago 36.9MB
docker/desktop-storage-provisioner v1.1 e704287ce753 12 months ago 41.8MB
docker/desktop-vpnkit-controller v1.0 79da37e5a3aa 12 months ago 36.6MB
k8s.gcr.io/pause 3.2 80d28bedfe5d 13 months ago 683kB
quay.io/kubernetes-ingress-controller/nginx-ingress-controller 0.26.1 29024c9c6e70 18 months ago 483MB
另外,如果需要网页控制台界面,创建以下脚本文件(可选):
**docker-images-dashboard.sh **
#!/bin/bash
set -e
KUBE_DASHBOARD_VERSION=v2.0.3
METRICS_SCRAPER=v1.0.4
KUBENETESUI_URL=kubernetesui
ALIYUN_KUBENETESUI_URL=registry.cn-hangzhou.aliyuncs.com/kubernetes_ns
# get images (ui)
imagesui=(dashboard:${KUBE_DASHBOARD_VERSION}
metrics-scraper:${METRICS_SCRAPER})
for imageName in ${imagesui[@]} ; do
docker pull $ALIYUN_KUBENETESUI_URL/$imageName
docker tag $ALIYUN_KUBENETESUI_URL/$imageName $KUBENETESUI_URL/$imageName
docker rmi $ALIYUN_KUBENETESUI_URL/$imageName
done
# show images
docker images
运行脚本
$ chmod +x docker-images-dashboard.sh
$ ./docker-images-dashboard.sh
这时候稍等片刻,就可以看到 Kubernetes 已正常运行了。
Windows 平台:docker-images-k8s.ps1
使用 PowerShell 来执行脚本。
首先创建一个镜像对应表文件 images.properties:
k8s.gcr.io/pause:3.2=registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2
k8s.gcr.io/kube-controller-manager:v1.19.7=registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.19.7
k8s.gcr.io/kube-scheduler:v1.19.7=registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.19.7
k8s.gcr.io/kube-proxy:v1.19.7=registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.19.7
k8s.gcr.io/kube-apiserver:v1.19.7=registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.19.7
k8s.gcr.io/etcd:3.4.13-0=registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.13-0
k8s.gcr.io/coredns:1.7.0=registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.7.0
另外,如果需要网页控制台界面,可选
kubernetesui/dashboard:v2.0.3=registry.cn-hangzhou.aliyuncs.com/kubernetes_ns/dashboard:v2.0.3
kubernetesui/metrics-scraper:v1.0.4=registry.cn-hangzhou.aliyuncs.com/kubernetes_ns/metrics-scraper:v1.0.4
然后在相同目录下,创建脚本 docker-images-k8s.ps1:
foreach($line in Get-Content .\images.properties) {
$data = $line.Split('=')
$key = $data[0];
$value = $data[1];
Write-Output "$key=$value"
docker pull ${value}
docker tag ${value} ${key}
docker rmi ${value}
}
运行脚本
PS C:\docker_ps> .\docker-images-k8s.ps1
备注:如果因为安全策略而无法执行 PowerShell 脚本,请在 “以管理员身份运行” 的 PowerShell 中执行 Set-ExecutionPolicy RemoteSigned 命令。
运行成功
查询node
kubectl -n kube-system get node
PS C:\docker_ps> kubectl -n kube-system get node
NAME STATUS ROLES AGE VERSION
docker-desktop Ready master 13h v1.19.3
查询pod
kubectl -n kube-system get pods
PS C:\docker_ps> kubectl -n kube-system get pods
NAME READY STATUS RESTARTS AGE
coredns-f9fd979d6-5jg8z 1/1 Running 0 13h
coredns-f9fd979d6-5wr5d 1/1 Running 0 13h
etcd-docker-desktop 1/1 Running 0 13h
kube-apiserver-docker-desktop 1/1 Running 0 13h
kube-controller-manager-docker-desktop 1/1 Running 0 13h
kube-proxy-wglps 1/1 Running 0 13h
kube-scheduler-docker-desktop 1/1 Running 1 13h
storage-provisioner 1/1 Running 0 13h
vpnkit-controller 1/1 Running 0 13h
下载 kubectl 工具
macos
kubernetes 1.19.7 下载地址:kubernetwindowses-client-darwin-amd64.tar.gz
下载后解压 kubectl 到某个目录下。然后打开终端命令行,进入这个目录,执行以下脚本,将其变更为可执行命令,同时移动到系统特定目录下。
$ tar zxvf kubernetes-client-darwin-amd64.tar.gz
$ cd ./kubernetes/client/bin
$ chmod +x kubectl && mv kubectl /usr/local/bin/kubectl
windows
kubernetes 1.19.7 下载地址:kubernetwindowses-client-windows-amd64.tar.gz
下载后解压 kubectl.exe 文件到 C:\Windows\System32 目录下。
我们可以看下 kubectl 的版本号:
PS C:\Users\94961> kubectl version
Client Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.7", GitCommit:"1dd5338295409edcfff11505e7bb246f0d325d15", GitTreeState:"clean", BuildDate:"2021-01-13T13:23:52Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"windows/amd64"}
Server Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.7", GitCommit:"1dd5338295409edcfff11505e7bb246f0d325d15", GitTreeState:"clean", BuildDate:"2021-01-13T13:15:20Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"linux/amd64"}
启用 Dashboard(可选)
需要注意的是,因为 Dashboard 的版本是单独演进的,参见 https://github.com/kubernetes/dashboard 。当前版本为 v2.0.3。
可以在 recommended.yaml 文件查看到使用的容器镜像版本。
接下来,我们要想启动 Kubernetes Dashboard,还得在集群中部署一下 recommended.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.3/aio/deploy/recommended.yaml
recommended.yaml 文件可能因为网络原因无法下载 这里给出一个
备注
如果执行此命令有问题,可从之前网页查看的 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 平台:
可以使用 “shift + command + .” 命令查看隐藏目录,并找到文件 ~/.kube/config 。
$HOME/.kube/config
Windows 平台:
%UserProfile%\.kube\config
找到 kubeconfig 文档后,在文档末尾就可以发现刚生成的令牌。
token: eyJh....