惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

腾讯CDC
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
P
Proofpoint News Feed
D
DataBreaches.Net
D
Docker
云风的 BLOG
云风的 BLOG
大猫的无限游戏
大猫的无限游戏
月光博客
月光博客
J
Java Code Geeks
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
罗磊的独立博客
Martin Fowler
Martin Fowler
U
Unit 42
Engineering at Meta
Engineering at Meta
IT之家
IT之家
Vercel News
Vercel News
B
Blog RSS Feed
人人都是产品经理
人人都是产品经理
博客园 - Franky
博客园 - 【当耐特】
Stack Overflow Blog
Stack Overflow Blog
G
Google Developers Blog
MongoDB | Blog
MongoDB | Blog

陈少文的网站

巨变与机遇的未来十年 Kubernetes 平台管理软件压力测试方案 使用镜像部署 Hexo 静态页面 终于等到你 - GitHub 镜像仓库服务(ghcr.io) 一起来学 Go --(6)Interface 一起来学 Go --(5)Goroutine 和 Channel 什么是函数式编程 如何在 Kubernetes 集群集成 Kata 柯里化与偏函数 使用 PyGithub 自动创建 Label 软件产品是团队能力的输出 Helm 2 、Helm 3 比较 IoT 变现 Kubernetes 中的 DNS 服务 国内的 Helm 镜像源 Harbor 使用自签证书支持 Https 访问 DevOps 工具链之 Prow 如何使用 kfctl 安装 Kubeflow VS Code 无法下载 Go 插件的工具包 工程师更应具有服务精神 你不知道的 Docker 使用技巧 使用 Docker 运行 Tensorflow 论中国 什么是左移 如何清空 Git 仓库全部历史记录 一禅小和尚 有风吹过厨房 时间的玫瑰 如何在 CentOS 安装 GPU 驱动 开发 Tips(19)
Windows 7 下使用 MiniKube 学习 Kubernetes
微信公众号 · 2018-09-23 · via 陈少文的网站

Please enable Javascript to view the contents

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 (安装方式可以参考之前的文章)包管理工具:

1
2
3
4
5
6
choco install kubernetes-cli
Chocolatey v0.10.11
Installing the following packages:
kubernetes-cli
By installing you accept licenses for the packages.
Progress: Downloading kubernetes-cli 1.11.3... 100%
1
2
3
kubectl version
Client Version: version.Info{Major:"1", Minor:"11", GitVersion:"v1.11.3", GitCommit:"a4529464e4629c21224b3d52edfe0ea91b072862", GitTreeState:"clean", BuildDate:"2018-09-09T18:02:47Z", GoVersion:"go1.10.3", Compiler:"gc", Platform:"windows/amd64"}
Unable to connect to the server: dial tcp 127.0.0.1:8080: connectex: No connection could be made because the target machine actively refused it.

由于服务没有启动,会提示无法连接。

2.3 安装 MiniKube

在 MiniKube 的 GitHub 仓库 中,详细描述了各种系统中如何安装 MiniKube。MiniKube 是使用 Go 语言开发的。在 Windows 上可以直接下载 MiniKube 可执行程序安装,也可以使用 Chocolatey 包管理工具安装。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
choco install minikube
Chocolatey v0.10.11
Installing the following packages:
minikube
By installing you accept licenses for the packages.
Progress: Downloading Minikube 0.28.2... 100%

Minikube v0.28.2 [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.

3. 使用

3.1 创建并启动集群

使用 minikube start 命令,可以创建并配置一个运行单节点 Kubernetes 集群的虚拟机,同时配置 kubectl 以与此集群进行通信。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
minikube start
Starting local Kubernetes v1.10.0 cluster...
Starting VM...
Downloading Minikube ISO
 160.27 MB / 160.27 MB  100.00% 0ssss
Getting VM IP address...
Moving files into cluster...
Downloading kubelet v1.10.0
Downloading kubeadm v1.10.0
Finished Downloading kubelet v1.10.0
Finished Downloading kubeadm v1.10.0
Setting up certs...
Connecting to cluster...
Setting up kubeconfig...
Starting cluster components

Minikube 默认使用 VirtualBox 来驱动安装,使用 --vm-driver 参数可以指定驱动。通过设置环境变量 MINIKUBE_HOME 可以指定安装目录,默认安装目录在 C:\Users\Your User Name\.minikube

检查节点是否正常:

1
2
3
kubectl get nodes
NAME       STATUS    ROLES     AGE       VERSION
minikube   Ready     master    1d        v1.10.0

3.2 拉取镜像

如果网络受限,不能打开 gcr.io 页面。有两种方法可以解决镜像拉取不到的问题。由于我的使用环境,能够科学上网,这里只提供一下解决的思路。

  • 第一种,配置代理
1
minikube start --docker-env HTTP_PROXY=127.0.0.1:1234

如果找到可用的代理,不是件很容易的事,可以试一下第二种方法。

  • 第二种,通过阿里云镜像下载并打 tag
1
2
3
minikube ssh
docker pull registry.cn-beijing.aliyuncs.com/google-containers/kube-addon-manager-amd64:v6.1
docker tag registry.cn-beijing.aliyuncs.com/google-containers/kube-addon-manager-amd64:v6.1 gcr.io/google-containers/kube-addon-manager:v6.1

3.3 启动一个服务

创建一个 Nginx Pod 服务

1
2
kubectl run kube-nginx --image=nginx:latest --port=80
deployment.apps/kube-nginx created

通过 NodePort 暴露服务

1
2
kubectl expose deployment kube-nginx --type=NodePort
service/kube-nginx exposed

检查 Pod 状态

1
2
3
kubectl get pods
NAME                             READY     STATUS              RESTARTS   AGE
kube-nginx-6d8f6d45-rwz2g        1/1       Running             0          1d

获取 Nginx 访问的 URL 地址

1
2
minikube service kube-nginx --url
http://192.168.99.100:30832

打开页面

3.4 MiniKube 基本操作命令

  • 启动集群
  • 查看状态
1
2
3
4
minikube status
minikube: Running
cluster: Running
kubectl: Correctly Configured: pointing to minikube-vm at 192.168.99.100
  • 查看日志
  • 关闭集群
1
2
3
minikube stop
Stopping local Kubernetes cluster...
Stopping "minikube"...
  • 删除集群
  • 查看 IP
1
2
minikube ip
192.168.99.100

3.5 查看 Dashboard

1
2
minikube dashboard
Opening kubernetes dashboard in default browser...

4. 参考


微信公众号