使用Minikube部署本地Kubernetes集群(二十九)

640?wx_fmt=gif


前言               

使用Minikube部署本地k8s集群相对比较简单,非常推荐将其用于本地k8s开发环境,唯一麻烦点的仅仅是网络问题。

在本篇教程中,我们使用了国内的镜像来完成本地k8s集群的搭建。如果搭建过程中出现错误,建议使用minikube delete之后再重新搭建。


目录


使用Minikube部署本地Kubernetes集群 


1. 什么是Kubernetes集群? 

2. 使用Minikube创建本地Kubernetes实验环境 

1)什么是Minikube? 

2)Minikube支持的功能 

3)Windows 10下安装 

4)打开Minikube可视化面板 

5)常见错误 

6)Linux下安装 


640

使用Minikube部署本地Kubernetes集群




什么是Kubernetes集群?


Kubernetes 用于协调高度可用的计算机集群,这些计算机被连接作为单个工作单元。Kubernetes允许用户将容器化的应用程序部署到集群,而不必专门将其绑定到单个计算机。为了利用这种新的部署模型,应用程序需要被容器化。容器化应用程序比过去的部署模型更灵活和可用——而不是将应用程序直接安装到特定机器上,作为深入集成到主机中的软件包。Kubernetes 在一个集群上以更有效的方式自动分发和调度容器应用程序。

Kubernetes 集群由两种类型的资源组成:

  • Master:即集群的调度节点,负责管理集群,例如调度应用程序、维护应用程序的所需状态、扩展应用程序和滚动更新。

  • Nodes:即应用程序实际运行的工作节点,可以是物理机或者虚拟机。每个工作节点都有一个 Kubelet(节点代理),它是管理节点并与Kubernetes Master节点进行通信的代理。节点上还应支持容器操作,例如 Docker或rkt。一个 Kubernetes 工作集群至少有三个节点。

当我们在Kubernetes上部署应用程序时, Master会启动应用程序容器,并调度容器在集群的Nodes上运行,而Nodes使用Master公开的Kubernetes API与Master进行通信。最终用户还可以直接使用 Kubernetes 的API与集群交互。


640


使用Minikube创建本地Kubernetes实验环境



在大部分情况下,我们需要在本地玩转Kubernetes,以便于Kubernetes应用程序的开发和调测。搭建完整的Kubernetes集群毕竟太重,那么使用Minikube则是不二选择。


什么是Minikube?


Minikube 是一个轻量级的Kubernetes实现,会在本机创建一台虚拟机,并部署一个只包含一个节点的简单集群。Minikube适用于Linux, Mac OS和Windows系统。Minikube CLI提供了集群的基本引导操作,包括启动、停止、状态和删除。

Minikube的目标是成为本地Kubernetes应用程序开发的最佳工具,并支持所有适合的Kubernetes功能!

官方GitHub地址:https://github.com/kubernetes/minikube

640


Minikube支持的功能


Minikube支持以下Kubernetes功能:

  • DNS

  • NodePorts(可使用“minikube service”命令来管理)

  • ConfigMaps和Secrets

  • 仪表板(Dashboards,minikube dashboard)

  • 容器运行时:Docker,rkt,CRI-O和containerd

  • Enabling CNI(容器网络接口)

  • Ingress

  • LoadBalancer(负载均衡,可以使用“minikube tunnel”命令来启用)

  • Multi-cluster(多集群,可以使用“minikube start -p <name>”命令来启用)

  • Persistent Volumes

  • RBAC

  • 通过命令配置apiserver和kubelet


Windows 10下安装


1.安装要求

Windows必须支持虚拟化,可以执行“systeminfo”命令来确认。如果支持虚拟化,则【Hyper-V要求】一栏如下图所示:

640

如果已经装了Hyper-V,则提示如下:

640

2.启用Hyper-V(推荐)

可以通过【程序和功能】=》【打开或关闭 Windows 功能】=》勾选【Hyper-V】来启用Hyper-V,也可以通过管理员执行以下Powershell脚本:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

