Kubernetes攻略之新手上路

在公有云、私有云和混合云的环境中,Kubernetes已经成为规模化部署容器应用的事实标准。最大的公有云平台AWS、谷歌云、Azure、IBM云和Oracle云目前都提供Kubernetes的管理服务(Managed Services)。各大互联网公司也开始将服务部署到Kubernetes上,从而提高服务的高可用性和服务的易维护性。

随着Kubernetes的火爆,越来越多的开发人员开始学习这门技术。下图展示了在谷歌搜索引擎上在过去五年搜索Kubernetes的兴趣指数。由此可见Kubernetes的日益火爆。

640?wx_fmt=png

作为目前甚至未来很长一段时间的主流技术,笔者会通过一系列文章带领大家逐步深入Kubernetes的世界中。这一系列文章既会兼顾动手实践,也会兼顾理论概念。希望读者可以结合实践来深入理解Kubernetes。在这篇文章中作者将对Kubernetes做简单介绍,并介绍如何在单机和云环境下进行安装。

什么是Kubernetes

Kubernetes是希腊语舵手的意思,这也是为什么它的标志看起来就像船上的舵,寓意其可以让使用者自由自在的行驶在容器化应用的海洋之中。Kubernetes一般也会被缩写为K8s,中间的8个字母被移除掉。

640?wx_fmt=png

Kubernetes是用Go语言编写的,起源于谷歌的内部系统Borg和Omega。K8s是一个让你轻松部署和管理容器化应用的平台系统。谷歌利用这一系统来帮助开发人员和系统管理员管理数以千计的服务和应用,使得基础架构得以最大化的应用。在2014年,K8s被捐赠给CNCF(Cloud Native Computing Foundation)。正是因为谷歌的背书,K8s发展火爆,成为了行业中事实标准。

对于开发人员而言,只需要提交一份容器化应用(比如docker)之间相互依赖的描述给K8s的master节点即可,至于K8s如何将服务分配到哪些节点对于开发人员都没有关系,因为K8s会自行进行调度,从而使得对底层硬件达到最大化利用。这样,即使有上千个worker节点,对于开发人员而言,他们看起来就像一个单节点平台一样。

640?wx_fmt=png

上图来自 Kubernetes in Action

K8s的安装

这一部分我将会介绍两种K8s的安装方式,分别是单机安装(MiniKube)和在Azure云上体验K8s服务(Azure Kubernetes Service, AKS)。对于目前云上的K8s服务,作者还是推荐使用Google Cloud Platform和Azure。Google就不必说了,K8s诞生于此。而Azure的K8s服务目前的领导者正是K8s创始人之一Brenden Burns,所以体验也是很不错的。

MiniKube安装

MiniKube可以在你的个人计算机的虚拟机上运行单节点的K8s集群。作者以MacOS上的安装过程为例展示如何安装MiniKube。

  • 安装前先检查虚拟化是否支持

sysctl -a | grep -E --color 'machdep.cpu.features|VMX'

运行命令后如果看到VMX的字样就说明你的系统可以支持虚拟化了

640?wx_fmt=png

  • 安装kubectl kubectl是K8s的命令行工具,可以用来部署应用,检查和管理集群资源。在MacOS上安装kubectl非常方便,利用homebrew就可以直接安装。

brew install kubectl

安装完后我们可以利用如下命令检查一下kubectl是否安装成功

kubectl version

如果如下显示则说明kubectl安装成功了

640?wx_fmt=png

  • 安装虚拟机 笔者这里选择使用Oracle的VirtualBox,在官网上下载对应版本即可https://www.virtualbox.org/wiki/Downloads

  • 安装minikube 在MacOS上安装minikube依然很简单,使用homebrew即可

brew cask install minikube
  • 启动minikube

minikube start

使用上面命令启动minikube后,我们会得到如下结果

640?wx_fmt=png至此,我们的minikube就已经安装完成了。如果这时发现在启动minikube时,虚拟机报如下错误

640?wx_fmt=jpeg

那么我们需要在MacOS里改一下安全设置。进入Security&Privacy

640?wx_fmt=png

然后点击Allow即可

640?wx_fmt=jpeg

AKS安装

