标签分类
当前位置:首页 > 程序设计电子书 > Kubernetes电子书网盘下载
Kubernetes进阶实战 Kubernetes进阶实战
触摸纯白

触摸纯白 提供上传

资源
21
粉丝
48
喜欢
5
评论
1

    Kubernetes进阶实战 PDF 影印版

    Kubernetes电子书
    • 发布时间:

    给大家带来的一篇关于Kubernetes相关的电子书资源,介绍了关于Kubernetes方面的内容,本书是由机械工业出版社出版,格式为PDF,资源大小296.1 MB,马永亮编写,目前豆瓣、亚马逊、当当、京东等电子书综合评分为:9.7,更多相关的学习资源可以参阅 程序设计电子书、等栏目。

  • Kubernetes进阶实战 PDF 下载
  • 下载地址:https://pan.baidu.com/s/1q62kUWUV8p-5INs_PzeVYQ
  • 分享码:as29
  • Kubernetes进阶实战 电子书封面

    Kubernetes进阶实战 电子书封面

    内容介绍

    全书分为3篇。第壹篇详细讲解Kubernetes系统基础架构及核心概述,并提供一个Kubernetes快速部署和应用的入门指南。第二篇剖析分Kubernetes系统的核心组件,对Pod、Controller、Service、Network Policy、Volume、ConfigMap和Secret等都有着深入讲解。第三篇主要关注实际应用,以DevOps为主线讲解Kubernetes在企业落地应用的解决方案示例。

    内容节选

    什么是kubernetes

    首先,他是一个全新的基于容器技术的分布式架构领先方案。Kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部:Borg)。在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。
    Kubernetes是一个完备的分布式系统支撑平台,具有完备的集群管理能力,多扩多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和发现机制、內建智能负载均衡器、强大的故障发现和自我修复能力、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制以及多粒度的资源配额管理能力。同时Kubernetes提供完善的管理工具,涵盖了包括开发、部署测试、运维监控在内的各个环节。

    Kubernetes中,Service是分布式集群架构的核心,一个Service对象拥有如下关键特征:

    拥有一个唯一指定的名字
    拥有一个虚拟IP(Cluster IP、Service IP、或VIP)和端口号
    能够体统某种远程服务能力

    被映射到了提供这种服务能力的一组容器应用上

    Service的服务进程目前都是基于Socket通信方式对外提供服务,比如Redis、Memcache、MySQL、Web Server,或者是实现了某个具体业务的一个特定的TCP Server进程,虽然一个Service通常由多个相关的服务进程来提供服务,每个服务进程都有一个独立的Endpoint(IP+Port)访问点,但Kubernetes能够让我们通过服务连接到指定的Service上。有了Kubernetes内奸的透明负载均衡和故障恢复机制,不管后端有多少服务进程,也不管某个服务进程是否会由于发生故障而重新部署到其他机器,都不会影响我们队服务的正常调用,更重要的是这个Service本身一旦创建就不会发生变化,意味着在Kubernetes集群中,我们不用为了服务的IP地址的变化问题而头疼了。

    容器提供了强大的隔离功能,所有有必要把为Service提供服务的这组进程放入容器中进行隔离。为此,Kubernetes设计了Pod对象,将每个服务进程包装到相对应的Pod中,使其成为Pod中运行的一个容器。为了建立Service与Pod间的关联管理,Kubernetes给每个Pod贴上一个标签Label,比如运行MySQL的Pod贴上name=mysql标签,给运行PHP的Pod贴上name=php标签,然后给相应的Service定义标签选择器Label Selector,这样就能巧妙的解决了Service于Pod的关联问题。

    在集群管理方面,Kubernetes将集群中的机器划分为一个Master节点和一群工作节点Node,其中,在Master节点运行着集群管理相关的一组进程kube-apiserver、kube-controller-manager和kube-scheduler,这些进程实现了整个集群的资源管理、Pod调度、弹性伸缩、安全控制、系统监控和纠错等管理能力,并且都是全自动完成的。Node作为集群中的工作节点,运行真正的应用程序,在Node上Kubernetes管理的最小运行单元是Pod。Node上运行着Kubernetes的kubelet、kube-proxy服务进程,这些服务进程负责Pod的创建、启动、监控、重启、销毁以及实现软件模式的负载均衡器。

    在Kubernetes集群中,它解决了传统IT系统中服务扩容和升级的两大难题。你只需为需要扩容的Service关联的Pod创建一个Replication Controller简称(RC),则该Service的扩容及后续的升级等问题将迎刃而解。在一个RC定义文件中包括以下3个关键信息。

    目标Pod的定义

    目标Pod需要运行的副本数量(Replicas)

    要监控的目标Pod标签(Label)

    在创建好RC后,Kubernetes会通过RC中定义的的Label筛选出对应Pod实例并实时监控其状态和数量,如果实例数量少于定义的副本数量,则会根据RC中定义的Pod模板来创建一个新的Pod,然后将新Pod调度到合适的Node上启动运行,知道Pod实例的数量达到预定目标,这个过程完全是自动化。

    目录

    • 前言
    • 第1章Kubernetes系统基础 1
    • 1.1容器技术概述 1
    • 1.1.1容器技术的功用 2
    • 1.1.2容器简史 3
    • 1.1.3Docker的功能限制 4
    • 1.2Kubernetes概述 4
    • 1.2.1Kubernetes简史 4
    • 1.2.2Kubernetes特性 5
    • 1.2.3Kubernetes概念和术语 6
    • 1.3Kubernetes集群组件 10
    • 1.3.1Master组件 10
    • 1.3.2Node组件 12
    • 1.3.3核心附件 13
    • 1.4Kubernetes网络模型基础 13
    • 1.4.1网络模型概述 13
    • 1.4.2集群上的网络通信 15
    • 1.5本章小结 16
    • 第2章Kubernetes快速入门 17
    • 2.1Kubernetes的核心对象 17
    • 2.1.1Pod资源对象 18
    • 2.1.2Controller 19
    • 2.1.3Service 20
    • 2.1.4部署应用程序的主体过程 21
    • 2.2部署Kubernetes集群 22
    • 2.2.1kubeadm部署工具 22
    • 2.2.2集群运行模式 24
    • 2.2.3准备用于实践操作的集群环境 25
    • 2.2.4获取集群环境相关的信息 26
    • 2.3kubectl使用基础与示例 26
    • 2.4命令式容器应用编排 29
    • 2.4.1部署应用(Pod) 30
    • 2.4.2探查Pod及应用详情 33
    • 2.4.3部署Service对象 36
    • 2.4.4扩容和缩容 38
    • 2.4.5修改及删除对象 40
    • 2.5本章小结 41
    • 第3章资源管理基础 42
    • 3.1资源对象及API群组 42
    • 3.1.1Kubernetes的资源对象 43
    • 3.1.2资源及其在API中的组织形式 46
    • 3.1.3访问Kubernetes REST API 48
    • 3.2对象类资源格式 49
    • 3.2.1资源配置清单 50
    • 3.2.2metadata嵌套字段 51
    • 3.2.3spec和status字段 52
    • 3.2.4资源配置清单格式文档 53
    • 3.2.5资源对象管理方式 54
    • 3.3kubectl命令与资源管理 56
    • 3.3.1资源管理操作概述 56
    • 3.3.2kubectl的基本用法 57
    • 3.4管理名称空间资源 59
    • 3.4.1查看名称空间及其资源对象 60
    • 3.4.2管理Namespace资源 61
    • 3.5Pod资源的基础管理操作 61
    • 3.5.1陈述式对象配置管理方式 62
    • 3.5.2声明式对象配置管理方式 64
    • 3.6本章小结 65
    • 第4章管理Pod资源对象 66
    • 4.1容器与Pod资源对象 66
    • 4.2管理Pod对象的容器 68
    • 4.2.1镜像及其获取策略 69
    • 4.2.2暴露端口 70
    • 4.2.3自定义运行的容器化应用 71
    • 4.2.4环境变量 72
    • 4.2.5共享节点的网络名称空间 73
    • 4.2.6设置Pod对象的安全上下文 74
    • 4.3标签与标签选择器 75
    • 4.3.1标签概述 75
    • 4.3.2管理资源标签 77
    • 4.3.3标签选择器 78
    • 4.3.4Pod节点选择器nodeSelector 79
    • 4.4资源注解 80
    • 4.4.1查看资源注解 81
    • 4.4.2管理资源注解 82
    • 4.5Pod对象的生命周期 82
    • 4.5.1Pod的相位 82
    • 4.5.2Pod的创建过程 83
    • 4.5.3Pod生命周期中的重要行为 84
    • 4.5.4容器的重启策略 87
    • 4.5.5Pod的终止过程 87
    • 4.6Pod存活性探测 88
    • 4.6.1设置exec探针 89
    • 4.6.2设置HTTP探针 90
    • 4.6.3设置TCP探针 92
    • 4.6.4存活性探测行为属性 93
    • 4.7Pod就绪性探测 94
    • 4.8资源需求及资源限制 96
    • 4.8.1资源需求 96
    • 4.8.2资源限制 98
    • 4.8.3容器的可见资源 99
    • 4.8.4Pod的服务质量类别 100
    • 4.9本章小结 101
    • 第5章Pod控制器 103
    • 5.1关于Pod控制器 103
    • 5.1.1Pod控制器概述 104
    • 5.1.2控制器与Pod对象 105
    • 5.1.3Pod模板资源 106
    • 5.2ReplicaSet控制器 106
    • 5.2.1ReplicaSet概述 107
    • 5.2.2创建ReplicaSet 108
    • 5.2.3ReplicaSet管控下的Pod对象 109
    • 5.2.4更新ReplicaSet控制器 111
    • 5.2.5删除ReplicaSet控制器资源 114
    • 5.3Deployment控制器 114
    • 5.3.1创建Deployment 115
    • 5.3.2更新策略 116
    • 5.3.3升级Deployment 119
    • 5.3.4金丝雀发布 121
    • 5.3.5回滚Deployment控制器下的应用发布 123
    • 5.3.6扩容和缩容 123
    • 5.4DaemonSet控制器 124
    • 5.4.1创建DaemonSet资源对象 124
    • 5.4.2更新DaemonSet对象 126
    • 5.5Job控制器 127
    • 5.5.1创建Job对象 128
    • 5.5.2并行式Job 129
    • 5.5.3Job扩容 130
    • 5.5.4删除Job 130
    • 5.6CronJob控制器 131
    • 5.6.1创建CronJob对象 131
    • 5.6.2CronJob的控制机制 132
    • 5.7ReplicationController 133
    • 5.8Pod中断预算 133
    • 5.9本章小结 134
    • 第6章Service和Ingress 136
    • 6.1Service资源及其实现模型 136
    • 6.1.1Service资源概述 136
    • 6.1.2虚拟IP和服务代理 138
    • 6.2Service资源的基础应用 140
    • 6.2.1创建Service资源 140
    • 6.2.2向Service对象请求服务 141
    • 6.2.3Service会话粘性 142
    • 6.3服务发现 143
    • 6.3.1服务发现概述 143
    • 6.3.2服务发现方式:环境变量 145
    • 6.3.3ClusterDNS和服务发现 146
    • 6.3.4服务发现方式:DNS 146
    • 6.4服务暴露 147
    • 6.4.1Service类型 147
    • 6.4.2NodePort类型的Service资源 149
    • 6.4.3LoadBalancer类型的Service资源 150
    • 6.4.4ExternalName Service 151
    • 6.5Headless类型的Service资源 152
    • 6.5.1创建Headless Service资源 153
    • 6.5.2Pod资源发现 153
    • 6.6Ingress资源 154
    • 6.6.1Ingress和Ingress Controller 154
    • 6.6.2创建Ingress资源 155
    • 6.6.3Ingress资源类型 157
    • 6.6.4部署Ingress控制器(Nginx) 159
    • 6.7案例:使用Ingress发布tomcat 161
    • 6.7.1准备名称空间 161
    • 6.7.2部署tomcat实例 162
    • 6.7.3创建Service资源 163
    • 6.7.4创建Ingress资源 164

    上一篇:Flutter技术入门与实战  下一篇:Elasticsearch源码解析与优化实战

    展开 +

    收起 -

    码小辫二维码
     ←点击下载即可登录

    Kubernetes相关电子书
    学习笔记
    网友NO.246337

    Python进阶之@property动态属性的实现

    Python 动态属性的概念可能会被面试问到,在项目当中也非常实用,但是在一般的编程教程中不会提到,可以进修一下。 先看一个简单的例子。创建一个 Student 类,我希望通过实例来获取每个学生的一些情况,包括名字,成绩等。成绩只有等到考试结束以后才会有,所以实例化的时候不会给它赋值。 class Student: def __init__(self, name): self.name = name self.score = Nonemike = Student('mike') 考试完以后,准备给 mike 打分: mike.score = 999 在这里,老师一不小心多打了个 9 ,通常来说打分都是 100 分值,999 是一个非法数据,不应该赋值成功。学生一多,老师打分出现手误的情况肯定会越来越多,所以我们必须想办法修改程序,限制 score 的值必须在 0-100 分。 限制值 我们定义一个方法,如果输入的不是 0-100 的整数,就让程序报错,数据合法,我们就把 score 属性修改成功。 def set_score(self, new_score): if not isinstance(new_score, int): raise ValueError('score must be int') if 0 = new_score = 100: self.score = new_score return self.score else: raise ValueError('score invalid') 这样我们每次需要获取成绩的时候使用 self.score 获取,修改成绩的时候调用函数来修改: mike.set_score(999) 调用以后会报错,因为 999 是非法数据。注意,这个时候我使用 self.score 还是可以进行设置,而且不报错: self.score ……

    网友NO.660247

    MySQL的LEFT JOIN表连接的进阶学习教程

    LEFT JOIN的主表 这里所说的主表是指在连接查询里MySQL以哪个表为主进行查询。比如说在LEFT JOIN查询里,一般来说左表就是主表,但这只是经验之谈,很多时候经验主义是靠不住的,为了说明问题,先来个例子,建两个演示用的表categories和posts: CREATE TABLE IF NOT EXISTS `categories` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT,`name` varchar(15) NOT NULL,`created` datetime NOT NULL,PRIMARY KEY (`id`));CREATE TABLE IF NOT EXISTS `posts` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT,`category_id` int(10) unsigned NOT NULL,`title` varchar(100) NOT NULL,`content` varchar(200) NOT NULL,`created` datetime NOT NULL,PRIMARY KEY (`id`),KEY `category_id` (`category_id`)); 先注意一下每个表的索引情况,以后会用到,记得随便插入一点测试数据,不用太多,但怎么也得两行以上,然后执行以下SQL: EXPLAIN SELECT *FROM postsLEFT JOIN categories ON posts.category_id = categories.idWHERE categories.id = ‘一个已经存在的ID'ORDER BY posts.created DESC table key Extracategories PRIMARY Using filesortposts category_id Using where 在explain的结果中,第一行表示的表就是主表,所以说在此查询里categories是主表,而在我们的经验里,LEFT JOIN查询里,左表(posts表)才应该是主表,这产生一个根本的矛盾,MySQL之所以这样处理,是因为在我们的WHERE部分,查询条件是按照categories表的字段来进行……

    网友NO.591061

    MySQL分页Limit的优化过程实战

    前言 在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能。 SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。初始记录行的偏移量是 0(而不是 1): 为了与 PostgreSQL 兼容,MySQL 也支持句法: LIMIT # OFFSET #。 所以通常在查询数据的时候,我们都会用到limit分页,因为这样避免了全表查询,会提高查询效率。但是在一个表的数据量多了之后,分页查询会明细的变慢,下面来一起看看详细的介绍吧 MySQL分页Limit优化 创建测试表card 2000万数据 mysql select count(*) from card;+----------+| count(*) |+----------+| 20000000 |+----------+1 row in set (0.00 sec) -首先测试前1000行查询速度 mysql select * from card limit 1000,10;+---------+--------------------------------------+| card_id | card_number |+---------+--------------------------------------+| 1001 | 13fc90a6-2e3b-11e8-ae62-9c5c8e6e37cf || 1002 | 13fc923e-2e3b-11e8-ae62-9c5c8e6e37cf || 1003 | 13fc93d5-2e3b-11e8-ae62-9c5c8e6e37cf || 1004 | 13fc956a-2e3b-11e8-ae62-9c5c8e6e37cf || 1005 | 13fc9702-……

    网友NO.947155

    SpringBoot+Maven 多模块项目的构建、运行、打包实战

    本篇文章主要介绍了SpringBoot+Maven 多模块项目的构建、运行、打包,分享给大家,具体如下: 项目使用的工具: IntelliJ IDEA JDK 1.8 apache-maven-3.3.9 项目的目录: 主项目 springboot-multi 子模块 entity、dao、service、web 一、使用IDEA创建一个SpringBoot项目 : File - new - Project 项目名称为springboot-multi 二、删除项目中的src目录,把pom.xml中的项目打包方式改为pom,如下: groupIdcom.example/groupId artifactIdspringboot-multi/artifactId version0.0.1-SNAPSHOT/version !-- 此处改为pom -- packagingpom/packaging 三、创建springboot-multi项目的子模块,在项目上右键单击,选择:new - Module。 四、创建四个子模块后,删除子模块中 src/main/java、src/main/java下的所有文件(如果没有文件跳过此操作),只保留web子模块的SpringBoot的Application主启动类。 五、主项目pom.xml (注意modules标签是否指定了子模块) modelVersion4.0.0/modelVersion groupIdcom.example/groupId artifactIdspringboot-multi/artifactId version0.0.1-SNAPSHOT/version !-- 此处改为pom -- packagingpom/packaging namespringboot-multi/name descriptionDemo project for Spring Boot/description modules moduleweb/module moduleservice/module moduledao/module moduleentity/module /modules parent groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-parent/artifactId version1.5.10.RELEASE/version relativePath/ !-- lookup parent from repository -- /par……

    Copyright 2018-2019 xz577.com 码农之家

    版权责任说明