如果不支持启用Hyper-V,大家可以安装“VirtualBox”,而且目前“VirtualBox”是官方默认的虚拟机管理程序。


3.安装Minikube和kubectl

  • 使用Chocolatey安装Minikube(推荐)

Chocolatey我们前面已经进行了讲解,这里面我们可以使用Chocolatey以管理员身份一键安装Minikube:

choco install minikube kubernetes-cli

640

PS C:\WINDOWS\system32> choco install minikube kubernetes-cli

Chocolatey v0.10.11

Installing the following packages:

minikube;kubernetes-cli

By installing you accept licenses for the packages.


Minikube v1.1.1 [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.

kubernetes-cli v1.14.3 already installed.

 Use --force to reinstall, specify a version to install, or try upgrade.


Chocolatey installed 1/2 packages.

 See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log).


Warnings:

 - kubernetes-cli - kubernetes-cli v1.14.3 already installed.

 Use --force to reinstall, specify a version to install, or try upgrade.

  • 通过下载安装包安装

下载地址:https://github.com/kubernetes/minikube/releases/

需下载【minikube-windows-amd64.exe】,

下载完成后,需要重命名为“minikube.exe”进行使用。


4.启动Minikube

Minikube在Windows上支持使用VirtualBox和Hyper-V,这里我们使用Hyper-V进行实践。

我们需要执行“minikube start”命令来启动Minikube。这个过程中会下载Minikube ISO镜像,如果Minikube ISO镜像下载失败,可复制链接手工下载或者配置容器代理再试。如果是手工下载,下载后,请将ISO文件放置C:\Users\<用户名>\.minikube\cache\iso目录,然后再次执行“start”命令。具体命令如下所示:

需使用管理员执行以下Powershell脚本:

minikube.exe start --registry-mirror=https://registry.docker-cn.com --vm-driver="hyperv" --memory=4096

其中,--registry-mirror参数用于设置镜像服务地址,这里设置为国内镜像服务地址。--vm-driver参数设置了虚拟机类型,这里我们使用Hyper-V,默认是VirtualBox。--memory参数设置了虚拟机内存大小。执行此脚本后,会使用默认的Hyper-V的虚拟交换机,我们也可以使用参数--hyperv-virtual-switch进行指定指定的虚拟网络交换机。虚拟网络交换机设置如下图所示:

640

在中国,由于网络和防火墙的原因,通常会无法拉取k8s相关镜像或者下载速度过于缓慢,因此,我们可以通过参数--image-repository来设置Minikube使用阿里云镜像。如下列命令:

minikube.exe start --registry-mirror=https://registry.docker-cn.com --vm-driver="hyperv" --memory=4096 --hyperv-virtual-switch="NET" --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers

640

PS C:\WINDOWS\system32> minikube.exe start --registry-mirror=https://registry.docker-cn.com --vm-driver="hyperv" --memory=4096 --hyperv-virtual-switch="NET" --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers


* minikube v1.1.1 on windows (amd64)

* using image repository registry.cn-hangzhou.aliyuncs.com/google_containers

* Creating hyperv VM (CPUs=2, Memory=4096MB, Disk=20000MB) ...

* Configuring environment for Kubernetes v1.14.3 on Docker 18.09.6

* Pulling images ...

* Launching Kubernetes ...

* Verifying: apiserver proxy etcd scheduler controller dns

* Done! kubectl is now configured to use "minikube"


成功之后,我们就可以使用kubectl来操作集群了,比如查看当前所有pod的状态:

kubectl get pods --all-namespaces

640


刚才我们使用Minikube创建了默认的集群,我们还可以使用Minikube创建新的集群,比如:

minikube start -p mycluster


值得注意的是,Minikube搭配Hyper-V使用需要禁用动态内存(Docker for Windows初始化时指定禁用了相关虚拟机使用动态内存),执行Powershell脚本如下所示:

Set-VMMemory -VMName 'minikube' -DynamicMemoryEnabled $false。


在Windows 10下,我们还可以使用docker-desktop来启用k8s,不过由于网络的原因,并不是很推荐:

640