利用云厂商提供的K8s服务就相对容易一些。为了使用AKS,首先请确保你有一个Azure的试用Subscription。

  • 创建Kubernetes Service 首先我们搜索“Kubernetes Service”,然后点击Create来进行创建。

640?wx_fmt=png

  • 创建Kubernetes集群 这里需要填写AKS所在的resource group,AKS集群的名称,所在区域以及K8s的版本号,然后将节点数目设置为1个。直接点击Review + create进入最后一步

640?wx_fmt=jpeg

  • 确认创建 我们在看到Validation passed后就可以正式创建AKS服务了

640?wx_fmt=jpeg

  • 下载秘钥文件 我们需要下载一些秘钥文件,这样才可以在Azure网页上直接使用命令行和K8s服务进行交互。点击右上角的命令行符号,我们就可以看到这样的一个命令行工具。

640?wx_fmt=png

然后输入如下命令即可

az aks get-credentials --resource-group AKSHelloWorld --name AKSTest

我们可以依然用kubectl version命令来查看AKS的版本号

640?wx_fmt=png

至此,我们的AKS安装便结束了。

总结

这篇文章带领大家简单了解了一下Kubernetes,并详细讲解了在单机和云环境下安装K8s的步骤。如果有条件,希望读者可以两种方式都试一下,或者至少尝试一下minikube的安装。在下一篇文章中,我将结合一些K8s中常用的命令给大家讲解一下K8s中的一些核心概念,并展示如何用K8s进行服务的部署。

640?wx_fmt=jpeg

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

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

相关文章

操作系统——深入理解虚拟内存机制

本文来自:https://www.jianshu.com/p/13e337312651 概述 现代操作系统了提供了一种对主存的抽象概念,叫做虚拟内存。它为每个进程提供了一个非常大的,一致的和私有的地址空间。虚拟内存提供了以下的三个关键能力: 它为所有进程提…

dotNET Core 中怎样操作 AD?

做企业应用开发难免会跟 AD 打交道,在之前的 dotNET FrameWork 时代,通常使用 System.DirectoryServices 的相关类来操作 AD ,在 dotNET Core 中没有这个命名空间,在张善友大佬的推荐下,知道了 Novell.Directory.Ldap。…

操作系统——页面置换算法

一、页面置换算法简介 操作系统将内存按照页的进行管理,在需要的时候才把进程相应的部分调入内存。当产生缺页中断时,需要选择一个页面写入。如果要换出的页面在内存中被修改过,变成了“脏”页面,那就需要先写会到磁盘。页面置换…

在树莓派4上安装 .NET Core 3.0 运行时及 SDK

点击上方蓝字关注“汪宇杰博客”导语我最近买了个树莓派4,4GB内存高富帅配置,并安装了官方操作系统Raspbian。今天我成功运行了一个ASP.NET Core 3.0 应用程序。我们来看看怎么弄的吧~ARM32 还是 ARM64?需要说明的是,目前无法在树莓派 4 上运…

.NET生成漂亮桌面背景

前言一天,我朋友指着某某付费软件对我说,这个东西不错,每天生成一张桌面背景,还能学英语(放置名人名言和翻译)!我说,这东西搞不好我也能做,然后朋友说,“如果…

Mysql 执行流程

mysql执行一个查询的过程,到底做了些什么: 客户端发送一条查询给服务器;服务器先检查查询缓存,如果命中了缓存,则立刻返回存储在缓存中的结果。否则进入下一阶段。服务器段进行SQL解析、预处理,在优化器生成…

Autofac的AOP面向切面编程研究

我的理解是 把系统性的编程工作封装起来 》我给这个取个名字叫 “Aspect”,然后通过AOP技术把它切进我们的业务逻辑代码 》 “业务“这样的好处:“Aspect” 和 “业务” 相互独立,既可以让“业务” 用到了 “Aspect” 又让2者互相独立不耦合&…

计算机网络原理梳理丨清晰认识 TCP/IP 协议,图解秒懂!

作者:MobMsg,资深全端工程师一枚,架构师社区合伙人!TCP/IP 协议族Internet 的核心协议就是 TCP/IP,广泛应用于局域网和广域网,目前已有20年发展史,是现用国际通行标准。TCP/IP 是个协议族&#…

