前言
使用 Minikube 部署本地 k8s 集群相对比较简单, 非常推荐将其用于本地 k8s 开发环境, 唯一麻烦点的仅仅是网络问题.
在本篇教程中, 我们使用了国内的镜像来完成本地 k8s 集群的搭建. 如果搭建过程中出现错误, 建议使用 minikube delete 之后再重新搭建.
目录
使用 Minikube 部署本地 Kubernetes 集群
1. 什么是 Kubernetes 集群?
2. 使用 Minikube 创建本地 Kubernetes 实验环境
1) 什么是 Minikube?
2)Minikube 支持的功能
3)Windows 10 下安装
4) 打开 Minikube 可视化面板
5) 常见错误
6)Linux 下安装
使用 Minikube 部署本地 Kubernetes 集群
什么是 Kubernetes 集群?
Kubernetes 用于协调高度可用的计算机集群, 这些计算机被连接作为单个工作单元. Kubernetes 允许用户将容器化的应用程序部署到集群, 而不必专门将其绑定到单个计算机. 为了利用这种新的部署模型, 应用程序需要被容器化. 容器化应用程序比过去的部署模型更灵活和可用 -- 而不是将应用程序直接安装到特定机器上, 作为深入集成到主机中的软件包. Kubernetes 在一个集群上以更有效的方式自动分发和调度容器应用程序.
Kubernetes 集群由两种类型的资源组成:
Master: 即集群的调度节点, 负责管理集群, 例如调度应用程序, 维护应用程序的所需状态, 扩展应用程序和滚动更新.
Nodes: 即应用程序实际运行的工作节点, 可以是物理机或者虚拟机. 每个工作节点都有一个 Kubelet(节点代理), 它是管理节点并与 Kubernetes Master 节点进行通信的代理. 节点上还应支持容器操作, 例如 Docker 或 rkt. 一个 Kubernetes 工作集群至少有三个节点.
当我们在 Kubernetes 上部署应用程序时, Master 会启动应用程序容器, 并调度容器在集群的 Nodes 上运行, 而 Nodes 使用 Master 公开的 Kubernetes API 与 Master 进行通信. 最终用户还可以直接使用 Kubernetes 的 API 与集群交互.
使用 Minikube 创建本地 Kubernetes 实验环境
在大部分情况下, 我们需要在本地玩转 Kubernetes, 以便于 Kubernetes 应用程序的开发和调测. 搭建完整的 Kubernetes 集群毕竟太重, 那么使用 Minikube 则是不二选择.
什么是 Minikube?
Minikube 是一个轻量级的 Kubernetes 实现, 会在本机创建一台虚拟机, 并部署一个只包含一个节点的简单集群. Minikube 适用于 Linux, Mac OS 和 Windows 系统. Minikube CLI 提供了集群的基本引导操作, 包括启动, 停止, 状态和删除.
Minikube 的目标是成为本地 Kubernetes 应用程序开发的最佳工具, 并支持所有适合的 Kubernetes 功能!
官方 GitHub 地址: https://github.com/kubernetes/minikube
Minikube 支持的功能
Minikube 支持以下 Kubernetes 功能:
- DNS
- NodePorts(可使用 "minikube service" 命令来管理)
ConfigMaps 和 Secrets
仪表板 (Dashboards,minikube dashboard)
容器运行时: Docker,rkt,CRI-O 和 containerd
- Enabling CNI(容器网络接口)
- Ingress
- LoadBalancer(负载均衡, 可以使用 "minikube tunnel" 命令来启用)
- Multi-cluster(多集群, 可以使用 "minikube start -p <name>" 命令来启用)
- Persistent Volumes
- RBAC
通过命令配置 apiserver 和 kubelet
Windows 10 下安装
1. 安装要求
Windows 必须支持虚拟化, 可以执行 "systeminfo" 命令来确认. 如果支持虚拟化, 则 [Hyper-V 要求] 一栏如下图所示:
C:\Users\Lys_Desktop\Documents\Tencent Files\512982554\Image\C2C\M%YWM2VE`R)$F2KF`{~M{LU.jpg
如果已经装了 Hyper-V, 则提示如下:
2. 启用 Hyper-V(推荐)
可以通过 [程序和功能] =》[打开或关闭 Windows 功能] =》勾选 [Hyper-V] 来启用 Hyper-V, 也可以通过管理员执行以下 Powershell 脚本:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
如果不支持启用 Hyper-V, 大家可以安装 "VirtualBox", 而且目前 "VirtualBox" 是官方默认的虚拟机管理程序.
3. 安装 Minikube 和 kubectl
使用 Chocolatey 安装 Minikube(推荐)
Chocolatey 我们前面已经进行了讲解, 这里面我们可以使用 Chocolatey 以管理员身份一键安装 Minikube:
choco install minikube kubernetes-cli
- PS C:\Windows\system32> choco install minikube kubernetes-cli
- Chocolatey v0.10.11
- Installing the following packages:
- minikube;kubernetes-cli
By installing you accept licenses for the packages.
Minikube v1.1.1 [Approved]
minikube package files install completed. Performing other installation steps.
ShimGen has successfully created a shim for minikube.exe
The install of minikube was successful.
Software install location not explicitly set, could be in package or
default install location if installer.
kubernetes-cli v1.14.3 already installed.
Use --force to reinstall, specify a version to install, or try upgrade.
Chocolatey installed 1/2 packages.
- See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log).
- Warnings:
- kubernetes-cli - kubernetes-cli v1.14.3 already installed.
Use --force to reinstall, specify a version to install, or try upgrade.
通过下载安装包安装
下载地址: https://github.com/kubernetes/minikube/releases/
需下载 [minikube-Windows-amd64.exe] , 下载完成后, 需要重命名为 "minikube.exe" 进行使用.
4. 启动 Minikube
Minikube 在 Windows 上支持使用 VirtualBox 和 Hyper-V, 这里我们使用 Hyper-V 进行实践.
我们需要执行 "minikube start" 命令来启动 Minikube. 这个过程中会下载 Minikube ISO 镜像, 如果 Minikube ISO 镜像下载失败, 可复制链接手工下载或者配置容器代理再试. 如果是手工下载, 下载后, 请将 ISO 文件放置 C:\Users\< 用户名 >\.minikube\cache\iso 目录, 然后再次执行 "start" 命令. 具体命令如下所示:
需使用管理员执行以下 Powershell 脚本:
minikube.exe start --registry-mirror=https://registry.docker-cn.com --vm-driver="hyperv" --memory=4096
其中,--registry-mirror 参数用于设置镜像服务地址, 这里设置为国内镜像服务地址.--vm-driver 参数设置了虚拟机类型, 这里我们使用 Hyper-V, 默认是 VirtualBox.--memory 参数设置了虚拟机内存大小. 执行此脚本后, 会使用默认的 Hyper-V 的虚拟交换机, 我们也可以使用参数 --hyperv-virtual-switch 进行指定指定的虚拟网络交换机. 虚拟网络交换机设置如下图所示:
在中国, 由于网络和防火墙的原因, 通常会无法拉取 k8s 相关镜像或者下载速度过于缓慢, 因此, 我们可以通过参数 --image-repository 来设置 Minikube 使用阿里云镜像. 如下列命令:
minikube.exe start --registry-mirror=https://registry.docker-cn.com --vm-driver="hyperv" --memory=4096 --hyperv-virtual-switch="NET" --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers
- PS C:\Windows\system32> minikube.exe start --registry-mirror=https://registry.docker-cn.com --vm-driver="hyperv" --memory=4096 --hyperv-virtual-switch="NET" --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers
- * minikube v1.1.1 on Windows (amd64)
- * using image repository registry.cn-hangzhou.aliyuncs.com/google_containers
- * Creating hyperv VM (CPUs=2, Memory=4096MB, Disk=20000MB) ...
- * Configuring environment for Kubernetes v1.14.3 on Docker 18.09.6
* Pulling images ...
* Launching Kubernetes ...
- * Verifying: apiserver proxy etcd scheduler controller dns
- * Done! kubectl is now configured to use "minikube"
成功之后, 我们就可以使用 kubectl 来操作集群了, 比如查看当前所有 pod 的状态:
kubectl get pods --all-namespaces
刚才我们使用 Minikube 创建了默认的集群, 我们还可以使用 Minikube 创建新的集群, 比如:
minikube start -p mycluster
值得注意的是, Minikube 搭配 Hyper-V 使用需要禁用动态内存 (Docker for Windows 初始化时指定禁用了相关虚拟机使用动态内存), 执行 Powershell 脚本如下所示:
Set-VMMemory -VMName 'minikube' -DynamicMemoryEnabled $false.
在 Windows 10 下, 我们还可以使用 docker-desktop 来启用 k8s, 不过由于网络的原因, 并不是很推荐:
打开 Minikube 可视化面板
成功启动 Minikube 之后, 我们就可以通过以下命令来打开 Minikube 可视化面板:
minikube dashboard
启用面板
PS C:\Windows\system32> minikube dashboard
* Enabling dashboard ...
* Verifying dashboard health ...
* Launching proxy ...
* Verifying proxy health ...
* Opening http://127.0.0.1:3173/api/v1/namespaces/kube-system/services/http:kubernetes-dashboard:/proxy/ in your default browser...
常见错误
启动 Minikube 时提示错误如下: X Unable to start VM: start: exit status 1
处理方案: 执行 "minikube delete" 或者手工清理时虚拟机目录存在残留内容, 需手动删除目录 "C:\Users\{your username} \.minikube\machines" 后再次尝试.
Linux 下安装
1. 安装虚拟机 (可选)
在 Linux 环境下, Minikube 支持直接在主机上运行 Kubernetes, 因此此步骤为可选. 所以大家可以根据实际情况来选择是否安装虚拟机, 比如 KVM 和 VirtualBox.
注意: 如果直接在主机上运行, Minikube 会运行一个不安全的 API Server, 可能会导致安全隐患, 因此不建议在个人工作环境安装.
2. 安装 kubectl
由于 Google 网络不太稳定, 我们使用阿里云镜像进行安装.
- CentOS
- echo '#k8s
- [kubernetes]
- name=Kubernetes
- baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
- enabled=1
- gpgcheck=0
- '>/etc/yum.repos.d/kubernetes.repo
- #kubeadm 和相关工具包
- yum -y install kubelet kubeadm kubectl kubernetes-cni
- Debian / Ubuntu
- apt-get update && apt-get install -y apt-transport-https
- curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
- echo 'deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main'>/etc/apt/sources.list.d/kubernetes.list
- apt-get update
- apt-get install -y kubelet kubeadm kubectl
3. 安装 Minikube
这里我们直接下载安装:
- curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \
- && chmod +x minikube
由于网络问题, 我们可以选择使用阿里云的执行程序:
- curl -Lo minikube https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/latest/minikube-linux-amd64 \
- && chmod +x minikube
然后将可执行文件添加到 / usr/local/bin 目录下
sudo install minikube /usr/local/bin
4. 启动 Minikube
minikube start --vm-driver=none
如果存在网络问题, 请使用 --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers 指定镜像仓库地址.
安装过程中如出现问题, 可以执行以下命令之后再重新尝试:
- minikube delete
- rm ~/.minikube
往期内容链接
Docker 最全教程 -- 从理论到实战 (一)
Docker 最全教程 -- 从理论到实战 (二)
Docker 最全教程 -- 从理论到实战 (三)
Docker 最全教程 -- 从理论到实战 (四)
Docker 最全教程 -- 从理论到实战 (五)
Docker 最全教程 -- 从理论到实战 (六)
Docker 最全教程 -- 从理论到实战 (七)
Docker 最全教程 -- 从理论到实战 (八)
Docker 最全教程之使用 Tencent Hub 来完成 CI(九)
Docker 最全教程 -- 数据库容器化 (十)
Docker 最全教程 -- 数据库容器化之持久保存数据 (十一)
Docker 最全教程 --MongoDB 容器化 (十二)
Docker 最全教程 --Redis 容器化以及排行榜实战 (十三)
Docker 最全教程之 Ubuntu 下安装 Docker(十四)
Docker 最全教程之树莓派和 Docker(十五)
Docker 最全教程之使用 TeamCity 来完成内部 CI,CD 流程 (十六)
Docker 最全教程之使用 Docker 搭建 Java 开发环境 (十七)
Docker 最全教程之 Go 实战, 墙裂推荐 (十八)
Docker 最全教程之使用. NET Core 推送钉钉消息 (十九)
Docker 最全教程之使用 Visual Studio Code 玩转 Docker(二十)
Docker 最全教程之 Python 爬网实战 (二十一)
Docker 最全教程之使用 PHP 搭建个人博客站点 (二十二)
Docker 最全教程之使用 Node.JS 搭建团队技术文档站 (二十三)
Docker 最全教程之 MySQL 容器化 (二十四)
Docker+ Kubernetes 已成为云计算的主流 (二十五)
容器化之后如何节省云端成本?(二十六)
了解 Kubernetes 主体架构 (二十七)
来源: https://www.cnblogs.com/codelove/p/11163581.html