k8s教程(基础篇)-总纲
学习的资料:《Kubernetes权威指南:从Docker到Kubernetes实践全接触(第5版)》Kubernetes(简称k8s)的学习是今年的计划之一,本文来总结一下Kubenetes要学习哪些内容?心里有个底,学习起来才有目标,总纲如下:········第 1 章 Kubernetes入门·······|____1.1 了解 Kubernetes|____1.2 为什么要用 Kubern
Kubernetes
(简称k8s
)的学习是今年的计划之一,本文来总结一下Kubenetes
要学习哪些内容?心里有个底,学习起来才有目标,总纲如下:
········第 1 章 Kubernetes入门·······
|____1.1 了解 Kubernetes
|____1.2 为什么要用 Kubernetes
|____1.3 从一个简单的例子开始
|______1.3.1 环境准备
|______1.3.2 启动 MySQL 服务
|______1.3.3 启动 Tomcat 应用
|______1.3.4 通过浏览器访问网页
|____1.4 Kubernetes 的基本概念和术语
|______1.4.1 资源对象概述
|______1.4.2 集群类
|______1.4.3 应用类
|______1.4.4 存储类
|______1.4.5 安全类
········第 2 章 Kubernetes安装配置指南········
|____2.1 系统要求
|____2.2 使用 kubeadm 工具快速安装 Kubernetes 集群
|______2.2.1 安装 kubeadm
|______2.2.2 修改 kubeadm 的默认配置
|______2.2.3 下载 Kubernetes 的相关镜像
|______2.2.4 运行 kubeadm init 命令安装 Master 节点
|______2.2.5 将新的 Node 加入集群
|______2.2.6 安装 CNI 网络插件
|______2.2.7 验证 Kubernetes集群是否工作正常
|____2.3 以二进制文件方式安装 Kubernetes安全高可用集群
|______2.3.1 Master 高可用部署架构
|______2.3.2 创建 CA 根证书
|______2.3.3 部署安全的 etcd 高可用集群
|______2.3.4 部署安全的 Kubernetes Master 高可用集群
|______2.3.5 部署 Node 的服务
|______2.3.6 kube-apiserver 基于 token 的认证机制
|____2.4 使用私有镜像库的相关配置
|____2.5 Kubernetes 的版本升级
|______2.5.1 二进制文件升级
|______2.5.2 使用 kubeadm 进行集群升级
|____2.6CRI(容器运行时接口)详解
|______2.6.1 CRI 概述
|______2.6.2 CRI 的主要组件
|______2.6.3 Pod 和容器的生命周期管理
|______2.6.4 面向容器级别的设计思路
|______2.6.5 尝试使用新的 Docker–CRI 来创建容器
|______2.6.6 CRI 的进展
|____2.7 kubectl 命令行工具用法详解
|______2.7.1 kubectl用法概述
|______2.7.2 kubectl子命令详解
|______2.7.3 kubectl 可操作的资源对象详解
|______2.7.4 kubectl 的公共参数说明
|______2.7.5 kubectl 格式化输出
|______2.7.6 kubectl常用操作示例
········第 3 章深入掌握 Pod········
|____3.1 Pod 定义详解
|____3.2 Pod 的基本用法
|____3.3 静态 Pod
|____3.4 Pod 容器共享 Volume
|____3.5 Pod 的配置管理
|______3.5.1 ConfigMap 概述
|______3.5.2 创建 ConfigMap 资源对象
|______3.5.3 在 Pod 中使用 ConfigMap
|______3.5.4 使用 ConfigMap 的限制条件
|____3.6 在容器内获取 Pod 信息(Downward API)
|______3.6.1 环境变量方式
|______3.6.2 Volume 挂载方式
|______3.6.3 Downward API 支持设置的 Pod 和 Container 信息
|____3.7 Pod 生命周期和重启策略
|____3.8 Pod 健康检查和服务可用性检查
|____3.9 玩转 Pod 调度
|______3.9.1 Deployment或 RC全自动调度
|______3.9.2 NodeSelector定向调度
|______3.9.3 NodeAffinity Node 亲和性调度
|______3.9.4 PodAffinity Pod 亲和与互斥调度策略
|______3.9.5 Taintsi 和 Tolerations(污点和容忍)
|______3.9.6 Pod Priority Preemption Pod 优先级调度
|______3.9.7 DaemonSet 在每个 Node 上都调度一个 Pod
|______3.9.8 Job 批处理调度
|______3.9.9 Cronjob定时任务
|______3.9.10 自定义调度器
|______3.9.11 Pod容灾调度
|____3.10 Init Container(初始化容器)
|____3.11 Pod 的升级和回滚
|______3.11.1 Deployment 的升级
|______3.11.2 Deployment 的回滚
|______3.11.3 暂停和恢复 Deployment 的部署操作
|______3.11.4 其他管理对象的更新策略
|____3.12 Pod 的扩缩容
|______3.12.1 手动扩缩容机制
|______3.12.2 自动扩缩容机制
|____3.13 使用 StatefulSet 搭建 MongoDB 集群
|______3.13.1 前提条件
|______3.13.2 部署 StatefulSet
|______3.13.3 查看 MongoDB 集群的状态
|______3.13.4 StatefulSet 的常见应用场景
········第 4 章深入掌握 Service········
|____4.1 Service 定义详解
|____4.2 Service 的概念和原理
|______4.2.1 Service 的概念
|______4.2.2 Service 的负载均衡机制
|______4.2.3 Service 的多端口设置
|______4.2.4 将外部服务定义为 Service
|______4.2.5 将 Service 暴露到集群外部
|______4.2.6 Service 支持的网络协议
|______4.27 Kubernetes 的服务发现机制
|______4.2.8 Headless Service 的概念和应用
|______4.2.9 端点分片与服务拓扑
|____4.3 DNS 服务搭建和配首指南
|______4.3.1 修改每个 Node 上 kubelet 的 DNS 启动参数
|______4.3.2 部署 CoreDNS 服务
|______4.3.3 服务名的 DNS 解析
|______4.3.4 CoreDNS 的配置说明
|____4.4 Node 本地 DNS 缓存
|____4.5 Pod 的 DNS 域名相关特性
|______4.5.1 Pod 的 DNS 域名
|______4.5.2 为 Pod 自定义 hostname 和 subdomain
|______4.5.3 Pod 的 DNS 策略
|______4.5.4 Pod 中的自定义 DNS 配置
|____4.6 Ingress7 层路由机制
|______4.6.1 一个完整的例子(Ingress Controller±ingress 策略+客户端访问)
|______4.6.2 Ingress资源对象详解
|______4.6.3 Ingress 策略配置详解
|______4.6.4 Ingress 的 TLS 安全设置
········第 5 章核心组件的运行机制········
|____5.1 Kubernetes API Server 原理解析
|______5.1.1 Kubernetes API Serveri 概述
|______5.1.2 API Server 架构解析
|______5.1.3 独特的 Kubernetes Proxy API 接口
|______5.1.4 集群功能模块之间的通信
|______5.1.5 API Server 网络隔离的设计
|____5.2 Controller Manager 原理解析
|______5.2.1 副本调度控制器
|______5.2.2 Node Controller
|______5.2.3 ResourceQuota Controller
|______5.2.4 Namespace Controller
|______5.2.5 Service Controller5Endpoints Controller
|____5.3 Scheduler原理解析
|______5.3.1 Scheduler 的调度流程
|______5.3.2 Scheduler Framework
|______5.3.3 多调度器特性
|____5.4 kubelet 运行机制解析
|______5.4.1 节点管理
|______5.4.2Pod 管理
|______5.4.3 容器健康检查
|______5.4.4 cAdvisor资源监控
|______5.4.5 容器运行时
|____5.5kube-proxy 运行机制解析
|______5.5.1 第一代 Proxy
|______5.5.2 第二代 Proxy
|______5.5.3 第三代 Proxy
········第 6 章深入分析集群安全机制········
|____6.1 API Server 认证管理
|______6.1.1 HTTPS 证书认证
|______6.1.2 HTTP Bearer Token 认证
|______6.1.3 OpenID Connect Token第三方认证
|______6.1.4 Authenticating Proxy(认证代理)
|____6.2 API Server 授权管理
|______6.2.1 RBAC 授权模式详解
|______6.2.2 Webhook 授权模式详解
|______6.2.3 RBAC 授权模式详解
|______6.2.4 Node 授权模式详解
|____6.3 Admission Control
|____6.4 Service Account
|____6.5 Secret 私密凭据
|____6.6 Pod 安全策略
|______6.6.1 PodSecurityPolicy 的工作机制
|______6.6.2 PodSecurityPolicy 配置详解
|______6.6.3 PodSecurityPolicy 策略示例
|______6.6.4 PodSecurityPolicy 的 RBAC 授权
|______6.6.5 Pod 安全设置(Security Context)详解
········第 7 章网络原理········
|____7.1 Kubernetes 网络模型
|____7.2 Docker 网络基础
|______7.2.1 网络命名空间
|______7.2.2 Veth 设备对
|______7.2.3 网桥
|______7.2.4 iptablesNetfilter
|______7.2.5 路由
|____7.3 Docker 的网络实现
|______7.3.1 查看 Docker 启动后的系统情况
|______7.3.2 查看容器启动后的网络配置(容器无端口映射)
|______7.3.3 查看容器启动后的网络配置(容器有端口映射)
|______7.3.4 Docker 的网络局限性
|____7.4 Kubernetes 的网络实现
|______7.4.1 容器到容器的通信
|______7.4.2 Pod 之间的通信
|____7.5 Pod 和 Service 网络实战
|______7.5.1部署一个RC/Pod
|______7.5.2 发布一个服务
|____7.6 CNI 网络模型
|______7.6.1 CNM 网络模型简介
|______7.6.2 CNI 网络模型详解
|______7.6.3 在 Kubernetest 中使用网络插件
|____7.7 开源容器网络方案
|______7.7.1 Flannel 插件的原理和部署示例
|______7.7.2 Open vSwitch 插件的原理和部署示例
|______7.7.3 直接路由的原理和部署示例
|______7.7.4 Calico 插件的原理和部署示例
|____7.8 Kubernetes 的网络策略
|______7.8.1 网络策略设置说明
|______7.8.2 Selector功能说明
|______7.8.3 为命名空间配置默认的网络策略
|______7.8.4 网络策略应用示例
|______7.8.5 NetworkPolicy 的发展
|____7.9 Kubernetes对 IPv4 和 IPv6 双栈的支持
|______7.9.1 为 Kubernetes 集群启用 IPv4 和 IPv6 双栈
|______7.9.2 Pod 双栈 IP 地址验证
|______7.9.3 Service 双栈 IP 地址验证
········第 8 章存储原理和应用········
|____8.1 Kubernetes 存储机制概述
|______8.1.1 将资源对象映射为存储卷
|______8.1.2 Node 本地存储卷
|____8.2 持久卷(Persistent Volume) 详解
|______8.2.1 PV 和 PVC 的工作原理
|______8.2.2 PV 详解
|______8.2.3 PVC 详解
|______8.2.4 Pod 使用 PVC
|______8.2.5 StorageClass 详解
|____8.3 动态存储管理实战GlusterFS
|______8.3.1 准备工作
|______8.3.2 创建 GlusterFS 管理服务容器集群
|______8.3.3 创建 Heketi 服务
|______8.3.4 通过 Ieketi 管理 GlusterFS集群
|______8.3.5 定义 StorageClass
|______8.3.6 定义 PVC
|______8.3.7 Pod 使用 PVC 的存储资源
|____8.4 CSI 存储机制详解
|______8.4.1 CSI 的设计背景
|______8.4.2 CSI 的核心组件和部署架构
|______8.4.3 CSI 存储插件应用实战
|______8.4.4 CSI 存储快照管理
|______8.4.5 CSI 的发展
········第 9 章 Kubernetes 开发指南········
|___9.1 REST 简述
|___9.2 Kubernetes API详解
|______9.2.1 Kubernetes API 概述
|______9.2.2 Kubernetes API 版本的演进策略
|______9.2.3 API Groups (API)
|______9.2.4 API REST 的方法说明
|______9.2.5 API Serverl 响应说明
|___9.3 使用 Fabric8 访问 Kubernetes API
|______9.3.1 具体应用示例
|______9.3.2 其他客户端库
|___9.4 Kubernetes API 的扩展
|______9.4.1 使用 CRD 扩展 API 资源
|______9.4.2 使用 API 聚合机制扩展 API 资源
········第 10 章 Kubernetes运维管理········
|___10.1Node 管理
|______10.1.1Node 的隔离与恢复
|______10.1.2Node 的扩容
|___10.2 更新资源对象的 Label
|___10.3 Namespace集群环境共享与隔离
|______10.3.1 创建 Namespace
|______10.3.2 定义 Context
|______10.3.3 设置工作组在特定 Context 中工作
|___10.4 Kubernetes资源管理
|______10.4.1 计算资源管理
|______10.4.2 资源配置范围管理(LimitRange)
|______10.4.3 资源服务质量管理(Resource QoS)
|______10.4.4 资源配额管理(Resource Quotas)
|______10.4.5 ResourceQuota 和 LimitRange3 实践
|______10.4.6 Pod 中多个容器共享进程命名空间
|______10.4.7 PID 资源管理
|______10.4.8 节点的 CPU 管理策略
|______10.4.9 拓扑管理器
|___10.5 资源紧缺时的 Pod 驱逐机制
|______10.5.1 驱逐时机
|______10.5.2 驱逐阈值
|______10.5.3 节点状态
|______10.5.4 节点状态的振荡
|______10.5.5 回收 Node 级别的资源
|______10.5.6 驱逐用户的 Pod
|______10.5.7 资源最少回收量
|______10.5.8 节点资源紧缺情况下的系统行为
|______10.5.9 可调度的资源和驱逐策略实践
|______10.5.10 现阶段的问题
|___10.6 Pod Disruption Budget(主动驱逐保护)
|___10.7 Kubernetes集群监控
|______10.7.1 使用 Metrics Server监控 Node 和 Pod 的 CPU 和内存使用数据
|______10.7.2 Prometheus+Grafana集群性能监控平台搭建
|___10.8 Kubernetes:集群日志管理
|______10.8.1 容器应用和系统组件输出日志的各种场景
|______10.8.2 Fluentd. +Elasticsearch+Kibana 日志系统部署
|______10.8.3 部署日志采集 sidecar 工具采集容器日志
|___10.9 Kubernetes 的审计机制
|___10.10 使用 Web UI (Dashboard)管理集群
|___10.11 Helm: Kubernetes)应用包管理工具
|______10.11.1 Helm 的整体架构
|______10.11.2 Helm 版本说明
|______10.11.3 Helm 的安装
|______10.11.4 Helm 的使用
|______10.11.5 Chart 说明
|______10.11.6 搭建私有 Chart 仓库
········第 11 章 Trouble Shooting 指南········
|___11.1 查看系统 Event
|___11.2 查看容器日志
|___11.3 查看 Kubernetes服务日志
|___11.4 常见问题
|______11.4.1 由于无法下载 pause 镜像导致 Pod 一直处于 Pending 状态
|______11.4.2 Pod 创建成功,但 RESTARTS 数量持续增加
|______11.4.3 通过服务名无法访问服务
|___11.5 寻求帮助
········第 12 章 Kubernetes 开发中的新功能········
|___12.1 对 Windows 容器的支持
|______12.1.1 在 Windows Server上安装 Docker
|______12.1.2 在 Windows Server上部署 Kubernetes Node 组件
|______12.1.3 在 Windows Server上部署容器应用和服务
|______12.1.4 Kubernetes支持的 Windows 容器特性、限制和发展趋势
|___12.2 对 GPU 的支持
|______12.2.1 环境准备
|______12.2.2 在容器中使用 GPU 资源
|______12.2.3 发展趋势
|___12.3 Pod 的垂直扩缩容
|______12.3.1 VPA 详解
|______12.3.2 安装 Vertical Pod Autoscaler
|______12.3.3 为 Pod 设置垂直扩缩容
|______12.3.4 注意事项
|___12.4 Kubernetes 生态系统与演进路线
|______12.4.1 Kubernetes CNCF
|______12.4.2 Kubernetes 的演进路线
|______12.4.3 Kubernetes 的开发模式
更多推荐
所有评论(0)