目录 前言 序言 1.1 Kubernetes与云原生应用概览 1.2 概念与原理 Kubernetes架构 2.1 设计理念 2.2 资源对象与基本概念解析 2.3 Pod 2.3.1 Pod解析 2.3.1.1 Init容器 2.3.1.2 Pod安全策略 2.3.1.3 Pod的生命周期 2.3.1.4 Node 2.3.2 Namespace 2.3.3 Service 2.3.4 Volume和Persistent Volume 2.3.5 Deployment 2.3.6 Secret 2.3.7 StatefulSet 2.3.8 DaemonSet 2.3.9 ServiceAccount 2.3.10 ReplicationController和ReplicaSet 2.3.11 Job 2.3.12 CronJob 2.3.13 Ingress 2.3.14 2 ConfigMap ConfigMap的热更新 2.3.15 2.3.15.1 Horizontal Pod Autoscaling 2.3.16 Label 2.3.17 垃圾收集 2.3.18 NetworkPolicy 2.3.19 Annotation 2.3.20 用户指南 用户指南 3.1 资源对象配置 3.2 配置Pod的liveness和readiness探针 3.2.1 配置Pod的Service Account 3.2.2 Secret配置 3.2.3 管理namespace中的资源配额 3.2.4 命令使用 3.3 docker用户过度到kubectl命令行指南 3.3.1 kubectl命令概览 3.3.2 kubectl命令技巧大全 3.3.3 集群安全性管理 3.4 管理集群中的TLS 3.4.1 kubelet的认证授权 3.4.2 TLS bootstrap 3.4.3 创建用户认证授权的kubeconfig文件 3.4.4 RBAC——基于角色的访问控制 3.4.5 IP伪装代理 3.4.6 使用kubeconfig或token进行用户身份认证 3.4.7 kubernetes中的用户与身份认证授权 3.4.8 访问 Kubernetes 集群 访问集群 3.5 3.5.1 3 使用 kubeconfig 文件配置跨集群认证 3.5.2 通过端口转发访问集群中的应用程序 3.5.3 使用 service 访问群集中的应用程序 3.5.4 在kubernetes中开发部署应用 3.6 适用于kubernetes的应用开发部署流程 3.6.1 迁移传统应用到kubernetes中——以Hadoop YARN为例 3.6.2 使用StatefulSet部署用状态应用 3.6.3 最佳实践 最佳实践概览 4.1 在CentOS上部署kubernetes1.6集群 4.2 创建TLS证书和秘钥 4.2.1 创建kubeconfig文件 4.2.2 创建高可用etcd集群 4.2.3 安装kubectl命令行工具 4.2.4 部署master节点 4.2.5 部署node节点 4.2.6 安装kubedns插件 4.2.7 安装dashboard插件 4.2.8 安装heapster插件 4.2.9 安装EFK插件 服务发现与负载均衡 4.2.10 4.3 安装Traefik ingress 4.3.1 分布式负载测试 4.3.2 网络和集群性能测试 4.3.3 边缘节点配置 4.3.4 安装Nginx ingress 4.3.5 运维管理 4.4 服务滚动升级 4.4.1 应用日志收集 4.4.2 4 配置最佳实践 4.4.3 集群及应用监控 4.4.4 数据持久化问题 4.4.5 管理容器的计算资源 4.4.6 存储管理 4.5 GlusterFS 4.5.1 使用GlusterFS做持久化存储 4.5.1.1 在OpenShift中使用GlusterFS做持久化存储 4.5.1.2 CephFS 使用Ceph做持久化存储 集群与应用监控 Heapster 使用Heapster获取集群和对象的metric数据 Prometheus 使用Prometheus监控kubernetes集群 服务编排管理 4.5.2 4.5.2.1 4.6 4.6.1 4.6.1.1 4.6.2 4.6.2.1 4.7 使用Helm管理kubernetes应用 4.7.1 构建私有Chart仓库 4.7.2 持续集成与发布 4.8 使用Jenkins进行持续集成与发布 4.8.1 使用Drone进行持续集成与发布 4.8.2 更新与升级 4.9 手动升级kubernetes集群 4.9.1 升级dashboard 4.9.2 领域应用 领域应用概览 5.1 微服务架构 5.2 微服务中的服务发现 Service Mesh 服务网格 5.2.1 5.3 5 Istio 5.3.1 安装并试用Istio service mesh 5.3.1.1 配置请求的路由规则 5.3.1.2 安装和拓展Istio service mesh 5.3.1.3 集成虚拟机 5.3.1.4 Linkerd Linkerd 使用指南 大数据 5.3.2 5.3.2.1 5.4 Spark standalone on Kubernetes 5.4.1 运行支持kubernetes原生调度的Spark程序 5.4.2 Serverless架构 5.5 边缘计算 5.6 开发指南 开发指南概览 6.1 开发环境搭建 6.2 单元测试和集成测试 6.3 client-go示例 6.4 社区贡献 6.5 Minikube 6.6 附录 附录说明 7.1 Kubernetes中的应用故障排查 7.2 Kubernetes相关资讯和情报链接 7.3 Docker最佳实践 7.4 使用技巧 7.5 问题记录 7.6 6 7 序言 Kubernetes Handbook Kubernetes是Google基于Borg开源的容器编排调度引擎,作为CNCF(Cloud Native Computing Foundation)最重要的组件之一,它的目标不仅仅是一个编排系 统,而是提供一个规范,可以让你来描述集群的架构,定义服务的最终状态, kubernetes可以帮你将系统自动得达到和维持在这个状态。 本书记录了本人从零开始学习和使用Kubernetes的心路历程,着重于经验分享和总 结,同时也会有相关的概念解析,希望能够帮助大家少踩坑,少走弯路。 在写作本书时,安装的所有组件、所用示例和操作等皆基于Kubernetes1.6.0 版 本。 GitHub 地址:https://github.com/rootsongjc/kubernetes-handbook Gitbook 在线浏览:https://jimmysong.io/kubernetes-handbook/ 如何使用本书 在线浏览 访问 https://jimmysong.io/kubernetes-handbook/ 注意:文中涉及的配置文件和代码链接在网页中将无法访问,请下载GitHub源码 后,在Markdown编辑器中打开,点击链接将跳转到你的本地目录,推荐使 用typora,或者直接登录github 查看。 本地查看 1. 将代码克隆到本地 2. 安装 gitbook:Setup and Installation of GitBook 3. 执行 gitbook serve 4. 在浏览器中访问 http://localhost:4000 5. 生成的文档在 _book 目录下 下载 PDF/ePub/Mobi 格式文档本地查看 8 序言 访问 gitbook 可以看到下载地址,可以下载根据最新文档生成的 PDF/ePub/Mobi 格式文档(文档的注脚中注明了更新时间),同时也可以直接在 gitbook 中阅读, 不过 gitbook 不太稳定打开速度较慢,建议大家直接在 https://jimmysong.io/kubernetes-handbook/ 浏览。 生成 pdf 下载Calibre On Mac 在Mac下安装后,使用该命令创建链接 ln -s /Applications/calibre.app/Contents/MacOS/ebook-convert /us r/local/bin 在该项目目录下执行以下命令生成 kubernetes-handbook.pdf 文档。 gitbook pdf . ./kubernetes-handbook.pdf On Windows 需要用到的工具:calibre,phantomjs 1. 将上述2个安装,calibre 默认安装的路径 C:\Program Files\Calibre2 为 你解压路径; 2. 并将其目录均加入到系统变量 path 中,参考:目录添加到系统变量 path 中; 3. 在 cmd 打开你需要转 pdf 的文件夹,输入 gitbook pdf 即可; 生成单个章节的pdf 使用 pandoc 和 latex 来生成pdf格式文档。 pandoc --latex-engine=xelatex --template=pm-template input.md -o output.pdf 如何贡献 9 序言 提 issue 如果你发现文档中的错误,或者有好的建议、不明白的问题、不要犹豫,欢迎提交 issue。 发起 Pull Request 当你发现文章中明确的错误或者逻辑问题,在你自己的fork的分支中,创建一个新 的branch,修改错误,push 到你的branch,然后在提交issue 后直接发起Pull Request。 贡献文档 文档的组织规则 如果要创建一个大的主题就在最顶层创建一个目录; 全书五大主题,每个主题一个目录,其下不再设二级目录; 所有的图片都放在最顶层的 images 目录下,原则上文章中用到的图片都保 存在本地; 所有的文档的文件名使用英文命名,可以包含数字和中划线;
kubernetes handbook
温馨提示:如果当前文档出现乱码或未能正常浏览,请先下载原文档进行浏览。
本文档由 user 于 2020-12-27 08:48:30上传分享