序言
Roadmap
本书正在起草初期,内容将包含大量 Kubernetes 实践干货,大量规划内容还正在路上,可以点击的表示是已经可以在左侧导航栏中找到的并预览的文章,但不代表已经完善,还会不断的补充和优化。
部署指南
自建的 k8s 集群有很多种方式部署方式,k8s 知识库将列举手工二进制部署与各种辅助工具部署的方法,可以根据自己使用场景选择对应合适的部署方法。除此之外,还会包含大量的常用应用的部署方法,比如各种数据库和存储基础设施部署,不同的业务场景和解决方案都可能依赖这些应用,每种应用部署方法都可能被书内其它多处地方引用。
- 部署方案选型
- 单机部署
- 手工部署
- 使用 Kubeadm 部署集群
- 使用 Minikube 部署测试集群
- 使用 Bootkube 部署集群
- 使用 Ansible 部署集群
- 部署附加组件
- 常见应用部署
- ElasticSearch 与 Kibana
- ETCD
- Zookeeper
- Consul
- Kafka
- Redis
- TiKV
- MySQL
- TiDB
- PostgreSQL
- MongoDB
- Cassandra
- InfluxDB
- OpenTSDB
集群方案
k8s 拥有惊人的扩展能力,针对不同环境和场景可以使用不同的方案,涵盖网络、存储、运行时、Ingress、Metrics 等。k8s 知识库会帮助你彻底理清这些机制,并深入剖析各种方案的原理、用法与使用场景。
- 网络方案
- 彻底理解集群网络
- Network Policy
- 开源网络方案
- Flannel
- Flannel 网络原理
- 部署 Flannel
- Macvlan
- Calico
- Cilium
- Kube-router
- Kube-OVN
- OpenVSwitch
- 运行时方案
- Docker
- Docker 介绍
- Docker 安装
- Containerd
- containerd 介绍
- 安装 containerd
- CRI-O
- CRI-O 介绍
- CRI-O 安装
- Docker
- 存储方案
- Rook
- OpenEBS
- Ingress 方案
- Nginx Ingress
- Traefik Ingress
- Contour
- Ambassador
- Kong
- Gloo
- HAProxy
- Istio
- Skipper
- LoadBalancer 方案
- MetalLB
- Porter
- Metrics 方案
最佳实践
k8s 有先进的设计理念,也包含了大量概念,并提供了非常丰富的能力,用法琳琅满目,但入门比较困难,k8s 知识库将提供使用 k8s 的各种场景里的最佳实践,帮助大家少走弯路,比如如何管理和运维集群、如何进行动态伸缩、如何保证部署的服务高可用、如何在更新服务或扩缩容节点保证业务零感知、如何部署有状态服务、如何针对大规模集群进行优化、如何对资源进行隔离和共享以及针对各种需求和问题的解决方案等。
- 服务高可用
- 本地 DNS 缓存
- 泛域名动态转发 Service
- 集群权限控制
- 有状态服务部署
- 实用工具和技巧
- 集群证书管理
- 集群配置管理
- Helm
- 安装 Helm
- Helm V2 迁移到 V3
- 使用 Helm 部署与管理应用
- 开发 Helm Charts
- Kustomize
- Kustomize 基础入门
- Helm
- 大规模集群优化
- 弹性伸缩
- 使用 HPA 对 Pod 水平伸缩
- 使用 VPA 对 Pod 垂直伸缩
- 使用 Cluster Autoscaler 对节点水平伸缩
- 资源分配与限制
- Master 高可用
- 资源隔离与共享
- 利用 kata-container 隔离容器资源
- 利用 gVisor 隔离容器资源
- 利用 lvm 和 xfs 实现容器磁盘隔离
- 利用 lxcfs 隔离 proc 提升容器资源可见性
- 共享存储
- 共享内存
- Pod 原地重启
- 集群升级
- 固定 IP
- 备份与恢复
- ETCD 性能优化
- 内核参数优化
- CPU 亲和性
- 使用大页内存
- 离在线混合部署
- 集群监控
- Prometheus
- Grafana
- 日志搜集
- EFK/ELK
- 集群安全
- 使用 PodSecurityPolicy 配置全局 Pod 安全策略
- 集群审计
- 集群可视化管理
- Kubernetes Dashboard
- KubSphere
- Weave Scope
- Rancher
- Kui
- Kubebox
- 集群镜像管理
- Harbor
- Dragonfly
- Kaniko
- kpack
排错指南
正是 k8s 功能如此丰富强大,迭代速度如此之快,其复杂性和不确定性也非常之大。知识库会总结出各种问题的排查思路与可能原因,还有对应解决方案的最佳实践,也分享一些踩坑案例与排错技巧,与排错技巧,让大家少走弯路。
- 问题排查
- Pod 排错
- 网络排错
- 集群排错
- Node 全部消失
- Daemonset 没有被调度
- Apiserver 响应慢
- ETCD 频繁选主
- Node 异常
- 经典报错
- 其它排错
- 处理实践
- 踩坑总结
- cgroup 泄露
- tcp_tw_recycle 引发丢包
- 使用 oom-guard 在用户态处理 cgroup OOM
- conntrack 冲突导致丢包
- 案例分享
- 排错技巧
- 分析 ExitCode 定位 Pod 异常退出原因
- 容器内抓包定位网络问题
- 使用 Systemtap 定位疑难杂症
- 使用 kubectl-debug 帮助定位问题
- 分析 Docker 磁盘占用
领域应用
k8s 在各个领域都发挥了巨大作用,我们会将 k8s 在这些领域的应用汇总,给出各种场景化应用的指南,比如近年来如火如荼的 DevOps 领域,其中 CI/CD 的应用更是大家迫切期望想要的。还有 AI,大数据,微服务架构,Service Mesh,Serverless 等。
- 微服务架构
- 服务发现
- 服务治理
- 分布式追踪
- Jaeger
- Service Mesh
- Istio
- Maesh
- Kuma
- Serverless
- Knative
- Kubeless
- Fission
- DevOps
- Jenkins X
- Tekton
- Argo
- GoCD
- Argo
- GitLab CI
- Drone
- AI
- nvidia-docker
- Kubeflow
- 大数据
- Spark on K8S
- Hadoop on K8S
开发指南
k8s 开放了很多扩展能力,基于这些扩展机制可以开发出各种功能的应用,比如集群管理应用、部署有状态服务的应用(Operator)等,知识库将介绍如何开发这些应用。
- 开发环境搭建
- Go 语言编译原理与优化
- Operator
- Operator 概述
- operator-sdk
- kubebuilder
- client-go
- 社区贡献
在线阅读
本书将支持中英文两个语言版本,通常文章会先用中文起草并更新,等待其内容较为成熟完善,更新不再频繁的时候才会翻译成英文,点击左上角切换语言。
- 中文: https://k8s.imroc.io
- English: https://k8s.imroc.io/v/en
项目源码
项目源码存放于 Github 上: https://github.com/imroc/kubernetes-practice-guide
贡献
欢迎参与贡献和完善内容,贡献方法参考 CONTRIBUTING