本章主要介绍在公有云中运行 Kubernetes 时可能会碰到的问题以及解决方法。
在公有云平台上运行 Kubernetes,一般可以使用云平台提供的托管 Kubernetes 服务(比如 Google 的 GKE、微软 Azure 的 AKS 或者 AWS 的 Amazon EKS 等)。当然,为了更自由的灵活性,也可以直接在这些公有云平台的虚拟机中部署 Kubernetes。无论哪种方法,一般都需要给 Kubernetes 配置 Cloud Provider 选项,以方便直接利用云平台提供的高级网络、持久化存储以及安全控制等功能。
而在云平台中运行 Kubernetes 的常见问题有
- 认证授权问题:比如 Kubernetes Cloud Provider 中配置的认证方式无权操作虚拟机所在的网络或持久化存储。这一般从 kube-controller-manager 的日志中很容易发现。
- 网络路由配置失败:正常情况下,Cloud Provider 会为每个 Node 配置一条 PodCIDR 至 NodeIP 的路由规则,如果这些规则有问题就会导致多主机 Pod 相互访问的问题。
- 公网 IP 分配失败:比如 LoadBalancer 类型的 Service 无法分配公网 IP 或者指定的公网 IP 无法使用。这一版也是配置错误导致的。
- 安全组配置失败:比如无法为 Service 创建安全组(如超出配额等)或与已有的安全组冲突等。
- 持久化存储分配或者挂载问题:比如分配 PV 失败(如超出配额、配置错误等)或挂载到虚拟机失败(比如 PV 正被其他异常 Pod 引用而导致无法从旧的虚拟机中卸载)。
- 网络插件使用不当:比如网络插件使用了云平台不支持的网络协议等。