打开Minikube可视化面板


成功启动Minikube之后,我们就可以通过以下命令来打开Minikube可视化面板:

minikube dashboard

启用面板

PS C:\WINDOWS\system32> minikube dashboard

* Enabling dashboard ...

* Verifying dashboard health ...

* Launching proxy ...

* Verifying proxy health ...

* Opening 

640

640


常见错误


启动Minikube时提示错误如下:X Unable to start VM: start: exit status 1

处理方案:执行“minikube delete”或者手工清理时虚拟机目录存在残留内容,需手动删除目录“C:\Users\{your username} \.minikube\machines”后再次尝试。


Linux下安装


1.安装虚拟机(可选)

在Linux环境下,Minikube支持直接在主机上运行Kubernetes,因此此步骤为可选。所以大家可以根据实际情况来选择是否安装虚拟机,比如KVM和VirtualBox。

注意:如果直接在主机上运行,Minikube会运行一个不安全的API Server,可能会导致安全隐患,因此不建议在个人工作环境安装。


2.安装kubectl

由于Google网络不太稳定,我们使用阿里云镜像进行安装。

  • CentOS

echo '#k8s

[kubernetes]

name=Kubernetes

baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64

enabled=1

gpgcheck=0

'>/etc/yum.repos.d/kubernetes.repo

#kubeadm和相关工具包

yum -y install kubelet kubeadm kubectl kubernetes-cni


  • Debian / Ubuntu


apt-get update && apt-get install -y apt-transport-https

curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -

echo 'deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main' >/etc/apt/sources.list.d/kubernetes.list

apt-get update

apt-get install -y kubelet kubeadm kubectl


3.安装Minikube

这里我们直接下载安装:

curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \

 && chmod +x minikube

由于网络问题,我们可以选择使用阿里云的执行程序:

curl -Lo minikube https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/latest/minikube-linux-amd64 \

 && chmod +x minikube

然后将可执行文件添加到/usr/local/bin目录下

sudo install minikube /usr/local/bin


4.启动Minikube

minikube start --vm-driver=none

如果存在网络问题,请使用

--image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers指定镜像仓库地址。

640

安装过程中如出现问题,可以执行以下命令之后再重新尝试:

minikube delete

rm ~/.minikube


相关内容

Docker最全教程——从理论到实战(一)

Docker最全教程——从理论到实战(二)

Docker最全教程——从理论到实战(三)

Docker最全教程——从理论到实战(四)

Docker最全教程——从理论到实战(五)

Docker最全教程——从理论到实战(六)

Docker最全教程——从理论到实战(七)

Docker最全教程——从理论到实战(八)    

Docker最全教程——从理论到实战(九)

Docker最全教程之使用Tencent Hub来完成CI(十)

Docker最全教程——数据库容器化(十一)

Docker最全教程——数据库容器化之持久保存数据(十二)

Docker最全教程——MongoDB容器化(十三)

Docker最全教程——Redis容器化以及排行榜实战(十四)

Docker最全教程之Ubuntu下安装Docker(十五)

Docker最全教程之树莓派和Docker(十六)

Docker最全教程之使用TeamCity来完成内部CI、CD流程(十七)

Docker最全教程之使用Docker搭建Java开发环境(十八)

Docker最全教程之Go实战,墙裂推荐(十九)

Docker最全教程之使用.NET Core推送钉钉消息(二十)

Docker最全教程之使用 Visual Studio Code玩转Docker(二十一)

Docker最全教程之Python爬网实战(二十二)

使用PHP搭建个人博客站点

Docker最全教程之使用Node.js搭建团队技术文档站(二十四)

Docker最全教程之MySQL容器化 (二十五)

Docker+ Kubernetes已成为云计算的主流(二十六)

容器化之后如何节省云端成本?(二十七)

了解Kubernetes主体架构(二十八)



