在本地运行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种,允许一个会话链接,尝试多个会话链接时会报错) ...
随机推荐
- vue-element-admin执行npm install 报错
如果你出现这类报错: 那么恭喜你,因为这个问题很好解决. ----------------------- 解决方法: git config --global url."https://&qu ...
- SSL 3.0 POODLE攻击信息泄露漏洞_CVE-2014-3566
0x01 SSL3.0简介 我们知道最开始HTTP协议传输数据的时候,数据是不加密的,不安全的,网景公司针对此,推出了SSL(secure socket layer)安全套接层.SSL3.0时,IET ...
- Python爬虫---爬取腾讯动漫全站漫画
目录 操作环境 网页分析 明确目标 提取漫画地址 提取漫画章节地址 提取漫画图片 编写代码 导入需要的模块 获取漫画地址 提取漫画的内容页 提取章节名 获取漫画源网页代码 下载漫画图片 下载结果 完整 ...
- webstorm tslint配置
webstorm设置 settings >> TypeScript >> TSLint, 勾选 Enable ,选取 tslint包路径...npm\node_modules\ ...
- Java封装 概述
封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式.好处:隐藏实现细节,提供公共的访问方式提高了代码的复用性提高安全性 封装原则:将不需要对外提供的内容都隐藏起来把属性隐藏,提供公共方法对其访 ...
- python工业互联网监控项目实战4—python opcua
前面章节我们采用OPC作为设备到上位的信息交互的协议,本章我们介绍跨平台的OPC UA.OPC作为早期的工业通信规范,是基于COM/DCOM的技术实现的,用于设备和软件之间交换数据,最初,OPC标准仅 ...
- python face_recognition模块实现人脸识别
import face_recognition #人脸识别库 pip cmake dlib import cv2 #读取图像 face_image1 = face_recognition.load_i ...
- http与web
在看<图解http>的时候,忽然有一个想法冒出来. web与http是什么关系? http服务器与web服务器有区别?为什么用以搞混了? web的定义:它是一种基于超文本和HTTP的.全球 ...
- 第 3 篇:实现博客首页文章列表 API
作者:HelloGitHub-追梦人物 文中所涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 此前在讨论基于模板引擎的开发方式和 django-rest-framework 开发 ...
- Web全栈AngularJS
百度云盘下载 AngularJS是人类首个大规模使用的MVC框架,能够帮助程序员将绝大部分精力集中在核心业务逻辑上,从而大幅提高开发效率. 阶段2:Controller Controller是Angu ...