MySQL 覆盖索引、最左前缀原则、索引下推

1、覆盖索引 1.1 概念 索引是高效找到行的一个方法,当能通过检索索引就可以读取想要的数据,那就不需要再到数据表中读取行了。如果一个索引包含了(或覆盖了)满足查询语句中字段与条件的数据就叫做覆盖索引。 1.2 判断标准 使用…

Entity Framework Core生成的存储过程在MySQL中需要进行处理及PMC中的常用命令

在使用Entity Framework Core生成MySQL数据库脚本,对于生成的存储过程,在执行的过程中出现错误,需要在存储过程前面添加delimiter //附:可以使用Visual Studio中的程序包管理器控制台执行Entity Framework Core中的迁移命令。PMC …

Exceptionless 5.0.0本地Docker快速部署介绍

在之前我有专门写两篇文章介绍过Exceptionless这款开源日志项目的使用和部署,但是当时是基于4.1.0版本(2017年的release),时隔两年多Exceptionless也推出了5.0.0版本。(1)(2)01—关于…

数据库事务及隔离级别

一、事务的基本要素(ACID) 1、原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态…

定了!10 月 8 日!Jupyter Notebook 原生支持将正式来到 VS Code!

北京时间 2019 年 9 月 21 日,在 PyCon China 2019 大会上,前不久,我们已经可以尽管如此,还是有许多童鞋来询问这个功能何时能正式发布。现在,我们可以在 VS Code Python 插件的 Release Plan 看到正式的发布时间已经确…

图解MySQL 内连接、左连接、右连接

一、准备工作 用两个表(a_table、b_table),关联字段a_table.a_id和b_table.b_id来演示一下MySQL的内连接、外连接( 左(外)连接、右(外)连接、全(外)连接)。 MySQL版本:Server version: 5.6.31 MySQL Comm…

微软想将新版Edge浏览器引入Linux

继推出 WSL2、将 exFAT 技术添加至 Linux 内核,和宣布第一届微软 Linux 大会后,微软再次瞄准了 Linux。这次 Linux 用户将很可能迎来新版 Edge 浏览器。微软网络技术程序经理 Sean Larson 在 Twitter 上发布了一条消息,表示 Edge 开发团队正在…

一套代码同时支持.NET Framework和.NET Core

在.NET Core的迁移过程中,我们将原有的.NET Framework代码迁移到.NET Core。如果线上只有一个小型的应用还好,迁移升级完成后,只需要维护.NET Core这个版本的代码。但是,如果是一个大型分布式应用,几百台Server&#x…

从壹开始 [Admin] 之五 ║ 实现『按钮』级别权限配置

正文一、前情回顾哈喽大家好,在这个欢庆的日子里,老张祝大家工作都能蒸蒸日上!今天正好也是社团成立的第一天,我也是希望今天能是个纪念日,沾沾这个大喜庆!放假这两天,倒是学到了很多东西&#…

MySQL——binlog,redo log

一、什么是binlog、redo log binlog属于逻辑日志,是逻辑操作。innodb redo属于物理日志,是物理变更。逻辑日志有个缺点是难以并行,而物理日志可以比较好的并行操作。 binlog是MySQL Server层记录的日志, redo log是InnoDB存储引…

“自启动”树莓派上的 .NET Core 3.0 环境

点击上方蓝字关注“汪宇杰博客”导语昨天发了一篇《自动配置环境变量Rapbian 系统启动时会去执行 .profile 文件里的命令。因此我们只需要把配置环境变量的命令加入 .profile 文件即可。在 Linux 中,.profile 扩展用于终端程序中的文件。Linux 和 Mac OS X 终端程序…

Nginx 配置内网访问树莓派4 ASP.NET Core 3.0 网站

喜迎国庆点击上方蓝字关注“汪宇杰博客”导语前几天发了两篇《能跑就行:Kestrel Hosting如果你的要求只是临时内网访问,可以只用 Kestrel 来承载 Web 服务器,只需要给 dotnet 命令一个 --urls 参数即可设置允许访问的主机名和端口号。我不希望…