Summary 前言 序言 云原生 云原生的定义 CNCF - 云原生计算基金会简介 CNCF章程 Play with Kubernetes 快速部署一个云原生本地实验环境 Kubernetes与云原生应用概览 云原生应用之路——从Kubernetes到Cloud Native 云原生编程语言 云原生编程语言Ballerina 云原生编程语言Pulumi 云原生的未来 概念与原理 Kubernetes架构 设计理念 Etcd解析 开放接口 CRI - Container Runtime Interface(容器运行时接口) CNI - Container Network Interface(容器网络接口) CSI - Container Storage Interface(容器存储接口) Kubernetes中的网络 Kubernetes中的网络解析——以flannel为例 Kubernetes中的网络解析——以calico为例 资源对象与基本概念解析 Pod状态与生命周期管理 Pod概览 Pod解析 Init容器 Pause容器 Pod安全策略 Pod的生命周期 Pod Hook Pod Preset Pod中断与PDB(Pod中断预算) 集群资源管理 Node Namespace Label Annotation Taint和Toleration(污点和容忍) 垃圾收集 控制器 Deployment StatefulSet DaemonSet ReplicationController和ReplicaSet Job CronJob Horizontal Pod Autoscaling 自定义指标HPA 服务发现 Service Ingress Traefik Ingress Controller 身份与权限控制 ServiceAccount RBAC——基于角色的访问控制 NetworkPolicy 存储 Secret ConfigMap ConfigMap的热更新 Volume Persistent Volume(持久化卷) Storage Class 本地持久化存储 集群扩展 使用自定义资源扩展API Aggregated API Server APIService Service Catalog 资源调度 用户指南 用户指南 资源对象配置 配置Pod的liveness和readiness探针 配置Pod的Service Account Secret配置 管理namespace中的资源配额 命令使用 docker用户过度到kubectl命令行指南 kubectl命令概览 kubectl命令技巧大全 使用etcdctl访问kubernetes数据 集群安全性管理 管理集群中的TLS kubelet的认证授权 TLS bootstrap 创建用户认证授权的kubeconfig文件 IP伪装代理 使用kubeconfig或token进行用户身份认证 Kubernetes中的用户与身份认证授权 Kubernetes集群安全性配置最佳实践 访问Kubernetes集群 访问集群 使用kubeconfig文件配置跨集群认证 通过端口转发访问集群中的应用程序 使用service访问群集中的应用程序 从外部访问Kubernetes中的Pod Cabin - Kubernetes手机客户端 Kubernetic - Kubernetes桌面客户端 Kubernator - 更底层的Kubernetes UI 在Kubernetes中开发部署应用 适用于kubernetes的应用开发部署流程 迁移传统应用到Kubernetes中——以Hadoop YARN为例 使用StatefulSet部署用状态应用 最佳实践 最佳实践概览 在CentOS上部署Kubernetes集群 创建TLS证书和秘钥 创建kubeconfig文件 创建高可用etcd集群 安装kubectl命令行工具 部署master节点 安装flannel网络插件 部署node节点 安装kubedns插件 安装dashboard插件 安装heapster插件 安装EFK插件 使用kubeadm快速构建测试集群 使用kubeadm在Ubuntu Server 16.04上快速构建测试集群 服务发现与负载均衡 安装Traefik ingress 分布式负载测试 网络和集群性能测试 边缘节点配置 安装Nginx ingress 安装配置DNS 安装配置Kube-dns 安装配置CoreDNS 运维管理 Master节点高可用 服务滚动升级 应用日志收集 配置最佳实践 集群及应用监控 数据持久化问题 管理容器的计算资源 集群联邦 存储管理 GlusterFS 使用GlusterFS做持久化存储 使用Heketi作为kubernetes的持久存储GlusterFS的external provisioner 在OpenShift中使用GlusterFS做持久化存储 GlusterD-2.0 Ceph 用Helm托管安装Ceph集群并提供后端存储 使用Ceph做持久化存储 OpenEBS 使用OpenEBS做持久化存储 Rook NFS 利用NFS动态提供Kubernetes后端存储卷 集群与应用监控 Heapster 使用Heapster获取集群和对象的metric数据 Prometheus 使用Prometheus监控kubernetes集群 使用Vistio监控Istio服务网格中的流量 服务编排管理 使用Helm管理kubernetes应用 构建私有Chart仓库 持续集成与发布 使用Jenkins进行持续集成与发布 使用Drone进行持续集成与发布 更新与升级 手动升级Kubernetes集群 升级dashboard 领域应用 领域应用概览 微服务架构 微服务中的服务发现 使用Java构建微服务并发布到Kubernetes平台 Spring Boot快速开始指南 Service Mesh 服务网格 Istio 安装并试用Istio service mesh 配置请求的路由规则 安装和拓展Istio service mesh 集成虚拟机 Istio中sidecar的注入规范及示例 如何参与Istio社区及注意事项 Istio教程 Linkerd Linkerd 使用指南 Conduit Condiut概览 安装Conduit Envoy Envoy的架构与基本术语 Envoy作为前端代理 Envoy mesh教程 SOFAMesh 大数据 Spark standalone on Kubernetes 运行支持Kubernetes原生调度的Spark程序 Serverless架构 理解Serverless FaaS-函数即服务 OpenFaaS快速入门指南 边缘计算 人工智能 开发指南 开发指南概览 SIG和工作组 开发环境搭建 本地分布式开发环境搭建(使用Vagrant和Virtualbox) 单元测试和集成测试 client-go示例 Operator operator-sdk 高级开发指南 社区贡献 Minikube 附录 附录说明 Kubernetes中的应用故障排查 Kubernetes相关资讯和情报链接 Docker最佳实践 使用技巧 问题记录 Kubernetes版本更新日志 Kubernetes1.7更新日志 Kubernetes1.8更新日志 Kubernetes1.9更新日志 Kubernetes1.10更新日志 Kubernetes1.11更新日志 Kubernetes及云原生年度总结及展望 Kubernetes与云原生2017年年终总结及2018年展望 Kubernetes认证服务提供商(KCSP)说明 认证Kubernetes管理员(CKA)说明