序言
集群搭建
1.
使用 kubespray 搭建集群
❱
1.1.
kubespray 离线安装配置
2.
使用 k3s 搭建轻量 k8s 集群
❱
2.1.
k3s 安装实践案例
2.2.
k3s 国内离线安装方法
3.
附录
❱
3.1.
使用 Terraform 创建腾讯云 EKS 弹性集群
3.2.
使用 Terraform 批量创建腾讯云服务器
集群网络
4.
常见问题
❱
4.1.
为什么要开 bridge-nf-call-iptables?
4.2.
ipvs 连接复用引发的系列问题
监控告警
5.
Grafana
❱
5.1.
Grafana 高可用部署
实用技巧
6.
高效使用 kubectl
❱
6.1.
使用 kubectl-aliases 缩短命令
6.2.
使用 kubectx 和 kubens 快速切换
6.3.
使用 kubecm 合并 kubeconfig
7.
证书签发
❱
7.1.
使用 cfssl 生成证书
7.2.
使用 cert-manager 签发免费证书
7.3.
为 dnspod 的域名签发免费证书
8.
用户与权限
❱
8.1.
使用 CSR API 创建用户
9.
部署与配置
❱
9.1.
为 Pod 设置内核参数
10.
镜像相关
❱
10.1.
使用 Podman 构建镜像
10.2.
使用 skopeo 批量同步 helm chart 依赖镜像
最佳实践
11.
优雅终止
❱
11.1.
Pod 销毁流程
11.2.
业务代码处理 SIGTERM 信号
11.3.
为什么收不到 SIGTERM 信号?
11.4.
在 SHELL 中传递信号
11.5.
合理使用 preStop
11.6.
长连接场景
11.7.
LB 直通 Pod 场景
12.
健康检查配置
13.
合理设置 Request 与 Limit
14.
Pod 性能优化
❱
14.1.
网络性能调优
14.2.
CPU 绑核
15.
高可用部署
❱
15.1.
Pod 打散调度
15.2.
工作负载平滑升级
16.
DNS
❱
16.1.
自定义域名解析
16.2.
CoreDNS 性能优化
17.
弹性伸缩
❱
17.1.
灵活调节 HPA 扩缩容速率
17.2.
HPA 使用自定义指标进行伸缩
18.
应用容器化
❱
18.1.
在容器内使用 systemd
18.2.
Java 应用容器化
❱
18.2.1.
使用 Maven 构建 Java 容器镜像
18.3.
Go 应用容器化
18.4.
在容器中使用 crontab
18.5.
解决容器内时区不一致问题
19.
集群运维
❱
19.1.
安全维护或下线节点
19.2.
安全变更容器数据盘路径
19.3.
大规模集群优化
19.4.
ETCD 优化
19.5.
使用 Ansible 批量操作节点
20.
日志采集
21.
长连接服务
故障排查
22.
排障技能
❱
22.1.
Linux 常用排查命令
22.2.
使用 nsenter 进入 netns
22.3.
使用 ksniff 远程抓包
22.4.
使用 Systemtap 定位疑难杂症
22.5.
使用 tcpdump 抓包与分析
22.6.
使用 wireshark 分析数据包
23.
Pod 排障
❱
23.1.
Pod 状态异常
❱
23.1.1.
Terminating
❱
23.1.1.1.
device or resource busy
23.1.2.
Pending
23.1.3.
ContainerCreating 或 Waiting
23.1.4.
CrashLoopBackOff
23.1.5.
ImagePullBackOff
23.2.
健康检查失败
24.
节点排障
❱
24.1.
节点 Crash 与 Vmcore 分析
24.2.
节点高负载
❱
24.2.1.
IO 高负载
24.3.
内存碎片化
24.4.
磁盘爆满
24.5.
PID 爆满
24.6.
ARP 表爆满
24.7.
inotify 资源耗尽
24.8.
soft lockup (内核软死锁)
24.9.
no space left on device
24.10.
IPVS no destination available
24.11.
cAdvisor 无数据
25.
网络排障
❱
25.1.
网络超时
25.2.
网络丢包
25.3.
网络不通
25.4.
网速差
25.5.
DNS 解析异常
25.6.
CLOSE_WAIT 堆积
25.7.
排查流量激增
26.
存储排障
❱
26.1.
Unable to mount volumes
26.2.
MountVolume.SetUp failed for volume
27.
集群排障
❱
27.1.
Namespace 一直 Terminating
28.
SDK 排障
29.
排障案例
❱
29.1.
运行时故障
❱
29.1.1.
磁盘 IO 过高导致 Pod 创建超时
29.1.2.
高版本 containerd 下载镜像失败
29.1.3.
挂载根目录导致 device or resource busy
29.1.4.
系统时间被修改导致 sandbox 冲突
29.2.
网络故障
❱
29.2.1.
DNS 5 秒延时
29.2.2.
ARP 爆满导致健康检查失败
29.2.3.
tcp_tw_recycle 导致跨 VPC 访问 NodePort 超时
29.2.4.
dns id 冲突导致解析异常
29.3.
高负载
❱
29.3.1.
容器磁盘满导致 CPU 飙高
29.4.
集群故障
❱
29.4.1.
误删 rancher 的 namespace 导致 node 被清空
29.4.2.
调度器 cache 快照遗漏部分信息导致 pod pending
29.4.3.
kubectl 执行 exec 或 logs 失败
29.5.
节点排障
❱
29.5.1.
cgroup 泄露
29.6.
其它排障
❱
29.6.1.
多容器场景下修改 hosts 失效
29.6.2.
Job 无法被删除
29.6.3.
.Net Core 配置文件无法热加载
领域应用
30.
服务网格
腾讯云容器服务
31.
Serverless 集群与超级节点
❱
31.1.
Serverless 弹性集群注意事项
31.2.
为什么超级节点这么牛!
31.3.
超级节点案例分享: 轻松应对流量洪峰
31.4.
超级节点案例分享: 便捷管理离线任务与大规模压测
31.5.
大镜像解决方案
32.
网络指南
❱
32.1.
启用 CLB 直通 Pod
32.2.
Pod 绑 EIP
32.3.
IPVS 模式安装 localdns
32.4.
使用 TCM 对外暴露 gRPC 服务
33.
存储指南
❱
33.1.
扩容 CBS 类型的 PVC
33.2.
定义 ReadOnlyMany 存储的方法
33.3.
使用 V3 协议挂载 CFS
34.
监控告警
❱
34.1.
Prometheus 采集配置最佳实践
34.2.
超级节点 Pod 监控仪表盘
35.
镜像与仓库
❱
35.1.
使用软件源加速软件包安装
35.2.
使用海外容器镜像
36.
故障排查
❱
36.1.
排查公网服务不通
37.
常见应用安装与部署
❱
37.1.
自建 Harbor 镜像仓库
37.2.
自建 Gitlab 代码仓库
37.3.
安装 KubeSphere
38.
常见问题
❱
38.1.
修改 rp_filter 导致网路异常
38.2.
CLB 回环问题
38.3.
controller-manager 和 scheduler 状态显示 Unhealthy
39.
解决方案
❱
39.1.
腾讯云跨账号流量统一接入与治理方案
39.2.
原地升级
40.
附录
❱
40.1.
实用 kubectl 脚本
40.2.
EKS 注解
40.3.
Ingress 错误码
附录
41.
kubectl 速查手册
42.
实用 YAML
Light (default)
Rust
Coal
Navy
Ayu
Kubernetes 实践指南
使用 k3s 搭建轻量 k8s 集群
可参考 k3s 官方文档
快速入门指南
使用脚本一键安装,如果需要一些自定义,也可以参考
配置选项
自定义一些参数进行安装。
本节主要提供一些官方文档以外的一些安装实践参考。