Kubernetes 网络之 Calico 插件理论
Calico 是一个开源的网络及网络安全解决方案,主要用于容器、虚拟机和本地主机工作负载之间的网络连接。它以其高性能、灵活性和安全性而闻名,适用于需要高可扩展性和安全性的场景,支持多种平台如Kubernetes、OpenShift等。Calico 支持Linux eBPF、标准网络和Windows HNS等多种数据层,并内置Wireguard加密保护Pod间流量。其核心组件包括Felix(节点代理)、ETCD(存储集群路由信息)、BIRD(BGP客户端)以及BGP Route Reflector等。Calico提供两种主要网络模式:动态路由模式(基于BGP协议)和覆盖网络模式(IPIP或VXLAN协议)。其中,动态路由模式适合同一二层网络中的大规模集群;覆盖网络模式则适用于跨不同二层网络的场景,通过封装技术确保通信性能。
etcd 常用命令
本文介绍了在使用 kubeadm 安装的 Kubernetes 集群中,如何通过命令行操作 etcd,包括查询和备份恢复等操作。首先,通过一系列命令获取当前 Master 节点主机名称、etcd pod 名称及证书目录路径。接着,文章详细列出了几个常用的查询命令,如查询 etcd 集群成员信息、状态信息(包括版本号和leader)、健康状况以及特定键值对的内容。此外,还提供了备份 etcd 数据至指定目录的方法。对于数据恢复,文章给出了三种不同的方法:当 etcd pod 正常运行时直接恢复、停止服务后进行恢复以及在前两种方法均失败情况下的应急处理方案。每种恢复方式都配有具体的操作步骤说明,以帮助用户根据实际情况选择最适合的恢复策略。
Kubernetes 网络之概念总览
本文是对Kubernetes网络相关概念的总体梳理,旨在为后续深入学习打下基础。文章首先介绍了OSI七层模型和TCP/IP四层模型,接着详细解释了网络数据包的结构及其传输过程。随后,文章探讨了IP路由、网络地址转换(NAT)、网络命名空间等关键概念,并介绍了CIDR、虚拟以太网设备对(veth-pair)、网桥等技术在容器网络中的应用。此外,还讲解了CNI、VIP、iptables、ipvs、netfilter等Kubernetes中常见的网络组件和技术。最后,文章讨论了底层网络与覆盖网络的区别,以及VXLAN等隧道协议的工作原理。通过这些概念的介绍,读者可以更好地理解Kubernetes网络的实现机制。
Kubernetes 安全机制之 Security Context
本文介绍了Kubernetes中的Security Context,这是一种重要的安全机制,通过定义Pod或容器的权限来增强安全性。Security Context包括多种配置字段,如AllowPrivilegeEscalation、appArmorProfile、capabilities等,用于控制容器运行时的各种安全设置。文章提供了为Pod和容器设置Security Context的具体示例,并详细解释了这些配置的作用。例如,通过`runAsUser`可以指定容器内进程的用户ID,而`privileged`则允许容器以特权模式运行。此外,还强调了容器级别的Security Context优先级高于Pod级别,在存在冲突时会覆盖Pod的设置。
Kubernetes 网络之 CNI
本文介绍了Kubernetes中的CNI(Container Network Interface)及其在网络配置中的作用。CNI是一个标准化接口,通过插件化机制支持多种网络方案,如Calico、Flannel和Cilium等,以实现容器间的通信。CNI的基本流程包括创建配置文件、调用插件、创建接口设备、分配IP地址及配置规则。此外,CNI与CRI(Container Runtime Interface)紧密协作,确保容器的网络配置与其生命周期同步。文章还探讨了CNI插件的不同网络模式,如覆盖网络(Overlay Network)和底层网络(Underlay Network),以及Bridge与veth-pair的作用。最后,讨论了kube-proxy在服务发现和负载均衡中的角色,并指出Cilium等现代插件可通过eBPF技术绕过Linux内核,提高效率并替代kube-proxy。
Kubernetes 容器运行时之 Docker 与 Containerd
本文介绍了Kubernetes中的容器运行时(Container Runtime)的基本概念及其主要功能,包括镜像管理、容器生命周期管理、资源隔离等。重点讨论了Docker和Containerd这两种主流容器运行时的特点与区别。Docker最初是一个单一的二进制文件,后来发展成包含多个组件的架构,其中Containerd作为核心子组件负责实际的容器管理工作。而Containerd作为一个独立项目,强调简单性、健壮性和可移植性,已成为CNCF的标准之一。从Kubernetes 1.20版本开始,推荐使用Containerd作为默认容器运行时,因为它提供了更高效稳定的集成方式。但在某些特定场景下,如使用Docker in Docker或Docker Compose等工具时,仍需选择Docker。文章还提供了Containerd的安装方法及常用命令示例。
Kubernetes 集群证书过期处理方法
本文介绍了如何处理使用 kubeadm 安装的 Kubernetes 集群中证书过期的问题。当集群证书(默认有效期为365天)到期后,执行 kubectl 命令会出现连接错误。解决方法包括:首先备份现有证书;然后检测证书的有效期;接着更新所有证书以重置其有效期;之后更新 Kubeconfig 文件;最后重启相关服务(如 kube-apiserver、kube-controller-manager、kube-scheduler 和 etcd)。通过这些步骤,可以确保集群的安全通信功能恢复正常。验证更新效果可以通过再次运行 kubectl 命令或检查证书来完成。