【发布时间】:2020-10-21 20:33:31
【问题描述】:
我已经通过 kubespray 在我自己的几个虚拟机上配置了一个 kubernetes 集群。 Kubespray 使用 project-calico 作为默认网络插件,非常适合我在集群网络中代理服务到外部世界的需求。
Kubespray 将 apiserver 本身部署为 ClusterIP 服务。为了使它可以从外部访问,它使用主节点主机 IP 地址定义了此服务的端点,据我所知,Calico 将其路由到内部 ClusterIP。
我的问题是:如何定义我自己的端点(用于另一个服务),因为这些已经通过配置 service.yaml 隐式定义并且不能被覆盖。我想采用类似的方法让我的 Rook/Ceph Dashboard 从集群外部可见。
编辑:请注意 kubectl get ingresses.networking.k8s.io --all-namespaces 返回 No resources found. 和 kubectl describe service kubernete 返回
Name: kubernetes
Namespace: default
Labels: component=apiserver
provider=kubernetes
Annotations: <none>
Selector: <none>
Type: ClusterIP
IP: 10.233.0.1
Port: https 443/TCP
TargetPort: 6443/TCP
Endpoints: 192.168.103.254:6443
Session Affinity: None
Events: <none>
【问题讨论】:
-
这更多的是与入口控制器和入口有关。为了使您的服务与自定义端点一起使用以使外部服务访问在 kubernetes 集群中运行的服务,您需要将入口附加到您的服务。有关详细信息,请参阅此文档Ingress
-
@BinaryBullet 是的,我已经阅读了很多关于入口的信息,这是负载平衡等的正确方法......我只是想知道在一个新的 kubesprayed 集群中实际上没有定义入口...它仅适用于通过 calico 路由到 ClusterIP 服务的主主机 IP 上的端点,我想知道如何定义类似的设置
-
如果你不想使用 ingress 并且想通过 master 主机 ip 接,你可以直接使用代理服务器或服务(haproxy、nginx 等)将流量从外部 url 路由到直接的特定主机IP。我完全不确定这是否是你要找的。如果我对此有误,请随时纠正我。正如您已经阅读了有关入口的内容,它在进行所有流量路由和管理方面具有优势。希望这会有所帮助。
-
@BinaryBullet 这也不是我要问的,因为即使有 HAProxy,这也不能解决将节点外部 IP 路由到集群内部网络 IP 的部分。 Ingress 解决了这个问题,似乎 kubespray 使用了另一种方法,通过在主机 IP 上显式定义端点将 apiserver 路由到外部。我想知道这个定义是怎么做的。
标签: kubernetes kubernetes-service project-calico kubespray