当前位置:
首页 > 互联网+ > 大数据 > 每天5分钟玩转Kubernetespdf/doc/txt格式电子书下载

每天5分钟玩转Kubernetespdf/doc/txt格式电子书下载

本站仅展示书籍部分内容

如有任何咨询

请加微信10090337咨询

每天5分钟玩转Kubernetespdf/doc/txt格式电子书下载

书名:每天5分钟玩转Kubernetespdf/doc/txt格式电子书下载

推荐语:Kubernetes业内专家系统讲解容器编排引擎K8s注重实践并兼顾理论专业讲解示例丰富通俗易懂

作者:CloudMan著

出版社:清华大学出版社

出版时间:2018-04-01

书籍编号:30425698

ISBN:9787302496670

正文语种:中文

字数:95708

版次:1

所属分类:互联网+-大数据

全书内容:

每天5分钟玩转Kubernetespdf/doc/txt格式电子书下载








前言


写在最前面


《每天5分钟玩转Kubernetes》是一本系统学习Kubernetes的教程,有下面两个特点:


  • 系统讲解当前最流行的容器编排引擎Kubernetes

包括安装部署、应用管理、网络、存储、监控、日志管理等多个方面。


  • 重实践并兼顾理论

通过大量实验和操作带领大家学习Kubernetes。

为什么要写这个


因为Kubernetes非常热门,但学习门槛高。


2017年9月,Mesosphere宣布支持Kubernetes;10月,Docker宣布将在新版本中加入对Kubernetes的原生支持。至此,容器编排引擎领域的三足鼎立时代结束,Kubernetes赢得全面胜利。


其实早在2015年5月,Kubernetes在Google上的搜索热度就已经超过了Mesos和Docker Swarm,从那之后便是一路飙升,将对手“甩开了十几条街”。


每天5分钟玩转Kubernetespdf/doc/txt格式电子书下载


目前,AWS、Azure、Google、阿里云、腾讯云等主流公有云提供的是基于Kubernetes的容器服务。Rancher、CoreOS、IBM、Mirantis、Oracle、Red Hat、VMWare等无数厂商也在大力研发和推广基于Kubernetes的容器CaaS或PaaS产品。可以说,Kubernetes是当前容器行业最热门的。


每一轮新技术的兴起,无论对公司还是个人既是机会也是挑战。这项新技术未来必将成为主流,那么作为IT从业者,正确的做法就是尽快掌握。因为:


(1)新技术意味着新的市场和新的需求。初期掌握这种技术的人不是很多,而市场需求会越来越大,因而会形成供不应求的卖方市场,物以稀为贵,这对技术人员将是一个难得的价值提升机会。


(2)学习新技术需要时间和精力,早起步早成材。


机会讲过了,咱们再来看看挑战。


新技术往往意味着技术上的突破和创新,会有不少新的概念和方法。


对于Kubernetes这项平台级技术,覆盖的技术范围非常广,包括计算、网络、存储、高可用、监控、日志管理等多个方面,要掌握这些新技术对IT老兵尚有不小难度,更别说新人了。


写给谁看


这套教程的目标读者包括:


IT实施和运维工程师


越来越多的应用将以容器的方式在开发、测试和生产环境中运行。掌握基于Kubernetes的容器平台运维能力将成为实施和运维工程师的核心竞争力。


软件开发人员


基于容器的微服务架构(Microservice Architecture)会逐渐成为开发应用系统的主流,而Kubernetes将是运行微服务应用的理想平台,市场将需要大量具备Kubernetes技能的应用程序开发人员。


我自己


CloudMan坚信最好的学习方法是分享。编写这本教程的同时也是对自己学习和实践Kubernetes技术的总结。对于知识,只有把它写出来并能够让其他人理解,才能说明自己真正掌握了。


著者

2018年1月


第1章 先把Kubernetes跑起来


Kubernetes(K8s)是Google在2014年发布的一个开源项目。


据说Google的数据中心里运行着20多亿个容器,而且Google十年前就开始使用容器技术。


最初,Google开发了一个叫Borg的系统(现在命名为Omega)来调度如此庞大数量的容器和工作负载。在积累了这么多年的经验后,Google决定重写这个容器管理系统,并将其贡献到开源社区,让全世界都能受益。


这个项目就是Kubernetes。简单地讲,Kubernetes是Google Omega的开源版本。


