搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
Kubernetes权威指南:从Docker到Kubernetes实践全接触
0.00    
图书来源: 浙江图书馆(由图书馆配书)
  • 配送范围:
    全国(除港澳台地区)
  • ISBN:
    9787121276392
  • 作      者:
    龚正等编著
  • 出 版 社 :
    电子工业出版社
  • 出版日期:
    2016
收藏
编辑推荐
  这是一本对从事云计算领域技术实践的人来说非常有价值的书籍。
  Kubernetes是容器生态圈中的重要一员,发展速度非常快,现在已经拥有500多名代码贡献者。
  本书全方面覆盖了Kubernetes入门、运行机制、原理、高级案例等详尽内容。
  本书由浅入深地介绍了Kubernetes容器云平台,并围绕着生产环境中可能出现的问题,给出大量典型案例,有很好的可借鉴性。
  作者全部来自惠普公司云计算实战一线,敏锐地探索IT前瞻技术,有全面而扎实的技术架构体系和创新热情,有国际技术领先者的视野,还有对企业级IT架构的深入把握。
展开
作者简介

  龚正,惠普公司高级顾问
  拥有超过10年的IT行业从业经历,以及丰富的云计算、大数据分析和大型企业级应用架构设计、实施经验,是电信、金融、互联网等领域的资深行业专家。

  吴治辉,惠普公司系统架构师
  拥有超过15年的软件研发经验,专注于电信软件和云计算方面的软件研发,拥有丰富的大型项目架构设计经验,是业界少有的具备很强Coding能力的S级资深架构师。

  叶伙荣,惠普公司资深系统架构师、大数据技术和云计算专家
  拥有15年IT行业开发、设计、系统架构和咨询工作经验,曾参与多个CMMI5项目,熟悉各种大数据和云计算技术,拥有丰富的大数据及云计算规划、实施、运维经验。

  张龙春,惠普公司云计算资深架构师
  负责过多个大型云平台的规划、设计和建设,熟悉云计算及大数据领域的开源生态系统,专注于大规模集群技术、高性能网络通信、实时数据库、海量数据挖掘、智能学习和推荐、机器人等。

  闫健勇,惠普公司高级项目经理、总构架师
  拥有15年电信行业系统建设经验,参与了多项电信大型系统的架构设计和管理,对于云计算和大数据在电信行业中的应用拥有丰富的经验。

展开
内容介绍

  Kubernetes是由谷歌开源的Docker容器集群管理系统,为容器化的应用提供了资源调度、部署运行、服务发现、扩容、缩容等一整套功能。本书从一个开发者的角度去理解、分析和解决问题,囊括了Kubernetes入门、核心原理、实战开发、运维、高级案例及源码分析等方面的内容,图文并茂、内容丰富、由浅入深、讲解全面;并围绕着生产环境中可能出现的问题,给出了大量的典型案例,比如安全问题、网络方案的选择、高可用性方案及Trouble Shooting技巧等,有很好的可借鉴性。
  无论对于软件工程师、测试工程师、运维工程师、软件架构师、技术经理还是资深IT人士来说,本书都极具参考价值。

