kubernetes - Kubernetes 云提供商
问题描述
我是 Kubernetes 的新手,他们是一个我不确定完全理解的概念:云提供商。
- 我已经使用 RKE(Rancher 引擎)安装了我的 Kubernetes 集群。
- 我的集群设置在 rancher2 之上。
- 我的节点是托管 OVH 服务器的虚拟机。
我设法运行具有 L7 入口和 ClusterIP 服务的应用程序,但每次我尝试使用 L4 LoadBalancer 时,LoadBalancer 都会卡在挂起状态。根据https://github.com/rancher/rancher/issues/14424 ,这是因为我没有任何 CloudProvider。
但是 CloudProvider 的确切目的是什么?不就是在云端运行 Kubernetes 节点、Pod 等等吗?如果是的话,如果我的应用程序是 pod 已经在云上并且由于我的配置可以从外部访问,我为什么还要费心去获取 CloudProvider。
所以我的以下问题是:
- CloudProvider 的具体角色是什么?
- 它在我的环境中有用吗?
- 是否必须拥有 CloudProvider 才能运行 L4 负载均衡器?
- L4 LoadBalancer 的替代品是什么?
- 我不能让自定义 CloudProvider 不依赖此处列出的其中之一:https ://kubernetes.io/docs/concepts/cluster-administration/cloud-providers/ ?像运行 NGINX 的自托管 CloudProvider 之类的?
感谢您对此主题的任何澄清/建议。-
解决方案
外部云提供商是一个 kubernetes 控制器,它运行 kubernetes 运行所需的特定于云提供商的循环。这些循环最初是 kube-controller-manager 的一部分,但它们将 kube-controller-manager 与云提供商特定的代码紧密耦合。为了释放 kubernetes 项目的这种依赖,引入了 cloud-controller-manager。
这给我们带来了Kubernetes Cloud Controller Manager的主题
Kubernetes v1.6 引入了一个名为 cloud-controller-manager 的新二进制文件。cloud-controller-manager 是一个嵌入云特定控制循环的守护进程。这些特定于云的控制循环最初位于 kube-controller-manager 中。由于与 Kubernetes 项目相比,云提供商以不同的速度开发和发布,将提供商特定的代码抽象为 cloud-controller-manager 二进制文件允许云供应商独立于核心 Kubernetes 代码发展。
关于 LoadBalancer 部分:
- 有一个指南展示了如何创建外部负载均衡器。它说:
您需要有一个 Kubernetes 集群,并且必须配置 kubectl 命令行工具以与您的集群通信。
- 但是,如果您需要替代方案,则可能需要使用Ingress
管理对集群中服务的外部访问的 API 对象,通常是 HTTP。Ingress 可以提供负载平衡、SSL 终止和基于名称的虚拟主机。
如果您想更好地了解这个概念而不是查看这个 SO 线程。
最后关于自定义Cloud Provider。可以为 RKE 启用不同的云提供商:
如果您想启用不同的云提供商,RKE 允许自定义云提供商选项。必须提供名称,并且可以将自定义 Cloud Provider 选项作为多行字符串传入
customCloudProvider
.
我希望它有所帮助。
推荐阅读
- javascript - 如何使用javascript绑定数据以通知js
- javascript - Electron js按钮单击不起作用
- java - Java 转换成双精度
- swift - iOS 应用使用 GoogleMaps 崩溃:NSInvalidUnarchiveOperationException 无法实例化名为 MKMapView 的类
- javascript - 如何摆脱这个页面闪烁?
- javascript - Mac 平台 Safari 和 Chrome 浏览器中画布旋转后无法显示 emoji 表情
- c++ - 聚合初始化中的异常
- android - 运行时异常无法启动活动
- c++ - text_multifile_backend 如何为文件名设置动态日期
- javascript - 反应;无法读取渲染内部未定义的属性> return()