从2014年第一个版本发布以来,Kubernetes迅速获得开源社区的追捧,包括Red Hat、VMware、Canonical在内的很多有影响力的公司加入到开发和推广的阵营。目前Kubernetes已经成为发展最快、市场占有率最高的容器编排引擎产品。


Kubernetes一直在快速地开发和迭代。本书我们将以v1.7和v1.8为基础学习Kubernetes。我们会讨论Kubernetes重要的概念和架构,学习Kubernetes如何编排容器,包括优化资源利用、高可用、滚动更新、网络插件、服务发现、监控、数据管理、日志管理等。


下面就让我们开始Kubernetes的探险之旅。



1.1 先跑起来


按照一贯的学习思路,我们会在最短时间内搭建起一个可用系统,这样就能够尽快建立起对学习对象的感性认识。先把玩起来,快速了解基本概念、功能和使用场景。


越是门槛高的知识,就越需要有这么一个最小可用系统。如果直接上来就学习理论知识和概念,很容易从入门到放弃。


当然,要搭建这么一个可运行的系统通常也不会太容易,不过很幸运,Kubernetes官网已经为大家准备好了现成的最小可用系统。


kubernetes.io开发了一个交互式教程,通过Web浏览器就能使用预先部署好的一个Kubernetes集群,快速体验Kubernetes的功能和应用场景,下面我就带着大家去玩一下。


打开https://kubernetes.io/docs/tutorials/kubernetes-basics/。


页面左边就能看到教程菜单,如图1-1所示。


每天5分钟玩转Kubernetespdf/doc/txt格式电子书下载


图1-1


教程会指引大家完成创建Kubernetes集群、部署应用、访问应用、扩展应用、更新应用等最常见的使用场景,迅速建立感性认识。



1.2 创建Kubernetes集群


点击教程菜单1. Create a Cluster → Interactive Tutorial - Creating a Cluster,如图1-2所示。


每天5分钟玩转Kubernetespdf/doc/txt格式电子书下载


图1-2


显示操作界面,如图1-3所示。


每天5分钟玩转Kubernetespdf/doc/txt格式电子书下载


图1-3


左边部分是操作说明。右边是Terminal,即命令终端窗口。


按照操作说明,我们在Terminal中执行minikube start,然后执行kubectl get nodes,这样就创建好了一个单节点的kubernetes集群,如图1-4所示。


每天5分钟玩转Kubernetespdf/doc/txt格式电子书下载


图1-4


集群的唯一节点为host01,需要注意的是当前执行命令的地方并不是host01。我们是通过Kubernetes的命令行工具kubectl远程管理集群。


执行kubectl cluster-info查看集群信息,如图1-5所示。


每天5分钟玩转Kubernetespdf/doc/txt格式电子书下载


图1-5


heapster、kubernetes-dashboard都是集群中运行的服务。


注意:为节省篇幅,在后面的演示中,我们将简化操作步骤,详细的说明和完整步骤请参考官网在线文档。



1.3 部署应用


执行命令:


kubectl run kubernetes-bootcamp \\

--image=docker.io/jocatalin/kubernetes-bootcamp:v1 \\

--port=8080


这里我们通过kubectl run部署了一个应用,命名为kubernetes-bootcamp,如图1-6所示。


Docker镜像通过--image指定。


--port设置应用对外服务的端口。


每天5分钟玩转Kubernetespdf/doc/txt格式电子书下载


图1-6


这里Deployment是Kubernetes的术语,可以理解为应用。


Kubernetes还有一个重要术语Pod。


Pod是容器的集合,通常会将紧密相关的一组容器放到一个Pod中,同一个Pod中的所有容器共享IP地址和Port空间,也就是说它们在一个network namespace中。


Pod是Kubernetes调度的最小单位,同一Pod中的容器始终被一起调度。


运行kubectl get pods,查看当前的Pod,如图1-7所示。


每天5分钟玩转Kubernetespdf/doc/txt格式电子书下载


图1-7


kubernetes-bootcamp-390780338-q9p1t就是应用的Pod。



1.4 访问应用


默认情况下,所有Pod只能在集群内部访问。对于上面这个例子,要访问应用只能直接访问容器的8080端口。为了能够从外部访问应用,我们需要将容器的8080端口映射到节点的端口。


执行如下命令,结果如图1-8所示。


kubectl expose deployment/kubernetes-bootcamp \\

--type=\"NodePort\" \\

--port 8080


