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

推荐订阅源

P
Palo Alto Networks Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
C
CERT Recently Published Vulnerability Notes
C
Cybersecurity and Infrastructure Security Agency CISA
S
Schneier on Security
S
Securelist
酷 壳 – CoolShell
酷 壳 – CoolShell
C
CXSECURITY Database RSS Feed - CXSecurity.com
Cyberwarzone
Cyberwarzone
Apple Machine Learning Research
Apple Machine Learning Research
S
SegmentFault 最新的问题
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
GbyAI
GbyAI
Security Latest
Security Latest
Last Week in AI
Last Week in AI
Microsoft Security Blog
Microsoft Security Blog
云风的 BLOG
云风的 BLOG
Recorded Future
Recorded Future
Webroot Blog
Webroot Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
TaoSecurity Blog
TaoSecurity Blog
C
Cisco Blogs
博客园 - 【当耐特】
Blog — PlanetScale
Blog — PlanetScale
Hugging Face - Blog
Hugging Face - Blog
B
Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Attack and Defense Labs
Attack and Defense Labs
The Last Watchdog
The Last Watchdog
U
Unit 42
阮一峰的网络日志
阮一峰的网络日志
Project Zero
Project Zero
WordPress大学
WordPress大学
L
LINUX DO - 最新话题
F
Fortinet All Blogs
L
LINUX DO - 热门话题
PCI Perspectives
PCI Perspectives
Simon Willison's Weblog
Simon Willison's Weblog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
MongoDB | Blog
MongoDB | Blog
Latest news
Latest news
P
Proofpoint News Feed
T
Threat Research - Cisco Blogs
The Hacker News
The Hacker News
爱范儿
爱范儿
O
OpenAI News
J
Java Code Geeks
T
The Exploit Database - CXSecurity.com
H
Hackread – Cybersecurity News, Data Breaches, AI and More

陈少文的网站

巨变与机遇的未来十年 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) 使用 Velero 备份 Kubernetes 集群 Kubernetes Cheat Sheet 开发 Tips(18) 如何构建一个 Java 工程 开发 Tips(17) KubeSpray 安装 Kubernetes 报错 ip in ansible_all_ipv4_addresses 基于 Kubernetes 和 Jenkins 搭建自动化测试系统 在 Kubernetes 上动态创建 Jenkins Slave 使用 Jenkins 进行服务拨测 开发 Tips(16) Kubernetes 签发 Ingress 证书及日常故障运维 Kubernetes 中 Deployment 的基本操作 Kubernetes 中的证书 如何使用 KubeBuilder 开发一个 Operator Kubernetes 1.6.0 安装问题汇总 镜像管理工具 -- Harbor 开发 Tips(15) Docker 如何拉取镜像 开发 Tips(14) 使用 Helm 安装 harbor 开发 Tips(13) 使用 S2I 构建云原生应用 在 Kubernetes 中使用 emptyDir、hostPath、localVolume 开发 Tips(12) 开发 Tips(11) 代码质量分析工具 SonarQube 使用 Kubeadm 安装 Kubernetes 集群 一起来学 Go --(4)常用函数 Kubernetes 中的 Ceph Kubernetes 之 Volumes Kubernetes 之 Labels、Selectors 开发 Tips(10) 开源正在重构商业模式 Kubernetes 之网络 Kubernetes 之 API 使用 Helm 和 Operator 快速部署 Prometheus Kubernetes 复杂有状态应用管理框架 -- Operator Kubernetes 的包管理器 -- Helm 一起来学 Go --(3)Go Modules 如何一步一步地优化博客方案 kubectl 实用指南 Kubernetes 中的基本概念 搭建远程 Kubernetes 开发环境 大公司和小公司的 ToB 思路 开发 Tips(9) Go 入门指南 一起来学 Go --(2)数据与逻辑结构 如何预防 Web 富文本中的 XSS 攻击 django-xss-cleaner 云工作时代 一起来学 Go --(1)背景与特点 SaaS 开发团队的不同阶段 你不知道的 Git 使用技巧 输出既服务 微服务设计 继续奔跑 开发 Tips(8) 从账户安全到二次验证 Django 性能之数据库查询优化 Django 性能之分库分表 敏捷开发之研发流程 打造一致性的团队 开发 Tips(7) Pytest 进阶学习之 Mock PaaS 部署之 buildpack Go 开发配置 领域输出才是 PaaS 的核心竞争力 Pytest 入门学习 开发 Tips(6) 如何使用 Jenkins、Docker、GitLab 搭建 Django 自动化部署流程
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. 参考


微信公众号