• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Windows Hyper-V + Minikube 搭建Kubernetes本地实验环境

武飞扬头像
写Bug的胖
帮助1

基于 Windows Hyper-V Minikube 构建 Kubernetes 本地实验环境

学新通 Kubernetes官方为了方便大家开发和体验Kubernetes,社区提供了可以在本地部署的开发环境 Minikube。由于网络访问原因,很多朋友无法直接使用minikube进行实验。在v1.24.0的官方 Minikube 中,已经合并了由阿里云团队支持的方案,可以帮助大家利用阿里云的服务来获取所需Docker镜像,二进制文件和配置,也可以完美支持Minikube 丰富的 addon 组件!

配置安装

环境要求

注意:windows系统只需要满足以下条件即可

  • [✓] Windows 8 或以上版本
  • [✓] 支持虚拟化
  1. 在终端中运行命令systeminfo检测系统是否支持虚拟化
    # 英文版本:
    Hyper-V Requirements    VM Monitor Mode Extensions: Yes
                            Virtualization Enabled In Firmware: Yes
                            Second Level Address Translation: Yes
                            Data Execution Prevention Available: Yes
    
    # 中文版本:
    Hyper-V 要求    虚拟机监视器模式扩展: 是
                    固件中已启用虚拟化: 是
                    二级地址转换: 是
                    数据执行保护可用: 是
    
  2. 开启系统对 Hyper-V 的支持 控制面板\程序\程序和功能\启用或关闭Windows功能\Hyper-v 或 在管理员终端(如 powershell )中运行命令开启:
    Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
    

注意:使用 Minikube搭配Hyper-V使用需要禁用动态内存(Docker for Windows初始化时指定禁用了相关虚拟机使用动态内存)管理员终端(如 powershell)运行以下命令即可:

Set-VMMemory -VMName 'minikube' -DynamicMemoryEnabled $false

安装kubectl

说明:Windows 版的 Docker Desktop 将其自带版本的 kubectl 添加到 PATH。 如果你之前安装过 Docker Desktop,可能需要把此 PATH 条目置于 Docker Desktop 安装的条目之前, 或者直接删掉 Docker Desktop 的 kubectl。

注意:kubectl 版本和集群版本之间的差异必须在一个小版本号内。 例如:v1.27 版本的客户端能与 v1.26、 v1.27 和 v1.28 版本的控制面通信。 用最新兼容版的 kubectl 有助于避免不可预见的问题。

在 Windows 系统中安装 kubectl 有多种方式进行安装 我这里采用如下方式进行安装(更多安装方式):

  1. 直接下载最新版可执行文件kubectl(查看最新稳定的版本)或者 使用管理员终端(如 powershell)运行以下命令进行安装:
    New-Item -Path 'd:\' -Name 'kubectl' -ItemType Directory -Force
    Invoke-WebRequest -OutFile 'd:\kubectl\kubectl.exe' -Uri "https://dl.k8s.io/release/v1.27.4/bin/windows/amd64/kubectl.exe" -UseBasicParsing
    
  2. 手动将 kubectl 二进制文件以追加或插入的方式添加到你的系统环境变量中 或者 使用管理员终端(如 powershell)运行以下命令进行设置:
    $oldPath = [Environment]::GetEnvironmentVariable('Path', [EnvironmentVariableTarget]::Machine)
    if ($oldPath.Split(';') -inotcontains 'd:\kubectl'){
        [Environment]::SetEnvironmentVariable('Path', $('{0};d:\kubectl' -f $oldPath), [EnvironmentVariableTarget]::Machine)
    }
    
    如果您使用终端(如 powershell)进行安装,请在运行 minikube 之前重启管理员终端。
  3. 在终端中运行以下命令测试一下,确保 kubectl 的版本和期望版本一致:
    kubectl version --client --short
    或
    kubectl version --client --output=yaml
    
    说明:以上第一条命令会产生如下警告,你可以直接略该警告只需要关注你所安装的版本和期望的版本是否一致
    WARNING: This version information is deprecated and will be replaced with the output from kubectl version --short.  Use --output=yaml|json to get the full version.
    
    或是运行以下命令查看
    kubectl version --client --short
    

安装 minikube

  1. 下载并运行最新版本的安装程序latest release。或者 使用管理员终端(如 powershell)运行下命令进行安装:

    New-Item -Path 'd:\' -Name 'minikube' -ItemType Directory -Force
    Invoke-WebRequest -OutFile 'd:\minikube\minikube.exe' -Uri 'https://github.com/kubernetes/minikube/releases/latest/download/minikube-windows-amd64.exe' -UseBasicParsing
    
  2. 手动设置系统环境变量或者以 使用管理员终端(如 powershell)运行以下命令进行设置:

    $oldPath = [Environment]::GetEnvironmentVariable('Path', [EnvironmentVariableTarget]::Machine)
    if ($oldPath.Split(';') -inotcontains 'd:\minikube'){
        [Environment]::SetEnvironmentVariable('Path', $('{0};d:\minikube' -f $oldPath), [EnvironmentVariableTarget]::Machine)
    }
    

    如果您使用终端(如 powershell)进行安装,请在运行 minikube 之前重启管理员终端。

  3. 在终端中运行以下命令测试一下,确保 kubectl 的版本和期望版本一致:

    minikube version
    

配置 Hyper-V (可选)

如果使用Hyper-V环境,我们首先需要打开Hyper-V管理器创建一个外部虚拟交换机,步骤如下:

  1. 打开Hyper-V管理器 学新通
  2. 选择虚拟交换机管理器 学新通
  3. 选择创建虚拟交换机(S) 学新通
  4. 配置虚拟机名称Minikube Switch及连接类型并保存 学新通