每天5分钟玩转Kubernetespdf/doc/txt格式电子书下载


图1-8


执行命令kubectl get services,可以查看应用被映射到节点的哪个端口,如图1-9所示。


每天5分钟玩转Kubernetespdf/doc/txt格式电子书下载


图1-9


这里有两个service,可以将service暂时理解为端口映射,后面我们会详细讨论。


Kubernetes是默认的service,暂时不用考虑。kubernetes-bootcamp是我们应用的service,8080端口已经映射到host01的32320端口,端口号是随机分配的,可以执行如下命令访问应用,结果如图1-10所示。


curl host01:32320


每天5分钟玩转Kubernetespdf/doc/txt格式电子书下载


图1-10



1.5 Scale应用


默认情况下应用只会运行一个副本,可以通过kubectl get deployments查看副本数,如图1-11所示。


每天5分钟玩转Kubernetespdf/doc/txt格式电子书下载


图1-11


执行如下命令将副本数增加到3个,如图1-12所示。


kubectl scale deployments/kubernetes-bootcamp --replicas=3


每天5分钟玩转Kubernetespdf/doc/txt格式电子书下载


图1-12


通过kubectl get pods可以看到当前Pod增加到3个,如图1-13所示。


每天5分钟玩转Kubernetespdf/doc/txt格式电子书下载


图1-13


通过curl访问应用,可以看到每次请求发送到不同的Pod,3个副本轮询处理,这样就实现了负载均衡,如图1-14所示。


每天5分钟玩转Kubernetespdf/doc/txt格式电子书下载


图1-14


要scale down也很方便,执行下列命令,结果如图1-15所示。


kubectl scale deployments/kubernetes-bootcamp --replicas=2


每天5分钟玩转Kubernetespdf/doc/txt格式电子书下载


图1-15


从图1-15中可以看到,其中一个副本被删除了。



1.6 滚动更新


当前应用使用的image版本为v1,执行如下命令将其升级到v2,结果如图1-16所示。


kubectl set image deployments/kubernetes-bootcamp

kubernetes-bootcamp=jocatalin/kubernetes-bootcamp:v2


每天5分钟玩转Kubernetespdf/doc/txt格式电子书下载


图1-16


通过kubectl get pods可以观察滚动更新的过程:v1的Pod被逐个删除,同时启动了新的v2 Pod。更新完成后访问新版本应用,如图1-17所示。


每天5分钟玩转Kubernetespdf/doc/txt格式电子书下载


图1-17


如果要回退到v1版本也很容易,执行kubectl rollout undo命令,结果如图1-18所示。


kubectl rollout undo deployments/kubernetes-bootcamp


每天5分钟玩转Kubernetespdf/doc/txt格式电子书下载


图1-18


验证版本已经回退到v1,如图1-19所示。


每天5分钟玩转Kubernetespdf/doc/txt格式电子书下载


图1-19



1.7 小结


至此,我们已经通过官网的交互式教程快速体验了Kubernetes的功能和使用方法。本书的其余章节将详细讨论Kubernetes的架构、典型的部署方法、容器编排能力、网络方案、监控方案,帮助大家全面掌握Kubernetes的核心技能。


第2章 重要概念


在实践之前,必须先学习Kubernetes的几个重要概念,它们是组成Kubernetes集群的基石。


1. Cluster


Cluster是计算、存储和网络资源的集合,Kubernetes利用这些资源运行各种基于容器的应用。


2. Master


Master是Cluster的大脑,它的主要职责是调度,即决定将应用放在哪里运行。Master运行Linux操作系统,可以是物理机或者虚拟机。为了实现高可用,可以运行多个Master。


3. Node


Node的职责是运行容器应用。Node由Master管理,Node负责监控并汇报容器的状态,同时根据Master的要求管理容器的生命周期。Node运行在Linux操作系统上,可以是物理机或者是虚拟机。


在前面交互式教程中,我们创建的Cluster只有一个主机host01,它既是Master也是Node,如图2-1所示。


每天5分钟玩转Kubernetespdf/doc/txt格式电子书下载


图2-1


4. Pod


Pod是Kubernetes的最小工作单元。每个Pod包含一个或多个容器。Pod中的容器会作为一个整体被Master调度到一个Node上运行。


Kubernetes引入

....

本站仅展示书籍部分内容

如有任何咨询

请加微信10090337咨询

本站仅展示书籍部分内容
如有任何咨询

请加微信10090337咨询

再显示