在本地运行Kubernetes的3种主流方式
作者简介
Chris Tozzi,曾担任记者和Linux管理员。对开源技术、敏捷基础架构以及网络问题兴趣浓厚。目前担任高级内容编辑,并且是Fixate IO的DevOps分析师。
原文链接:
https://searchitoperations.techtarget.com/answer/Evaluate-3-ways-to-run-Kubernetes-locally
Kubernetes的主要目的是通过复杂的负载均衡和资源分配功能跨服务器集群托管应用程序。即使某些服务器出现故障,也可以确保应用程序平稳运行。因此在生产部署中,必须为Kubernetes配置多个服务器。
但是,在某些情况下,IT管理员或开发人员可能希望在PC或笔记本电脑上本地运行Kubernetes。因为本地Kubernetes环境使开发人员能够快速测试新的应用程序代码,而不必先将其上传到生产集群。对于初学者来说,本地Kubernetes也是一种很好的方式来学习容器编排系统,而无需承受大规模、多服务器部署的复杂性和成本。
以下是在本地运行Kubernetes的三种方法,所有这些方法都可以在Windows、Linux或macOS的PC或笔记本电脑上运行。
1、 Minikube
Minikube是Kubernetes的一个版本,专为本地部署而设计。Minikube由Kubernetes开源社区开发,使用VM来创建本地单节点Kubernetes安装。
Minikube的安装非常简单,因为Windows、Linux和macOS安装程序会自动执行大部分流程,包括VM设置。但是,请先确保安装了诸如Hyper-V、VirtualBox或KVM等VM平台。
需要先下载最新的Minikube稳定版,然后运行 minikube start。以下示例是在MacOS上启动Minikube:

使用默认的 HyperKit在MacOS上运行Minikube
在启动期间,kubeconfig文件(默认情况下是~/.kube/config)正在更新,名为minikube的新上下文正在被创建(之后将其设置为默认上下文)。Minkube设置完成之后,使用标准Kubernetes命令行工具kubectl即可与集群进行交互。