使用Minikube

配置详解

minikube 提供了非常多的配置参数,我们先来了解一些常规配置:

  • --driver='' 从1.5.0版本开始,Minikube缺省使用系统优选的驱动来创建Kubernetes本地环境,比如您已经安装过Docker环境,minikube 将使用 docker 驱动
  • --cpus=2 为minikube虚拟机分配CPU核数
  • --memory=2048mb 为minikube虚拟机分配内存数
  • --disk-size='20000mb' 分配给 minikube 虚拟机的磁盘大小 (格式:<数字>[<单位>],其中单位 = b、k、m 或 g)。
  • --registry-mirror='' 为了提升拉取Docker Hub镜像的稳定性,可以为 Docker daemon 配置镜像加速,参考阿里云镜像服务
  • --image-mirror-country='cn' 需要使用的镜像镜像的国家/地区代码。留空以使用全球代码。对于中国大陆用户,请将其设置为 cn
  • --kubernetes-version='' minikube 虚拟机将使用的 kubernetes 版本
  • --dns-domain='cluster.local' Kubernetes 集群中使用的集群 dns 域名
  • --listen-address='' 用于暴露端口的IP地址(仅适用于docker和podman驱动程序)
  • --hyperv-virtual-switch='' hyperv 虚拟交换机名称。默认为找到的第一个 hyperv 虚拟交换机。 (仅限 hyperv 驱动程序)
  • --force=false 强制 minikube 执行可能有风险的操作
  • --force-systemd=false如果设置为 true,则强制容器运行时使用 systemd 作为 cgroup 管理器。默认false。
  • --host-dns-resolver=true 为 NAT DNS 请求启用主机解析器(仅限 virtualbox 驱动程序)
  • --host-only-cidr='172.16.5.1/24' 需要用于 minikube 虚拟机的 CIDR(仅限 virtualbox 驱动程序)

更多配置参数请参考 minikube help start

命令详解

以下是 minikube 一些常用基本命令

  • minikube stop 停止正在运行的本地 Kubernetes 集群
  • minikube start 启动本地 Kubernetes 集群
  • minikube pause 暂停 Kubernetes
  • minikube status 获取本地 Kubernetes 集群状态
  • minikube delete 删除本地的 Kubernetes 集群
  • minikube addons 启用或禁用 minikube 插件
  • minikube config 修改持久配置值
  • minikube profile 获取或列出当前配置文件(集群)
  • minikube unpause 恢复 Kubernetes
  • minikube dashboard 访问在 minikube 集群中运行的 kubernetes dashboard
  • minikube update-context IP或端口更改的情况下更新 kubeconfig 配置文件

更多命令请参考 minikube help

创建集群

  1. 在管理员终端(如 powershell)中运行以下命令使用 Minikube 创建 基于 Hyper-V 环境的 Kubernetes 集群
    minikube start --image-mirror-country cn --registry-mirror=https://vgyjvvce.mirror.aliyuncs.com --vm-driver="hyperv" --hyperv-virtual-switch="MinikubeSwitch" --memory=4096 --cpus=2 --disk-size='81920mb'
    
  2. 在管理员终端(如 powershell)中运行以下命令 打开 minikube metrics-server 插件
    minikube addons enable metrics-server
    
  3. 在管理员终端(如 powershell)中运行以下命令 打开 Kubernetes Dashboard
    minikube dashboard
    

测试体验

  1. 运行部署 hello-minikube 示例服务
    kubectl create deployment hello-minikube --image=registry.aliyuncs.com/谷歌_containers/echoserver:1.10
    
  2. 将示例程序 pod 暴露他的端口设置为:8080
    kubectl expose deployment hello-minikube --type=NodePort --port=8080
    
  3. 查看示例服务状态
    kubectl get pod
    
  4. 查看示例服务访问地址
    minikube service hello-minikube --url
    
  5. 将示例服务端口转发到本机的端口,这样供给外界访问
    kubectl port-forward --address 0.0.0.0 service/hello-minikube  7080:8080
    
  6. 访问本机地址hrrp://127.0.0.1:7080 将输出以下内容:
    Hostname: hello-minikube-5988bff7b8-k2tdw
    
    Pod Information:
        -no pod information available-
    
    Server values:
        server_version=nginx: 1.13.3 - lua: 10008
    
    Request Information:
        client_address=127.0.0.1
        method=GET
        real path=/
        query=
        request_version=1.1
        request_scheme=http
        request_uri=http://127.0.0.1:8080/
    
    Request Headers:
        accept=text/html,application/xhtml xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
        accept-encoding=gzip, deflate, br
        accept-language=zh-CN,zh;q=0.9
        connection=keep-alive
        host=127.0.0.1:7080
        sec-ch-ua=&quot;Chromium&quot;;v=&quot;116&quot;, &quot;Not)A;Brand&quot;;v=&quot;24&quot;, &quot;Google Chrome&quot;;v=&quot;116&quot;
        sec-ch-ua-mobile=?0
        sec-ch-ua-platform=&quot;Windows&quot;
        sec-fetch-dest=document
        sec-fetch-mode=navigate
        sec-fetch-site=none
        sec-fetch-user=?1
        upgrade-insecure-requests=1
        user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36
    
    Request Body:
        -no body in request-
    
  7. 销毁删除示例服务 hello-minikube
    kubectl delete -n default service hello-minikube
    kubectl delete -n default deployment hello-minikube
    

删除集群

实验完成 我们可以通过 管理员终端(如 powershell ) 运行以下命令清除实验环境

minikube delete --all

del ~/.minikube

参考资料

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgbcaib
系列文章
更多 icon
同类精品
更多 icon
继续加载