dockerDesktop 安装自带k8s 1.19.7版本

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 另存为本地来执行。

http://file.adsl2812358.top/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....

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Kubernetes是一个流行的容器编排工具,它可以自动化应用程序的部署、扩展和管理。Kubernetes 1.19.7是一个稳定版本,下面是关于如何离线部署Kubernetes 1.19.7的步骤: 1. 获取离线部署所需的二进制文件和镜像:离线部署需要提前准备Kubernetes二进制文件、Kubernetes组件的镜像以及其他依赖的工具和组件的二进制文件和镜像。可以通过官方网站下载或使用其他途径获取这些文件和镜像。 2. 配置Kubernetes集群:在开始部署之前,需要配置Kubernetes集群的各个组件,包括Master节点和Worker节点的网络、存储和安全设置等。根据实际需求进行配置,并确保各组件之间能够正常通信。 3. 安装etcd:etcd是Kubernetes的数据存储组件,用于存储集群的状态信息。先安装etcd集群,并确保集群处于健康状态。 4. 部署Master节点:在Master节点上部署Kubernetes的核心组件,包括kube-apiserver、kube-controller-manager、kube-scheduler等。按照官方文档提供的步骤和参数进行安装和配置。 5. 部署Worker节点:在Worker节点上部署Kubernetes的工作组件,包括kubelet和kube-proxy。同样,按照官方文档提供的步骤和参数进行安装和配置。 6. 部署网络插件:部署网络插件是为了使集群中的各个容器可以相互通信。根据实际需求选择合适的网络插件,并按照官方文档提供的步骤进行安装和配置。 7. 部署其他组件:根据实际需求,可以部署其他的Kubernetes组件,如Ingress控制器、Dashboard等。同样,按照官方文档提供的步骤进行安装和配置。 8. 验证集群:完成以上步骤后,可以使用kubectl命令验证集群的正常运行。比如,可以使用kubectl get pods命令查看集群中运行的Pod,以确保集群正常工作。 请注意,离线部署Kubernetes需要提前准备好相应的二进制文件和镜像,并且要仔细阅读官方文档,确保按照正确的步骤进行部署和配置。 ### 回答2: k8s1.19.7离线部署是指在没有互联网连接或无法直接下载Kubernetes软件包的环境中,将Kubernetes集群部署起来。以下是一个简要的步骤: 1. 下载所需的软件包: 首先,在有互联网连接的环境中,下载Kubernetes 1.19.7版本的所有相关软件包,包括kubeadm、kubelet和kubectl。你可以通过访问官方网站或使用工具从镜像源进行下载。 2. 复制软件包到离线环境: 将下载好的软件包复制到离线环境中,可以使用USB存储设备或其他文件传输方式。 3. 安装Docker和相关依赖: 在离线环境中,安装Docker并配置Docker镜像源,以便在部署过程中可以拉取所需的容器镜像。同时,安装其他Kubernetes所需的依赖。 4. 初始化主节点: 在主节点上使用kubeadm初始化Kubernetes集群。根据你的网络环境,可以选择配置私有的Pod网络和Service网络。 5. 加入工作节点: 在工作节点上安装同样版本的Kubernetes软件包,并使用kubeadm将其加入到已初始化的主节点。 6. 配置网络插件: 根据你的需求选择一个适合的网络插件,如Calico、Flannel等,并在集群中配置。 7. 配置存储和其他组件: 这包括配置持久化存储、添加Dashboard等其他Kubernetes组件。 8. 验证集群: 使用kubectl命令和其他工具验证集群的状态和功能是否正常运行。 通过以上步骤,你可以在离线环境中成功部署Kubernetes 1.19.7版本的集群。请注意,这只是一个简要的步骤概述,实际操作中可能会遇到不同的问题和挑战,需要根据具体环境进行相应的调整和处理。 ### 回答3: Kubernetes(简称K8s)是一个开源的容器管理平台,它可以帮助我们自动化和管理容器化应用程序的部署、扩展和管理。在离线环境中部署Kubernetes可以确保在没有互联网连接的情况下使用Kubernetes进行应用程序的管理和协调工作。 要在离线环境中部署Kubernetes 1.19.7,需要进行以下步骤: 1. 准备离线环境: 在没有互联网连接的环境中,需要事先准备好离线环境所需的安装文件和软件包。这包括Kubernetes的二进制文件、镜像文件、网络插件、存储插件等。 2. 安装Docker: 首先,需要在离线环境中安装Docker。在离线环境中,可以事先将Docker镜像手动导入到离线环境中,并手动安装Docker。 3. 安装Kubernetes二进制文件: 将Kubernetes的二进制文件传输到离线环境中,并在所有的节点上进行安装。这包括kubeadm、kubelet和kubectl等二进制文件。 4. 导入Kubernetes镜像: 将事先准备好的Kubernetes镜像文件导入到离线环境中。可以使用docker load命令将镜像导入到Docker中。 5. 配置Kubernetes集群: 在离线环境中,需要手动配置Kubernetes集群的各个组件。这包括初始化Master节点、加入Worker节点以及配置网络和存储插件等。 6. 启动Kubernetes集群: 在所有节点上,启动Kubernetes集群的各个组件。可以使用systemctl命令启动kubelet服务,并手动启动其他组件。 7. 验证Kubernetes集群: 最后,在离线环境中验证Kubernetes集群的正常运行。可以使用kubectl命令检查集群的状态,并部署简单的测试应用程序来验证集群的功能。 通过以上步骤,您可以在离线环境中成功部署Kubernetes 1.19.7,并使用它来管理和协调容器化应用程序。需要注意的是,在离线环境中部署Kubernetes可能会比在线环境中更复杂和繁琐,因此在准备和执行过程中需要仔细阅读相关文档,并确保准备好离线环境所需的所有组件和文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值