正在获取minikube的节点
Minikube的主要局限性在于本地集群只能包含一个节点,因此对于生产级别的多节点Kubernetes集群来说,很难在本地进行模拟测试。
2、 MicroK8s
MicroK8s是由Canonical开发的Kubernetes发行版,其突出特点是部署快速简单,对于本地运行Kubernetes来说,十分方便。
在支持snap packages的任何Linux发行版上,MicroK8s的安装都很简单。Snap packages是由Canonical创建的一个应用程序的打包框架,主要用于Ubuntu(该公司的Linux发行版)。在Windows和macOS上安装MicroK8s也是很简单的,因为这些系统的MicroK8s安装程序会创建基于Ubuntu的VM,然后使用snap packages在其上安装MicroK8s。
与Minikube不同,IT管理员或开发人员可以使用MicroK8s创建多节点集群。如果MicroK8s在Linux上运行,甚至不需要VM。在Windows和macOS上,MicroK8s使用名为Multipass的VM框架为Kubernetes集群创建VM。
# Create a new Ubuntu VM
$ multipass launch --name microk8s --mem 4G
# Install microk8s in the VM through snap
$ multipass exec microk8s -- sudo snap install microk8s --classic
然后我们在一个本地文件中复制集群配置文件:
$ multipass exec microk8s -- sudo microk8s.config > microk8s.yaml
请注意:MicroK8s带有几个二进制文件,其中包括:
microk8s.config:提供kubectl配置文件以供外界使用
microk8s.kubectl:自己的kubectl版本
最后,我们设置KUBECONFIG环境变量来定义由本地kubectl使用的上下文:
$ export KUBECONFIG=$PWD/microk8s.yaml
现在,我们已经准备就绪,可以使用新的MicroK8s单节点集群。
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
microk8s Ready <none> 4m48s v1.16.3
MicroK8s的最大缺点可能是很难在不支持snap packages的Linux发行版上安装。
3、 K3s
K3s是由业界应用最为广泛的Kubernetes管理平台创建者Rancher Labs开发的轻量级Kubernetes发行版,通过了CNCF一致性认证。它是为生产环境设计的,主要用于部署在资源受限的边缘计算场景中,例如IoT传感器。
但是,K3s也可以在本地运行以进行Kubernetes测试或开发。为此,请首先使用VMware、VirtualBox或KVM等平台在本地系统上至少创建两个VM。K3s不会为你创建VM,因此你需要手动执行此操作。
然后,在一个VM上安装K3s server,在另一个VM上安装K3s agent。这将在本地设备上创建一个微型Kubernetes集群。详细的安装步骤可以参考以下文章:
与MicroK8s和Minikube相比,K3s需要更多的手动工作来进行设置和配置。但是,由于K3s是为全面生产而设计的,因此在PC或笔记本电脑上,它是与生产级服务器最接近的选项。
在本地运行Kubernetes的3种主流方式的更多相关文章
- 基于Docker本地运行Kubernetes
基于Docker本地运行Kubernetes 概览 下面的指引将高速你如何通过Docker创建一个单机.单节点的Kubernetes集群. 下图是最终的结果: 先决条件 \1. 你必须拥有一台安装有D ...
- Android启动组件的三种主流及若干非主流方式
本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处 启动组件的一些方式,今天做一个简要的总结 Service:通过startService()启动,或者写 ...
- js replace 全局替换 以表单的方式提交参数 判断是否为ie浏览器 将jquery.qqFace.js表情转换成微信的字符码 手机端省市区联动 新字体引用本地运行可以获得,放到服务器上报404 C#提取html中的汉字 MVC几种找不到资源的解决方式 使用Windows服务定时去执行一个方法的三种方式
js replace 全局替换 js 的replace 默认替换只替换第一个匹配的字符,如果字符串有超过两个以上的对应字符就无法进行替换,这时候就要进行一点操作,进行全部替换. <scrip ...
- Kubernetes的三种外部访问方式:NodePort、LoadBalancer和Ingress(转发)
原文 http://cloud.51cto.com/art/201804/570386.htm Kubernetes的三种外部访问方式:NodePort.LoadBalancer和Ingress 最近 ...
- python三大web框架Django,Flask,Flask,Python几种主流框架,13个Python web框架比较,2018年Python web五大主流框架
Python几种主流框架 从GitHub中整理出的15个最受欢迎的Python开源框架.这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等. Django: Python We ...
- Django,Flask,Tornado三大框架对比,Python几种主流框架,13个Python web框架比较,2018年Python web五大主流框架
Django 与 Tornado 各自的优缺点Django优点: 大和全(重量级框架)自带orm,template,view 需要的功能也可以去找第三方的app注重高效开发全自动化的管理后台(只需要使 ...
- [转帖]kubernetes ingress 在物理机上的nodePort和hostNetwork两种部署方式解析及比较
kubernetes ingress 在物理机上的nodePort和hostNetwork两种部署方式解析及比较 https://www.cnblogs.com/xuxinkun/p/11052646 ...
- kubernetes ingress 在物理机上的nodePort和hostNetwork两种部署方式解析及比较
ingress controller在物理机上的两种部署方式 ingress controller(ingress-nginx)负责k8s中的7层负载均衡.其在物理机中有多种部署方式.本文中主要选择了 ...
- Hive的三种安装方式(内嵌模式,本地模式远程模式)
一.安装模式介绍: Hive官网上介绍了Hive的3种安装方式,分别对应不同的应用场景. 1.内嵌模式(元数据保村在内嵌的derby种,允许一个会话链接,尝试多个会话链接时会报错) ...
随机推荐
- SpringBoot集成Shiro实现权限控制
Shiro简介 Apache Shiro是一个功能强大且易于使用的Java安全框架,用于执行身份验证,授权,加密和会话管理.使用Shiro易于理解的API,您可以快速轻松地保护任何应用程序-从最小的移 ...
- Blazor WebAssembly 3.2.0 已在塔架就位 将发射新一代前端SPA框架
最美人间四月天,春光不负赶路人.在充满无限希望的明媚春天里,一路风雨兼程的.NET团队正奋力实现新的突破. 根据计划,新一代基于WebAssembly 技术研发的前端SPA框架Blazor 将于5月1 ...
- react: typescript interface useState issue
define interface: interface ILoginState { imageId: string; imageSrc: string; username: string; passw ...
- Java集合linkdList
LinkedList特有功能: A:添加功能 public void addFitst(Object e) public void addLast(Object e) B:获取功能 public Ob ...
- pytorch Model Linear实现线性回归CUDA版本
实验代码 import torch import torch.nn as nn #y = wx + b class MyModel(nn.Module): def __init__(self): su ...
- Matplotlib 误差线的绘制和子图的创建方式
一.绘制误差线 使用errorbar方法可以绘制误差线. x = np.linspace(0,10,50) dy=0.8 y = np.cos(x) + dy*np.random.randn(50) ...
- 2019-2020-1 20199326《Linux内核原理与分析》第四周作业
第四周学习内容 庖丁解牛Linux内核分析第三章:MenuOS的构造 Linux内核分析实验三 学到的一些知识 操作系统两大宝剑:1.中断上下文的切换--保存现场和恢复现场 2.进程上下文的切换 Li ...
- MySQL系列(四)
本章内容: 主从复制 简介原理 Mysql主从同步脚本部署 读写分离 如果主宕机了,怎么办? 双主的情况 MySQL 备份及恢复方案 备份单个及多个数据库 mysqldump 的常用参数 如何增量恢复 ...
- Unity 游戏框架搭建 2019 (三十九、四十一) 第四章 简介&方法的结构重复问题&泛型:结构复用利器
第四章 简介 方法的结构重复问题 我们在上一篇正式整理完毕,从这一篇开始,我们要再次进入学习收集示例阶段了. 那么我们学什么呢?当然是学习设计工具,也就是在上篇中提到的关键知识点.这些关键知识点,大部 ...
- IDEA 之 Java项目复制
1.复制一个项目,并改名字 2.更改以下文件名字 3.将以下文件中的原有名字,替换成更改后的名字(例如MyWebapp07替换成MyWebapp08) 4.将out文件夹给删除 5.然后用IDEA ...