每天5分钟玩转Kubernetespdf/doc/txt格式电子书下载
本站仅展示书籍部分内容
如有任何咨询
请加微信10090337咨询
书名:每天5分钟玩转Kubernetespdf/doc/txt格式电子书下载
推荐语:Kubernetes业内专家系统讲解容器编排引擎K8s注重实践并兼顾理论专业讲解示例丰富通俗易懂
作者:CloudMan著
出版社:清华大学出版社
出版时间:2018-04-01
书籍编号:30425698
ISBN:9787302496670
正文语种:中文
字数:95708
版次:1
所属分类:互联网+-大数据
版权信息
书名:每天5分钟玩转Kubernetes
作者:CloudMan
出版日期:2018-04-01
出版社:清华大学出版社
ISBN:9787302496670
版权所有 · 侵权必究
前言
写在最前面
《每天5分钟玩转Kubernetes》是一本系统学习Kubernetes的教程,有下面两个特点:
- 系统讲解当前最流行的容器编排引擎Kubernetes
包括安装部署、应用管理、网络、存储、监控、日志管理等多个方面。
- 重实践并兼顾理论
通过大量实验和操作带领大家学习Kubernetes。
为什么要写这个
因为Kubernetes非常热门,但学习门槛高。
2017年9月,Mesosphere宣布支持Kubernetes;10月,Docker宣布将在新版本中加入对Kubernetes的原生支持。至此,容器编排引擎领域的三足鼎立时代结束,Kubernetes赢得全面胜利。
其实早在2015年5月,Kubernetes在Google上的搜索热度就已经超过了Mesos和Docker Swarm,从那之后便是一路飙升,将对手“甩开了十几条街”。
目前,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所示。
图1-1
教程会指引大家完成创建Kubernetes集群、部署应用、访问应用、扩展应用、更新应用等最常见的使用场景,迅速建立感性认识。
1.2 创建Kubernetes集群
点击教程菜单1. Create a Cluster → Interactive Tutorial - Creating a Cluster,如图1-2所示。
图1-2
显示操作界面,如图1-3所示。
图1-3
左边部分是操作说明。右边是Terminal,即命令终端窗口。
按照操作说明,我们在Terminal中执行minikube start,然后执行kubectl get nodes,这样就创建好了一个单节点的kubernetes集群,如图1-4所示。
图1-4
集群的唯一节点为host01,需要注意的是当前执行命令的地方并不是host01。我们是通过Kubernetes的命令行工具kubectl远程管理集群。
执行kubectl cluster-info查看集群信息,如图1-5所示。
图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设置应用对外服务的端口。
图1-6
这里Deployment是Kubernetes的术语,可以理解为应用。
Kubernetes还有一个重要术语Pod。
Pod是容器的集合,通常会将紧密相关的一组容器放到一个Pod中,同一个Pod中的所有容器共享IP地址和Port空间,也就是说它们在一个network namespace中。
Pod是Kubernetes调度的最小单位,同一Pod中的容器始终被一起调度。
运行kubectl get pods,查看当前的Pod,如图1-7所示。
图1-7
kubernetes-bootcamp-390780338-q9p1t就是应用的Pod。
1.4 访问应用
默认情况下,所有Pod只能在集群内部访问。对于上面这个例子,要访问应用只能直接访问容器的8080端口。为了能够从外部访问应用,我们需要将容器的8080端口映射到节点的端口。
执行如下命令,结果如图1-8所示。
kubectl expose deployment/kubernetes-bootcamp \\
--type=\"NodePort\" \\
--port 8080
图1-8
执行命令kubectl get services,可以查看应用被映射到节点的哪个端口,如图1-9所示。
图1-9
这里有两个service,可以将service暂时理解为端口映射,后面我们会详细讨论。
Kubernetes是默认的service,暂时不用考虑。kubernetes-bootcamp是我们应用的service,8080端口已经映射到host01的32320端口,端口号是随机分配的,可以执行如下命令访问应用,结果如图1-10所示。
curl host01:32320
图1-10
1.5 Scale应用
默认情况下应用只会运行一个副本,可以通过kubectl get deployments查看副本数,如图1-11所示。
图1-11
执行如下命令将副本数增加到3个,如图1-12所示。
kubectl scale deployments/kubernetes-bootcamp --replicas=3
图1-12
通过kubectl get pods可以看到当前Pod增加到3个,如图1-13所示。
图1-13
通过curl访问应用,可以看到每次请求发送到不同的Pod,3个副本轮询处理,这样就实现了负载均衡,如图1-14所示。
图1-14
要scale down也很方便,执行下列命令,结果如图1-15所示。
kubectl scale deployments/kubernetes-bootcamp --replicas=2
图1-15
从图1-15中可以看到,其中一个副本被删除了。
1.6 滚动更新
当前应用使用的image版本为v1,执行如下命令将其升级到v2,结果如图1-16所示。
kubectl set image deployments/kubernetes-bootcamp
kubernetes-bootcamp=jocatalin/kubernetes-bootcamp:v2
图1-16
通过kubectl get pods可以观察滚动更新的过程:v1的Pod被逐个删除,同时启动了新的v2 Pod。更新完成后访问新版本应用,如图1-17所示。
图1-17
如果要回退到v1版本也很容易,执行kubectl rollout undo命令,结果如图1-18所示。
kubectl rollout undo deployments/kubernetes-bootcamp
图1-18
验证版本已经回退到v1,如图1-19所示。
图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所示。
图2-1
4. Pod
Pod是Kubernetes的最小工作单元。每个Pod包含一个或多个容器。Pod中的容器会作为一个整体被Master调度到一个Node上运行。
Kubernetes引入
....
本站仅展示书籍部分内容
如有任何咨询
请加微信10090337咨询