K8S入坑指南
Docker是容器,但容器不是Docker。Docker是containerd的上层应用,Docker的流行带动了容器技术的应用。单机服务编排,docker + docker-compose的组合足以支撑。对于集群管理,还是K8S更合适。K8S可基于docker引擎,也可直接基于containerd的容器引擎。K3S是K8S的精简版,基于containerd。
折腾笔记
- K8S的架构很清晰:
ETCD/SQLite(数据库)+ApiServer(接口)+Controller(控制器)+Kubelet(守护进程)+KubeProxy(网络服务) - 可以用kubeadm快速搭建k8s集群,需要将基础镜像替换镜像仓库,参考AKS on Azure China Best Practices
- kubeadm搭建的集群,控制节点的主机有taint
- 内网IP和Service的核心是基于KubeProxy控制的iptables规则
- kubeadm初始化后,默认没有网络插件。安装网络插件(如Flannel)后DNS才会运行
- Pod的流量通过Flannel转发,flannel会进行封包解包,从而实现跨主机,错误排查参考记一次flannel vxlan的debug过程
- 公网组建K8S集群,可以但没必要(速度慢,不安全)。公网组建集群的核心是要让Flannel封包后发送的地址指向目的主机的公网IP。
如果主机的公网IP跟内网IP不一致,参考Cloud floating IP persistent,将公网IP绑定到相应网卡上 - 没有负载均衡器又想暴露主机端口的话,可以使用裸机负载均衡器MetalLB, bare metal load-balancer for Kubernetes
- K8S官方Dashboard功能较少,且需要以HTTPS访问
- Rancher是个功能完善的面板,但安装相对复杂
- SSL证书的内容可以存为Secret并挂载到Pod内
- 自动签发证书可以用Cert-Manager,目前对阿里DNS支持不太好
可以用acme.sh签发证书,并通过钩子保存成Secret - 要求不高的话k3s比kubeadm更好用
- 单主机“集群”的效率比直接用docker低,耗费的资源更多
参考文章
- IP地址和子网划分学习笔记之《超网合并详解》
- Debian10 K8s 高可用集群搭建
- AKS on Azure China Best Practices
- How to Set Up an Nginx Ingress with Cert-Manager on DigitalOcean Kubernetes
- rook/rook ingress-nginx https backend
- iptables详解
- Cloud floating IP persistent
- 记一次flannel vxlan的debug过程
- MetalLB, bare metal load-balancer for Kubernetes
- Cert-Manager
- Rancher
- traefik - Let's Encrypt
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南