640?wx_fmt=jpeg


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/315012.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Manthan, Codefest 19 (open for everyone, rated, Div. 1 + Div. 2) F. Bits And Pieces sosdp预处理超集

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; n≤1e6,ai≤2e6n\le1e6,a_i\le2e6n≤1e6,ai​≤2e6 思路&#xff1a; 由于(aj&ak)(a_j \And a_k)(aj​&ak​)打的括号&#xff0c;所以应该放在一起考虑&#xff0c;现在我们可以枚举aia_iai​&…

架构杂谈《一》

架构杂谈《一》从传统单体架构到服务化架构的发展历程典型的单体架构分为三个层级&#xff0c;Web层、业务逻辑层和数据存储层&#xff0c;每个层的指责分别如下&#xff1a;Web 层&#xff1a;负责与用户交互或者对外提供接口业务逻辑层&#xff1a;为了实现业务逻辑而设计的流…

hdu 3308 LCIS 线段树 + 区间合并

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 思路&#xff1a; 日常水一篇题解。 带修改的求区间连续的递增序列&#xff0c;我们考虑用线段树维护。 直接维护mlenmlenmlen是区间最长的递增序列&#xff0c;lslsls是从左端点开始的最长递增序列&#xf…

从零开始实现ASP.NET Core MVC的插件式开发(二) - 如何创建项目模板

标题&#xff1a;从零开始实现ASP.NET Core MVC的插件式开发(二) - 如何创建项目模板作者&#xff1a;Lamond Lu地址&#xff1a;https://www.cnblogs.com/lwqlun/p/11155666.html源代码&#xff1a;https://github.com/lamondlu/DynamicPlugins在上一篇中&#xff0c;我们介绍…

Codeforces Round #112 (Div. 2) E. Compatible Numbers sosdp

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 思路&#xff1a; 以下假设all1<<22all1<<22all1<<22。 转化问题&#xff0c;对于每个aia_iai​我们都计算xaixorallxa_i\ \ xor \ \ allxai​ xor all&#xff0c;对于所有xxx的子集都…

多租户通用权限设计(基于 casbin)

所谓权限控制, 概念并不复杂, 就是确认某个操作是否能做, 本质上仅仅就是个bool判断.权限几乎是每个系统必不可少的功能, 和具体业务结合之后, 在系统中往往表现的非常复杂和难于控制, 很大部分原因是把权限和具体业务结合的太过紧密, 把业务的复杂度也加入到权限控制中来了.一…

容器化单页面应用中RESTful API的访问

最近在工作中&#xff0c;需要让运行在容器中的单页面应用程序能够访问外部的RESTful API。这个需求看起来并不困难&#xff0c;不过实现起来还是有些曲折的。在此&#xff0c;我就将这部分内容总结一下。在入正题之前&#xff0c;有个一问题&#xff0c;就是为什么要将单页面应…

LogoSharp:Logo语言的C#实现

上周在朋友中问了一圈&#xff0c;发现没有几个人知道Logo语言的&#xff0c;或许&#xff0c;这门古老的语言现在用的人已经非常少了&#xff0c;除了国外有少量的用户将Logo语言用于教育外&#xff0c;估计国内不会有人使用这门语言。其实&#xff0c;Logo语言本来也就是以编…

Hello Kubernetes快速交互实验手册

“ K8S在线实验室提供了一个交互实验环境&#xff0c;现将这部分文章精简并翻译为中文&#xff0c;希望对那些不了解K8S的童鞋有帮助&#xff0c;能够快速玩起来有个感性认识...”原文&#xff1a;https://kubernetes.io/docs/tutorials翻译&#xff1a;Edison ZhouHello Kuber…

2020 ICPC 上海 Sum of Log 数位dp + 状态剪枝

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 思路&#xff1a; 观察可以发现&#xff0c;由于i&j0i \And j0i&j0&#xff0c;所以log2(ij)log_2(ij)log2​(ij)表示的应该是ijijij的111的最高位。 一个显然的dpdpdp状态就出来了f[pos][flag1][fl…

从MVP到微软产品经理的几点心得

昨天&#xff0c;我应邀在微软2019年暑期实习生的入职培训活动上做了一个简短的分享 —— 以我自身的职业发展过程为例&#xff0c;给大家讲了一讲我是怎样从一个技术爱好者&#xff0c;到获得第一个MVP&#xff08;微软最有价值专家&#xff09;的荣誉奖项&#xff0c;以及后来…

