使用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​&…

【PKUWC2018】随机算法【状压dp】【组合计数】

题意&#xff1a;一张nnn个点mmm条边的无向无权图&#xff0c;求以下算法计算最大独立集的正确率&#xff1a;随机一个排列&#xff0c;依次考虑排列中每一个点&#xff0c;如果不与任何一个独立集中的点相邻则将其加入独立集。模998244353998244353998244353。 n≤20n\leq20n≤…

架构杂谈《一》

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

hdu 3308 LCIS 线段树 + 区间合并

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

【ARC103D】Distance Sums【树论】【构造】

题意&#xff1a;一棵nnn个点的无权树&#xff0c;给定每个点iii到其他所有点的距离之和did_idi​&#xff0c;保证did_idi​两两不同。构造或判断无法构造一棵满足条件的树。 n≤105n\leq 10^5n≤105 首先对于非根结点uuu&#xff0c;有 dudfau−sizu(n−sizu)d_ud_{fa_u}-si…

从零开始实现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的子集都…

【CF1349D】Slime and Biscuits【概率期望】【解方程】

题意&#xff1a;nnn个人共有mmm个饼干&#xff0c;每轮随机选一个饼干随机给一个另外的人&#xff0c;所有饼干都在一个人手里时游戏结束&#xff0c;求期望进行次数。模998244353998244353998244353。 n≤105,m≤3105n\leq10^5,m\leq3\times10^5n≤105,m≤3105 首先肯定是每…

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

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

Codeforces Round #225 (Div. 1) E. Vowels 容斥 + sosdp

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 给你nnn个长度为333的串&#xff0c;串的每个字母都在a−za-za−z范围内&#xff0c;定义一个串合法当且仅当这个串中含有至少一个元音字母。现在他忘记了元音字母都有那几个&#xff0c;显然有2242^{24}224…

【CF1344D】Résumé Review【数学】【二分】

题意&#xff1a;给定长度为nnn的自然数序列aaa和整数kkk&#xff0c;要求构造长度为nnn的自然数序列bbb&#xff0c;使得0≤bi≤ai,∑bik0\leq b_i\leq a_i,\sum b_ik0≤bi​≤ai​,∑bi​k&#xff0c;且∑bi(ai−bi2)\sum b_i(a_i-b_i^2)∑bi​(ai​−bi2​)最大化。 n≤105…

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

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

2020牛客暑期多校训练营(第六场)H.Harmony Pairs 数位dp

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 给你一个nnn&#xff0c;问你有多少对0≤a≤b≤n0\le a\le b\le n0≤a≤b≤n满足S(a)>S(b)S(a)>S(b)S(a)>S(b)。其中S(a)S(a)S(a)表示aaa的十进制各位数之和。 思路&#xff1a; 显然的数位dpdpd…

【PKUWC2018】随机游走【Min-Max容斥】【树形dp】【FWT】

题意&#xff1a;给一棵nnn个点的无权树和xxx&#xff0c;qqq次询问&#xff0c;每次给定一个点集SSS,询问从xxx开始每次随机走一步&#xff0c;SSS中的每个点至少被经过一次的期望步数。 n≤18,q≤5000n\leq 18,q\leq 5000n≤18,q≤5000 题目求的相当于是SSS中的所有点 第一次…

LogoSharp:Logo语言的C#实现

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

hdu 6899 Xor 数位dp

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 问你有多少对x,yx,yx,y满足以下条件&#xff1a; (1)x∈[0,A],y∈[0,B](1)x \in [0,A],y\in [0,B](1)x∈[0,A],y∈[0,B] (2)∣x−y∣≤K(2)|x-y|\le K(2)∣x−y∣≤K (3)xxory≤W(3)x \ \ xor \ \ y\le W(3)…

【PKUWC2018】Minimax【线段树合并】

题意&#xff1a;给定一棵nnn个点的二叉树&#xff0c;叶子的权值输入给定且互不相同&#xff0c;非叶子结点iii的权值有pip_ipi​的概率为儿子结点权值最大值&#xff0c;1−pi1-p_i1−pi​的概率为最小值。求根结点取每种值的概率。模998244353998244353998244353。 n≤3105n…

对数位dp的一些拙见

这不是一篇介绍数位dpdpdp的文章&#xff0c;只是我思考后的一些记录&#xff0c;怕以后就忘记了。 由于博主太菜不会组合数学&#xff0c;以下数位dpdpdp均采用记忆化搜索的方式。 首先最重要的就是状态设计了&#xff0c;正常来说数位dpdpdp的状态设计需要包含数的结构和状态…

Hello Kubernetes快速交互实验手册

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

【ZJOI2018】历史【结论】【LCT思想】

题意&#xff1a;一棵nnn个点的树&#xff0c;每个点有权值aia_iai​&#xff0c;初始时给定。维护&#xff1a; 单点权值加上一个正数。 询问每个点恰好执行aia_iai​次 access 操作&#xff0c;任意安排顺序的条件下切换轻重链总次数的最大值。 n≤4105n\leq 4\times 10^5n…