展开
精彩书摘

  5.1  Kubernetes DNS服务配置案例
  在Kubernetes系统中,Pod在访问其他Pod的Service时,可以通过两种服务发现方式完成,即环境变量和DNS方式。但是使用环境变量是有限制条件的,即Service必须在Pod之前被创建出来,然后系统才能在新建的Pod中自动设置与Service相关的环境变量。DNS则没有这个限制,其通过提供全局的DNS服务器来完成服务的注册与发现。
  Kubernetes提供的DNS由以下三个组件组成。
  (1)etcd:DNS存储。
  (2)kube2sky:将Kubernetes Master中的Service(服务)注册到etcd。
  (3)skyDNS:提供DNS域名解析服务。
  这三个组件以Pod的方式启动和运行,所以在一个Kubernetes集群中,它们都可能被调度到任意一个Node节点上去。为了能够使它们之间网络互通,需要将各Pod之间的网络打通,如何打通网络请参考第4章网络配置部分的详细说明。
  网络配置完成后,通过创建RC和Service来启动DNS服务。
  5.1.1skydns配置文件
  首先创建DNS服务的ReplicationController配置文件skydns-rc.yaml,在这个RC配置中包含了3个Container的定义:
  apiVersion: v1
  kind: ReplicationController
  metadata:
  name: kube-dns-v8
  namespace: kube-system
  labels:
  k8s-app: kube-dns
  version: v8
  kubernetes.io/cluster-service: "true"
  spec:
  replicas: 1
  selector:
  k8s-app: kube-dns
  version: v8
  template:
  metadata:
  labels:
  k8s-app: kube-dns
  version: v8
  kubernetes.io/cluster-service: "true"
  spec:
  containers:
  - name: etcd
  image: gcr.io/google_containers/etcd:2.0.9
  resources:
  limits:
  cpu: 100m
  memory: 50Mi
  command:
  - /usr/local/bin/etcd
  - -data-dir
  - /var/etcd/data
  - -listen-client-urls
  - http://127.0.0.1:2379,http://127.0.0.1:4001
  - -advertise-client-urls
  - http://127.0.0.1:2379,http://127.0.0.1:4001
  - -initial-cluster-token
  - skydns-etcd
  volumeMounts:
  - name: etcd-storage
  mountPath: /var/etcd/data
  - name: kube2sky
  image: gcr.io/google_containers/kube2sky:1.11
  resources:
  limits:
  cpu: 100m
  memory: 50Mi
  args:
  # command = "/kube2sky"
  - --kube_master_url=http://192.168.1.128:8080
  - -domain=cluster.local
  - name: skydns
  image: gcr.io/google_containers/skydns:2015-03-11-001
  resources:
  limits:
  cpu: 100m
  memory: 50Mi
  args:
  # command = "/skydns"
  - -machines=http://localhost:4001
  - -addr=0.0.0.0:53
  - -domain=cluster.local
  ports:
  - containerPort: 53
  name: dns
  protocol: UDP
  - containerPort: 53
  name: dns-tcp
  protocol: TCP
  volumes:
  - name: etcd-storage
  emptyDir: {}
  dnsPolicy: Default
  需要修改的几个配置参数如下。
  (1)kube2sky容器需要访问Kubernetes Master,需要配置Master所在物理主机的IP地址和端口号,本例中设置参数--kube_master_url的值为http://192.168.1.128:8080。
  (2)kube2sky容器和skydns容器的启动参数-domain,设置Kubernetes集群中Service所属的域名,本例中为cluster.local。启动后,kube2sky会监听Kubernetes,当有新的Service创建时,就会生成相应的记录并保存到etcd中。kube2sky为每个Service生成两条记录:
  ..;
  ..svc.。
  (3)skydns的启动参数-addr=0.0.0.0:53表示使用本机TCP和UDP的53端口提供服务。
  创建DNS服务的Service配置文件如下:
  skydns-svc.yaml
  apiVersion: v1
  kind: Service
  metadata:
  name: kube-dns
  namespace: kube-system
  labels:
  k8s-app: kube-dns
  kubernetes.io/cluster-service: "true"
  kubernetes.io/name: "KubeDNS"
  spec:
  selector:
  k8s-app: kube-dns
  clusterIP: 20.1.0.100
  ports:
  - name: dns
  port: 53
  protocol: UDP
  - name: dns-tcp
  port: 53
  protocol: TCP
  注意,skydns服务使用的clusterIP需要我们指定一个固定的IP地址,每个Node的Kubelet进程都将使用这个IP地址,不能通过Kubernetes自动分配。
  另外,这个IP地址需要在kube-apiserver启动参数--service-cluster-ip-range指定的IP地址范围内。
  ……

展开
目录

