Windows 7 下使用 MiniKube 学习 Kubernetes
1. 基本概念
1.1 Kubernetes
Kubernetes(简称,K8s),前身是 Google 的 Borg,是用于自动部署、扩展和管理容器化应用程序的开源系统。提供的功能有:
- 容器的自动化部署
- 自动化扩缩容
- 自动化应用/服务升级
- 容器成组,对外提供服务,支持负载均衡
- 服务的健康检查,自动重启
1.2 Kubernetes 集群
如上图,Kubernetes 集群包括两种类型资源:
- Master 节点,协调控制整个集群
Master 负责集群的管理。Master 协调集群中的所有行为和活动,例如,应用的运行、修改、更新等。
- Node 节点,运行应用的工作节点。
Node 节点作为 Kubernetes 集群中的工作节点,可以是 VM 虚拟机、物理机。每个 Node 上都有一个 Kubelet,用于管理 node 节点与 Kubernetes Master 通信。
1.3 Kubelet
Kubelet 的主要功能就是定时从本地或 API 获取节点上 Pod/Container 的期望状态(运行什么容器、运行的副本数量、网络或者存储如何配置等),并调用对应的容器平台接口达到这个状态。Kubelet 提供的主要功能:
- Pod 管理
- 容器健康检查
- 容器监控
1.4 MiniKube
在开发时,可以使用 Minikube, 通过在本地创建虚拟机并部署只包含单个节点的简单集群,实现轻量级的 Kubernetes 集群。Minikube CLI 提供集群管理的基本操作,包括 start、stop、status、 和 delete。
2. 安装
2.1 安装要求
- kubectl,用于管理 Node 节点
- Windows
- VirtualBox or Hyper-V,依赖的虚拟机
- VT-x/AMD-v virtualization must be enabled in BIOS,开启虚拟化指令集
- Internet connection on first run,首次运行需要联网
由于之前安装 Docker Toolbox for Windows,已经安装 VirtualBox,这里主要讲一下如何安装 kubectl 和 MiniKube。
2.2 安装 Kubectl
在官方文档中,详细描述了各种系统中如何安装 kubectl。在 Windows 下,使用 Chocolatey (安装方式可以参考之前的文章)包管理工具:
|
|
|
|
由于服务没有启动,会提示无法连接。
2.3 安装 MiniKube
在 MiniKube 的 GitHub 仓库 中,详细描述了各种系统中如何安装 MiniKube。MiniKube 是使用 Go 语言开发的。在 Windows 上可以直接下载 MiniKube 可执行程序安装,也可以使用 Chocolatey 包管理工具安装。
|
|
3. 使用
3.1 创建并启动集群
使用 minikube start
命令,可以创建并配置一个运行单节点 Kubernetes 集群的虚拟机,同时配置 kubectl 以与此集群进行通信。
|
|
Minikube 默认使用 VirtualBox 来驱动安装,使用 --vm-driver
参数可以指定驱动。通过设置环境变量 MINIKUBE_HOME 可以指定安装目录,默认安装目录在 C:UsersYour User Name.minikube
。检查节点是否正常:
|
|
3.2 拉取镜像
如果网络受限,不能打开 gcr.io 页面。有两种方法可以解决镜像拉取不到的问题。由于我的使用环境,能够科学上网,这里只提供一下解决的思路。
- 第一种,配置代理
|
|
如果找到可用的代理,不是件很容易的事,可以试一下第二种方法。
- 第二种,通过阿里云镜像下载并打 tag
|
|
3.3 启动一个服务
创建一个 Nginx Pod 服务
|
|
通过 NodePort 暴露服务
|
|
检查 Pod 状态
|
|
获取 Nginx 访问的 URL 地址
|
|
打开页面
3.4 MiniKube 基本操作命令
- 启动集群
|
|
- 查看状态
|
|
- 查看日志
|
|
- 关闭集群
|
|
- 删除集群
|
|
- 查看 IP
|
|
3.5 查看 Dashboard
|
|
4. 参考
- https://github.com/kubernetes/minikube#requirements
- http://docs.kubernetes.org.cn/126.html
- https://cizixs.com/2016/07/12/kubernetes-intro#disqus_thread
- https://ehlxr.me/2018/01/12/kubernetes-minikube-installation/