小白开学Asp.Net Core 《六》 —— 探究.Net Core 跨平台的奥秘

1、写这篇文章的初衷有好多朋友反馈看不懂我写的开源的一个练手项目&#xff08;GitHub&#xff1a;https://github.com/AjuPrince/Aju.Carefree&#xff09;也有好多人都希望我能写一些简单的入门的文章&#xff0c;记得前几天在群里有人问为什么 .Net Core 能跨平台&#xff…

Codeforces Round #636 (Div. 3) D. Constant Palindrome Sum 思维 + 差分

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 思路&#xff1a; 首先有一个显然的性质就是每组操作最多不会超过两次。 很容易想到一个很暴力的思路&#xff0c;就是枚举x∈[1,2∗k]x \in [1,2*k]x∈[1,2∗k]&#xff0c;让后判断一下每组需要操作几次取…

C#8.0: 在 LINQ 中支持异步的 IAsyncEnumerableT接口

C# 8.0中&#xff0c;提供了一种新的IAsyncEnumerable<T>接口&#xff0c;在对集合进行迭代时&#xff0c;支持异步操作。比如在读取文本中的多行字符串时&#xff0c;如果读取每行字符串的时候使用同步方法&#xff0c;那么会导致线程堵塞。IAsyncEnumerable<T>可…

Codeforces Round #636 (Div. 3) E. Weights Distributing 思维 + bfs

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; n≤2e5,m≤2e5n\le2e5,m\le2e5n≤2e5,m≤2e5 思路&#xff1a; 怎么感觉每场div3div3div3都有一个巧妙的图论题。 首先如果只有两个点的话&#xff0c;肯定是一次bfsbfsbfs之后取前disdisdis小的www作为边权…

解读 Microsoft.NET.Sdk 的源码,你能定制各种奇怪而富有创意的编译过程

在 csproj 中&#xff0c;Project 中的 Sdk 属性是 MSBuild 15.0 开始支持的&#xff0c;也就是 Visual Studio 2017 开始支持。有了 Sdk 属性的存在&#xff0c;MSBuild 编译过程能够扩展得非常强大&#xff0c;而不止是过去 Import 的一个 props 和 targets 文件。本文将介绍…

《ASP.NET Core 微服务实战》译者序

最近&#xff0c;我将《ASP.NET Core 微服务实战》一书由英文翻译为中文。这本书是由清华大学出版社引进的&#xff0c;目前还处于最后的排版校对过程中&#xff0c;现将该书的译者序发表于此。以下为译者译全文&#xff1a;“微服务”的概念在 2014 年正式提出之后&#xff0c…

.NET 云原生技术使用调查

.NET Core 3.0 即将发布RC&#xff0c;.NET Core 3.0默认更好的支持Docker资源限制&#xff0c;官方团队也在努力让.NET Core成为真正的容器运行时&#xff0c;使其在低内存环境中具有容器感知功能并高效运行。GC堆限制.NET Core减少了CoreCLR默认使用的内存&#xff0c;如G0代…

FZU - 2042 The Mad Mathematician 数位dp + 算贡献

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 求sumsumsum。 a,b,c,d,e≤1e18a,b,c,d,e\le1e18a,b,c,d,e≤1e18 思路&#xff1a; 这是一篇无从考究的题解&#xff0c;因为fzu现在进不去。 看到这种题直接考虑数位dpdpdp&#xff0c;对于[A,B],[C,D][…

「PowerBI」分析服务多维数据结构重回关系数据库的一大绝招

在过往Excel催化剂定位的轻量级ExcelPowerBIDesktop的解决方案中&#xff0c;已经做过了近乎完美的PowerBIDesktop数据模型数据导出到Excel工作表的应用&#xff0c;这也是个人版数据应用的重要的刚需功能&#xff0c;由Excel催化剂免费奉献给PowerBI社区作完结。此篇再次带领大…