第1章Kubernetes入门         1
1.1  Kubernetes是什么         1
1.2  为什么要用Kubernetes         4
1.3  从一个不简单的Hello World例子说起        5
1.3.1  创建redis-master Pod和服务   7
1.3.2  创建redis-slave Pod和服务       10
1.3.3  创建frontend Pod和服务 12
1.3.4  通过浏览器访问网页         15
1.4  Kubernetes基本概念和术语         16
1.4.1  Node(节点)    16
1.4.2  Pod       18
1.4.3  Label(标签)    20
1.4.4  Replication Controller(RC)     24
1.4.5  Service(服务)          26
1.4.6  Volume(存储卷)    30
1.4.7  Namespace(命名空间) 34
1.4.8  Annotation(注解)  35
1.4.9  小结    36
1.5  Kubernetes总体架构    36
1.6  Kubernetes安装与配置         38
1.6.1  安装Kubernetes          38
1.6.2  配置和启动Kubernetes服务    39
1.6.3  Kubernetes的版本升级     46
1.6.4  内网中的Kubernetes相关配置         46
1.6.5  Kubernetes对Docker镜像的要求——启动命令前台执行    48
第2章Kubernetes核心原理         49
2.1  Kubernetes API Server 分析 49
2.1.1  如何访问Kubernetes API  49
2.1.2  通过API Server 访问Node、Pod和Service    52
2.1.3  集群功能模块之间的通信         55
2.2  调度控制原理        56
2.2.1  Replication Controller 57
2.2.2  Node Controller  60
2.2.3  ResourceQuota Controller  62
2.2.4  Namespace Controller         64
2.2.5  ServiceAccount Controller与Token Controller  64
2.2.6  Service Controller与Endpoint Controller  65
2.2.7  Kubernetes Scheduler 71
2.3  Kubelet运行机制分析  75
2.3.1  节点管理    75
2.3.2  Pod管理      76
2.3.3  容器健康检查    77
2.3.4  cAdvisor资源监控      78
2.4  安全机制的原理   80
2.4.1  Authentication认证   80
2.4.2  Authorization授权      83
2.4.3  Admission Control准入控制      84
2.4.4  Secret私密凭据 88
2.4.5  Service Account   92
2.5  网络原理        95
2.5.1  Kubernetes网络模型          95
2.5.2  Docker的网络基础    97
2.5.3  Docker的网络实现    109
2.5.4  Kubernetes的网络实现     117
2.5.5  开源的网络组件         127
2.5.6  Kubernetes网络试验          131
第3章Kubernetes开发指南         145
3.1  REST简述       145
3.2  Kubernetes API详解      147
3.2.1  Kubernetes API概述  147
3.2.2  API版本      152
3.2.3  API详细说明      152
3.2.4  API响应说明      154
3.3  使用Java程序访问Kubernetes API     156
3.3.1  Jersey  156
3.3.2  Fabric8         168
3.3.3  使用说明    169
第4章Kubernetes运维指南         191
4.1  Kubernetes核心服务配置详解    191
4.1.1  基础公共配置参数    191
4.1.2  kube-apiserver    192
4.1.3  kube-controller-manager    195
4.1.4  kube-scheduler    196
4.1.5  Kubelet         197
4.1.6  kube-proxy  199
4.2  关键对象定义文件详解        200
4.2.1  Pod定义文件详解      200
4.2.2  RC定义文件详解       203
4.2.3  Service定义文件详解         204
4.3  常用运维技巧集锦        206
4.3.1  Node的隔离和恢复   206
4.3.2  Node的扩容       207
4.3.3  Pod动态扩容和缩放 208
4.3.4  更新资源对象的Label       208
4.3.5  将Pod调度到指定的Node        209
4.3.6  应用的滚动升级         210
4.3.7  Kubernetes集群高可用方案     213
4.4  资源配额管理        217
4.4.1  指定容器配额    217
4.4.2  全局默认配额    218
4.4.3  多租户配额管理         221
4.5  Kubernetes网络配置方案详解    223
4.5.1  直接路由方案    224
4.5.2  使用flannel叠加网络        226
4.5.3  使用Open vSwitch      228
4.6  Kubernetes集群监控    232
4.6.1  使用kube-ui查看集群运行状态       232
4.6.2  使用cAdvisor查看容器运行状态     236
4.7  Trouble Shooting指导    241
4.7.1  对象的Event事件      242
4.7.2  容器日志    243
4.7.3  Kubernetes系统日志          244
4.7.4  常见问题    246
4.7.5  寻求帮助    249
第5章Kubernetes高级案例进阶         250
5.1  Kubernetes DNS服务配置案例    250
5.1.1  skydns配置文件         251
5.1.2  修改每个Node上的Kubelet启动参数    254
5.1.3  创建skydns Pod和服务     254
5.1.4  通过DNS查找Service        255
5.1.5  DNS服务的工作原理解析         256
5.2  Kubernetes集群性能监控案例    257
5.2.1  配置Kubernetes集群的ServiceAccount和Secret  258
5.2.2  部署Heapster、InfluxDB、Grafana 261
5.2.3  查询InfluxDB数据库中的数据          265
5.2.4  Grafana页面查看和操作  268
5.3  Cassandra集群部署案例      269
5.3.1  自定义SeedProvider  270
5.3.2  通过Service动态查找Pod         271
5.3.3  Cassandra集群新节点的自动添加  274
5.4  集群安全配置案例        275
5.4.1  双向认证配置    275
5.4.2  简单认证配置    279
5.5  不同工作组共享Kubernetes集群的案例   280
5.5.1  创建namespace          281
5.5.2  定义Context(运行环境)       281
5.5.3  设置工作组在特定Context环境中工作 282
第6章Kubernetes源码导读         285
6.1  Kubernetes源码结构和编译步骤         285
6.2  kube-apiserver进程源码分析       289
6.2.1  进程启动过程    289
6.2.2  关键代码分析    291
6.2.3  设计总结    306
6.3  kube-controller-manager进程源码分析       310
6.3.1  进程启动过程    310
6.3.2  关键代码分析    313
6.3.3  设计总结    321
6.4  kube-scheduler进程源码分析      323
6.4.1  进程启动过程    323
6.4.2  关键代码分析    328
6.4.3  设计总结    335
6.5  Kubelet进程源码分析  337
6.5.1  进程启动过程    337
6.5.2  关键代码分析    342
6.5.3  设计总结    365
6.6  kube-proxy进程源码分析     366
6.6.1  进程启动过程    367
6.6.2  关键代码分析    368
6.6.3  设计总结    383
6.7  Kubectl进程源码分析  384
6.7.1  kubectl create命令    385
6.7.2  rolling-upate命令       389
后记         396

展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证