# 一个月学会 Kubernetes ![header](./header.png) 哈喽,欢迎来到我的课程。我希望本课程可以给大家带来良好的学习体验。 在每一章中都有一个明确的重点,一个有用的话题,并且这些话题是相互关联的,让你有一个全面的了解,了解如何在实践中使用 Kubernetes。你需要大量的练习,每天练习巩固每一章获得的知识,形成肌肉记忆。 可以移步到 [GitHub Pages](https://yyong-brs.github.io/learn-kubernetes/) 页面进行阅读。 更多云原生技术,请关注公众号:云原生拓展 ![公众号](./gongzh.png) # 目录 - **第一部分** 快速了解 Kubernetes - 第一章 [开始之前](./chapter1.md) - 1.1 [了解 Kubernetes](./chapter1.md#11-了解-kubernetes) - 1.2 [这本书适合你吗?](./chapter1.md#12-这本书适合你吗) - 1.3 [创建你的实验环境](./chapter1.md#13-创建你的实验环境) - 1.4 [立即见效](./chapter1.md#14-立即见效) - 第二章 [Pods & Deployment 在 Kubernetes 中的应用](./chapter2.md) - 2.1 [Kubernetes 如何运行并管理容器](./chapter2.md#21-kubernetes-如何运行并管理容器) - 2.2 [通过控制器运行 Pods](./chapter2.md#22-通过控制器运行-pods) - 2.3 [在清单文件中定义 Deployments](./chapter2.md#23-在清单文件中定义-deployments) - 2.4 [应用在 Pods 中运行](./chapter2.md#24-应用在-pods-中运行) - 2.5 [了解 Kubernetes 资源管理](./chapter2.md#25-了解-kubernetes-资源管理) - 2.6 [实验室](./chapter2.md#26-实验室) - 第三章 [通过 Service 网络连接 Pods](./chapter3.md) - 3.1 [Kubernetes 如何路由网络流量](./chapter3.md#31-kubernetes-如何路由网络流量) - 3.2 [在 Pods 间路由流量](./chapter3.md#32-在-pods-间路由流量) - 3.3 [路由外部流量到 Pods](./chapter3.md#33-路由外部流量到-pods) - 3.4 [将流量路由到 Kubernetes 外面](./chapter3.md#34-将流量路由到-kubernetes-外面) - 3.5 [理解 Kubernetes Service 解析](./chapter3.md#35-理解-kubernetes-service-解析) - 3.6 [实验室](./chapter3.md#36-实验室) - 第四章 [通过 ConfigMaps 和 Secrets 配置应用程序](./chapter4.md) - 4.1 [Kubernetes 如何为应用提供配置](./chapter4.md#41-kubernetes-如何为应用提供配置) - 4.2 [在 ConfigMaps 中存储和使用配置文件](./chapter4.md#42-在-configmaps-中存储和使用配置文件) - 4.3 [从 ConfigMaps 中查找配置数据](./chapter4.md#43-从-configmaps-中查找配置数据) - 4.4 [使用 Secrets 配置敏感数据](./chapter4.md#44-使用-secrets-配置敏感数据) - 4.5 [管理 Kubernetes 中的应用程序配置](./chapter4.md#45-管理-kubernetes-中的应用程序配置) - 4.6 [实验室](./chapter4.md#46-实验室) - 第五章 [通过 volumes,mounts,claims 存储数据](./chapter5.md) - 5.1 [Kubernetes 如何构建容器文件系统](./chapter5.md#51-kubernetes-如何构建容器文件系统) - 5.2 [在节点使用 volumes 及 mounts 存储数据](./chapter5.md#52-在节点使用-volumes-及-mounts-存储数据) - 5.3 [使用 persistent volumes 及 claims 存储集群范围数据](./chapter5.md#53-使用-persistent-volumes-及-claims-存储集群范围数据) - 5.4 [动态 volume provisioning 及 storage classes](./chapter5.md#54-动态-volume-provisioning-及-storage-classes) - 5.5 [理解 Kubernetes 中存储的选择](./chapter5.md#55-理解-kubernetes-中存储的选择) - 5.6 [实验室](./chapter5.md#56-实验室) - 第六章 [通过 controllers 在多个 Pod 之间扩展应用](./chapter6.md) - 6.1 [Kubernetes 如何大规模运行应用程序](./chapter6.md#61-kubernetes-如何大规模运行应用程序) - 6.2 [使用 Deployments 和 ReplicaSets 来扩展负载](./chapter6.md#62-使用-deployments-和-replicasets-来扩展负载) - 6.3 [使用 DaemonSets 实现高可用性](./chapter6.md#63-使用-daemonsets-实现高可用性) - 6.4 [理解 Kubernetes 中的对象所有权](./chapter6.md#64-理解-kubernetes-中的对象所有权) - 6.5 [实验室](./chapter6.md#65-实验室) - **第二部分** 现实世界中的 Kubernetes - 第七章 [使用多容器 Pods 扩展应用程序](./chapter7.md) - 7.1 [Pod 中多个容器如何通信](./chapter7.md#71-pod-中多个容器如何通信) - 7.2 [使用 init 容器设置应用程序](./chapter7.md#72-使用-init-容器设置应用程序) - 7.3 [通过 adapter 容器以应用一致性](./chapter7.md#73-通过-adapter-容器以应用一致性) - 7.4 [通过 ambassador 容器抽象连接](./chapter7.md#74-通过-ambassador-容器抽象连接) - 7.5 [理解 Pod 环境](./chapter7.md#75-理解-pod-环境) - 7.6 [实验室](./chapter7.md#76-实验室) - 第八章 [使用 StatfulSets 和 Jobs 运行数据量大的应用](./chapter8.md) - 8.1 [Kubernetes 如何用 StatefulSets 建模稳定性](./chapter8.md#81-kubernetes-如何用-statefulsets-建模稳定性) - 8.2 [在 StatefulSets 中使用 init 容器引导 Pod](./chapter8.md#82-在-statefulsets-中使用-init-容器引导-pod) - 8.3 [使用卷声明模板请求存储](./chapter8.md#83-使用卷声明模板请求存储) - 8.4 [使用 Jobs 和 CronJobs 运行维护任务](./chapter8.md#84-使用-jobs-和-cronjobs-运行维护任务) - 8.5 [为有状态应用程序选择平台](./chapter8.md#85-为有状态应用程序选择平台) - 8.6 [实验室](./chapter8.md#86-实验室) - 第九章 [通过 rollouts 和 rollbacks 管理应用发布](./chapter9.md) - 9.1 [Kubernetes 如何管理 rollouts](./chapter9.md#91-kubernetes-如何管理-rollouts) - 9.2 [使用 rollouts 和 rollbacks 更新 Deployments](./chapter9.md#92-使用-rollouts-和-rollbacks-更新-deployments) - 9.3 [为 Deployments 配置滚动更新](./chapter9.md#93-为-deployments-配置滚动更新) - 9.4 [DaemonSets 和 StatefulSets 中的滚动更新](./chapter9.md#94-daemonSets-和-statefulsets-中的滚动更新) - 9.5 [理解发布策略](./chapter9.md#95-理解发布策略) - 9.6 [实验室](./chapter9.md#96-实验室) - 第十章 [通过 Helm 打包并管理应用](./chapter11.md) - 10.1 [Helm 给 Kubernetes 带来了什么](./chapter11.md#101-helm-给-Kubernetes-带来了什么) - 10.2 [使用 Helm 打包你自己的应用](./chapter11.md#102-使用-helm-打包你自己的应用) - 10.3 [charts 中的模块依赖](./chapter11.md#103-charts-中的模块依赖) - 10.4 [升级及回滚 Helm releases](./chapter11.md#104-升级及回滚-helm-releases) - 10.5 [理解 Helm 定位](./chapter11.md#105-理解-helm-定位) - 10.6 [实验室](./chapter11.md#106-实验室) - 第十一章 [App 开发——开发人员工作流程及 CI/CD](./chapter11.md) - 11.1 [Docker 开发人员工作流程](./chapter11.md#111-docker-开发人员工作流程) - 11.2 [Kubernetes 开发人员工作流程](./chapter11.md#112-kubernetes-开发人员工作流程) - 11.3 [使用上下文和名称空间隔离工作负载](./chapter11.md#113-使用上下文和名称空间隔离工作负载) - 11.4 [在不考虑 Docker 的 Kubernetes 中持续交付](./chapter11.md#114-在不考虑-docker-的-kubernetes-中持续交付) - 11.5 [评估 Kubernetes 上的开发人员工作流程](./chapter11.md#115-评估-kubernetes-上的开发人员工作流程) - 11.6 [实验室](./chapter11.md#116-实验室) - **第三部分** 为生产而准备 - 第十二章 [增强自我修复应用程序](./chapter12.md) - 12.1 [使用 readiness 探测将流量路由到健康 Pods](./chapter12.md#121-使用-readiness-探测将流量路由到健康-pods) - 12.2 [通过 liveness 探测重启不健康的 Pods](./chapter12.md#122-通过-liveness-探测重启不健康的-pods) - 12.3 [使用 Helm 安全地部署升级](./chapter12.md#123-使用-helm-安全地部署升级) - 12.4 [通过 resource limits 保护应用和节点](./chapter12.md#124-通过-resource-limits-保护应用和节点) - 12.5 [了解自我修复应用的局限性](./chapter12.md#125-了解自我修复应用的局限性) - 12.6 [实验室](./chapter12.md#126-实验室) - 第十三章 [使用 Fluentd 和 Elasticsearch 集中化日志](./chapter13.md) - 13.1 [Kubernetes 如何存储日志条目](./chapter13.md#131-kubernetes-如何存储日志条目) - 13.2 [使用 Fluentd 收集节点日志](./chapter13.md#132-使用-fluentd-收集节点日志) - 13.3 [向 Elasticsearch 发送日志](./chapter13.md#133-向-elasticsearch-发送日志) - 13.4 [解析和过滤日志条目](./chapter13.md#134-解析和过滤日志条目) - 13.5 [了解 Kubernetes 中的日志记录选项](./chapter13.md#135-了解-kubernetes-中的日志记录选项) - 13.6 [实验室](./chapter13.md#136-实验室) - 第十四章 [使用 Prometheus 监控应用程序和 Kubernetes](./chapter14.md) - 14.1 [Prometheus 如何监控 Kubernetes 的工作负载](./chapter14.md#141-prometheus-如何监控-kubernetes-的工作负载) - 14.2 [监视使用 Prometheus 客户端库构建的应用程序](./chapter14.md#142-监视使用-prometheus-客户端库构建的应用程序) - 14.3 [通过 metrics exporters 来监控第三方应用](./chapter14.md#143-通过-metrics-exporters-来监控第三方应用) - 14.4 [监控容器以及 kubernetes 对象](./chapter14.md#144-监控容器以及-kubernetes-对象) - 14.5 [了解您在监控方面所做的投资](./chapter14.md#145-了解您在监控方面所做的投资) - 14.6 [实验室](./chapter14.md#146-实验室) - 第十五章 [使用 Ingress 管理流入流量](./chapter15.md) - 15.1 [Kubernetes 如何使用 Ingress 路由流量](./chapter15.md#151-kubernetes-如何使用-ingress-路由流量) - 15.2 [使用 Ingress rules 路由 Http 流量](./chapter15.md#152-使用-ingress-rules-路由-http-流量) - 15.3 [比较 Ingress 控制器](./chapter15.md#153-比较-ingress-控制器) - 15.4 [使用 Ingress 通过 HTTPS 保护您的应用程序](./chapter15.md#154-使用-ingress-通过-https-保护您的应用程序) - 15.5 [理解 Ingress 及 Ingress 控制器](./chapter15.md#155-理解-ingress-及-ingress-控制器) - 15.6 [实验室](./chapter15.md#156-实验室) - 第十六章 [使用策略上下文和准入控制保护应用程序](./chapter16.md) - 16.1 [使用网络策略(network policies)保护通信](./chapter16.md#161-使用网络策略(network-policies)保护通信) - 16.2 [使用安全上下文(security contets)限制容器功能](./chapter16.md#162-使用安全上下文(security-contets)限制容器功能) - 16.3 [使用 webhook 阻止和修改工作负载](./chapter16.md#163-使用-webhook-阻止和修改工作负载) - 16.4 [使用 Open Policy Agent 控制准入](./chapter16.md#164-使用-open-policy-agent-控制准入) - 16.5 [深入了解 Kubernetes 中的安全性](./chapter16.md#165-深入了解-kubernetes-中的安全性) - 16.6 [实验室](./chapter16.md#166-实验室)