zoukankan      html  css  js  c++  java
  • 使用 minikube 快速上手 Kubernetes | v1.7.3

    minikube 踩坑和填坑。

    minikube start

    环境说明

    宿主机的环境

    • 操作系统:Windows 10
    • 虚拟化:VirtualBox 6.0

    说明:在 Win 10 系统里尝试过 Hyper-V,感觉不好用,所以还是回归到了 VirtualBox。如果你用的是 Hyper-V,或者是 MacOS/Linux 操作系统,中间部分流程应该也可以参考。

    如果有疑问可以查看 官方文档

    版本

    • Minikube:1.7.3
    • Kubernetes:1.17.3

    说明:目前(2020-03-15)minikube 最新的版本是 1.8.2。我前几天尝试的版本是 1.8.1,踩到了其中的大 bug。

    从 1.8.0 版本开始,它在部署的时候需要下载一个 Preload tarball images 的镜像文件,大小有 500 MB。

    这个文件安装过程中是先下载到 .minikubecachepreloaded-tarball 目录中,并且支持断点续传。但是,当我把从其它地方下载完全的文件放到该目录中时,并没有效果。也就是说缓存实际上没用。

    最新的 1.8.2 似乎修复了这个 bug。

    Minikube 最新的 1.8.2 和 1.7.3 对应的 Kubernetes 版本都是 1.17.3。使用旧版本启动集群需要额外下载的软件大小是这个 preload image 的一半,而且鉴于这个功能现在还貌似不够稳定,所以 推荐 使用 1.7.3 版本的 minikube。

    下载

    使用 minikube 安装部署所需要下载(拉取)的东西分为以下几类:

    • minikube 命令:从 GitHub 上下载
    • minikube 启动虚机所需 iso:安装过程中自动下载,通过配置 --iso-url 加速,会缓存到本地
    • kubernetes 集群部署所需镜像,安装过程中自动拉取,通过配置 --image-repository 加速
    • kubernetes 集群部署所需程序,安装过程中自动下载,没有配置项,但是会缓存到本地
    • kubernetes 宿主机(即 Windows)所需客户端程序,安装过程自动下载,没有配置项,但是会缓存
    • 应用所需镜像:安装过程不涉及,但是可以通过 --registry-mirror 指定加速镜像

    可缓存的文件

    整理了可缓存下载的文件如下,它们在 minikube 部署集群的时候会自动下载,如果下载时间过长,可以考虑通过其它下载工具提前下载,保存到指定目录(具体下文会说到)。

    • kubectl.exe ,下载地址

      这是 Windows 系统下的 kubectl 客户端程序,启动 dashboard 时需要。
      不管是通过 minikube 哪个版本安装,这个文件都是必需的。

    • kubeadm, 下载地址

    • kubectl, 下载地址

    • kubelet, 下载地址

      这是 Linux 系统下的程序,虚拟机内安装 Kubernetes 需要。1.7.3 的 minikube 需要分别下载。

    • preloaded-images-k8s-v1-v1.17.3-docker-overlay2.tar.lz4, 下载地址

      这是 1.8.0 之后的 minikube 需要下载的文件

    以上文件下载无需FQ,但是要看情况,出现无法连接可以多试几次。

    安装 minikube

    minikube 就是单个 .exe 文件,既可以直接下载 minikube-windows-amd64.exe 然后改名,也可以下载 minikube-installer.exe 安装。推荐后者,因为安装包的体积更小,而且使用更方便。

    执行 minikube-installer.exe,这个安装过程非常简单。

    安装minikube

    默认安装路径是 C:Program FilesKubernetesMinikube,安装程序会自动把该路径加入到 PATH 中。

    运行 cmd 命令行,检查 minikube 的版本:

    > minikube version
    minikube version: v1.7.3
    commit: 436667c819c324e35d7e839f8116b968a2d0a3ff
    

    启动集群

    注意:如果以前安装过,需要使用 minikube delete 命令把旧版本删除。

    如果版本不一致或者出现莫名其妙的错误,可以把 C:Users你的用户名.minikube 也删除。

    minikube v1.7.3

    执行:

    minikube start --vm-driver=virtualbox --image-mirror-country=cn --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers --iso-url=https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/iso/minikube-v1.7.3.iso --registry-mirror=https://reg-mirror.qiniu.com
    
    

    选项说明:

    • --vm-driver 如果不写会自动检测,可选值 virtualbox, vmwarefusion, hyperv, vmware
    • --image-mirror-country 需要使用的镜像镜像的国家/地区代码。留空以使用全球代码。对于中国大陆用户,请将其设置为 cn。
    • --image-repository 用来拉取 Kubernetes 集群所需镜像的仓库
    • --iso-url 下载 minikube 虚机安装所需的 iso 文件
    • --registry-mirror docker registry 的镜像源,集群安装后拉取镜像加速用,可以使用其它加速器地址

    更多选项可以执行 minikube start --help

    首先是下载 iso 镜像:

    * minikube 1.8.2 is available! Download it: https://github.com/kubernetes/minikube/releases/tag/v1.8.2
    * To disable this notice, run: 'minikube config set WantUpdateNotification false'
    
    ! Microsoft Windows 10 Pro 10.0.18362 Build 18362 上的 minikube v1.7.3
    * Using the virtualbox driver based on user configuration
    * 正在使用镜像存储库 registry.cn-hangzhou.aliyuncs.com/google_containers
    * 正在下载 VM boot image...
        > minikube-v1.7.3.iso: 30.81 MiB / 167.39 MiB  18.41% 830.43 KiB p/s ETA 2m
    

    这时候会自动创建 C:Users你的用户名.minikube 文件夹,该目录下有一个 cache 文件夹,下载的文件都会缓存在这里。

    接下来是创建虚机:

    * 正在创建 virtualbox 虚拟机(CPUs=2,Memory=2000MB, Disk=20000MB)...
    * 正在 Docker 19.03.6 中准备 Kubernetes v1.17.3…
    

    这里的虚机配置对应的选项: --cpu=2--memory='2000mb'--disk-size='20000mb',可以自己指定。

    这个阶段虚机内部开始拉取镜像,所以会花一点时间,可以另起一个命令行,执行:

    > minikube ssh
                             _             _
                _         _ ( )           ( )
      ___ ___  (_)  ___  (_)| |/')  _   _ | |_      __
    /' _ ` _ `| |/' _ `| || , <  ( ) ( )| '_`  /'__`
    | ( ) ( ) || || ( ) || || |\` | (_) || |_) )(  ___/
    (_) (_) (_)(_)(_) (_)(_)(_) (_)`\___/'(_,__/'`\____)
    
    $ docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    $ docker images
    REPOSITORY                                                                    TAG                 IMAGE ID            CREATED             SIZE
    registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy                v1.17.3             ae853e93800d        4 weeks ago         116MB
    registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver            v1.17.3             90d27391b780        4 weeks ago         171MB
    registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager   v1.17.3             b0f1517c1f4b        4 weeks ago         161MB
    registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler            v1.17.3             d109c0821a2b        4 weeks ago         94.4MB
    registry.cn-hangzhou.aliyuncs.com/google_containers/dashboard                 v2.0.0-beta8        eb51a3597525        3 months ago        90.8MB
    registry.cn-hangzhou.aliyuncs.com/google_containers/coredns                   1.6.5               70f311871ae1        4 months ago        41.6MB
    registry.cn-hangzhou.aliyuncs.com/google_containers/etcd                      3.4.3-0             303ce5db0e90        4 months ago        288MB
    registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-scraper           v1.0.2              3b08661dc379        4 months ago        40.1MB
    registry.cn-hangzhou.aliyuncs.com/google_containers/pause                     3.1                 da86e6ba6ca1        2 years ago         742kB
    registry.cn-hangzhou.aliyuncs.com/google_containers/storage-provisioner       v1.8.1              4689081edb10        2 years ago         80.8MB
    $
    

    回到安装所在的命令行,可以看到需要下载的程序:

    如果感觉半天没动静了,可以按一下回车

    * 正在 Docker 19.03.6 中准备 Kubernetes v1.17.3…
    * 正在下载 kubelet v1.17.3
    * 正在下载 kubectl v1.17.3
    * 正在下载 kubeadm v1.17.3
    
    

    下载后的文件仍然是保存在 C:Users你的用户名.minikubecachelinuxv1.17.3 文件夹中,如果这里下载的较慢,可以:

    1. 提前下载好对应的文件
    2. 此处按下 Ctrl-C 中断 minikube
    3. 把文件拷贝到对应的文件夹下
    4. 重新执行上面的 minikube start 完整命令

    minikube 会从中断处继续往下执行。

    * 正在启动 Kubernetes ...
    * Enabling addons: default-storageclass, storage-provisioner
    * 等待集群上线...
    * 完成!kubectl 已经配置至 "minikube"
    * 为获得最佳结果,请安装 kubectl:https://kubernetes.io/docs/tasks/tools/install-kubectl/
    

    安装完成,来看看集群的状态:

    > minikube kubectl get nodes
    * 正在下载 kubectl.exe v1.17.3
    

    这里又要下载 Windows 系统下的 kubectl 客户端程序,下载后的文件保存在 C:Users你的用户名.minikubecachewindowsv1.17.3 文件夹中,如果这里下载的较慢,仍然可以提前下载好拷贝过去。

    > minikube kubectl get nodes
    NAME       STATUS   ROLES    AGE   VERSION
    minikube   Ready    master   11m   v1.17.3
    

    就绪状态,开始启动 dashboard

    > minikube dashboard
    X kubectl not found in PATH, but is required for the dashboard. Installation guide: https://kubernetes.io/docs/tasks/tools/install-kubectl/
    

    这里提示我们没有在环境变量 PATH 中找到 kubectl,只需要将上面下载下来的 kubectl.exe 拷贝到任何一个已经在 PATH 中的目录即可。为了方便管理,我们可以把它和 minikube.exe 放一起。

    > minikube dashboard
    * 正在开启 dashboard ...
    * Verifying dashboard health ...
    * Launching proxy ...
    * Verifying proxy health ...
    * Opening http://127.0.0.1:54032/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ in your default browser...
    

    此时命令行会一直阻塞在这里,自动打开浏览器,进入 Dashboard:

    minikube dashboard

    对于手动部署过 dashboard 的人来说,这个确实太方便了

    并且后续可以直接使用 kubectl 命令来操作集群:

    > kubectl get pods -A
    NAMESPACE              NAME                                         READY   STATUS    RESTARTS   AGE
    kube-system            coredns-7f9c544f75-kw6g9                     1/1     Running   0          29m
    kube-system            coredns-7f9c544f75-p84v8                     1/1     Running   0          29m
    kube-system            etcd-minikube                                1/1     Running   0          29m
    kube-system            kube-apiserver-minikube                      1/1     Running   0          29m
    kube-system            kube-controller-manager-minikube             1/1     Running   0          29m
    kube-system            kube-proxy-4jf76                             1/1     Running   0          29m
    kube-system            kube-scheduler-minikube                      1/1     Running   0          29m
    kube-system            storage-provisioner                          1/1     Running   1          29m
    kubernetes-dashboard   dashboard-metrics-scraper-7b64584c5c-x7bwz   1/1     Running   0          14m
    kubernetes-dashboard   kubernetes-dashboard-79d9cd965-lq7xj         1/1     Running   0          14m
    

    直接 SSH 连接集群

    在命令行执行 minikube ssh 可以进入到虚机内部,但是因为终端类型的原因,会出现乱码,比如执行 top 命令:

    所以最好还是通过模拟终端工具(Xshell/SecureCRT等)登入,

    1. 先执行 minikube ip 查询到虚机的 IP 地址
    2. SSH 用户名选择为 docker
    3. 认证方式选择为 Public Key
    4. 选择对应的私钥文件,C:Users你的用户名.minikubemachinesminikubeid_rsa

    附:最新 minikube v1.8.2 安装说明

    执行:

    minikube start --driver=virtualbox --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers --registry-mirror=https://reg-mirror.qiniu.com --iso-url=https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/iso/minikube-v1.8.0.iso
    
    
    • --driver: 原 --vm-driver 改为 --driver
    • --image-mirror-country: 带上该选项会报错,不带也没影响
    • --image-repository:一样
    • --iso-url 注意版本号
    • --registry-mirror: 同上

    安装过程中不再需要下载那 3 个文件,改为下载 preloaded-images-k8s-v1-v1.17.3-docker-overlay2.tar.lz4 的镜像文件,大小 500MB,保存在 C:Users你的用户名.minikubecachepreloaded-tarball

    支持断点续传,并且可以提前把下载好的文件拷贝过去。

    其它步骤和 v1.7.3 一样,不再赘述。

  • 相关阅读:
    [HNOI2002]营业额统计 (Splay)
    [POJ1664] 放苹果 (动态规划,组合数学)
    [AHOI2009]维护序列 (线段树)
    类型转换求和
    懒人创造方法
    编程的精义
    10-instanceof
    9-接口
    6-SUPER关键字
    5-重写与重载
  • 原文地址:https://www.cnblogs.com/davyyy/p/12531032.html
Copyright © 2011-2022 走看看