我在寻找带有健康检查的负载平衡技术时, 与API服务器通信的工作节点。
Kubernetes本身有一个名为“ kubernetes”的服务,其端点是API服务器。
我在workernodes的kubeconfig中输入了该服务的域,并且运行良好。
唯一的担心是没有对API服务器进行运行状况检查,如果其中任何一个回退,该服务仍会将流量转发到该节点。
我可以在这里配置一些健康检查吗?
apiVersion: v1
kind: Service
metadata:
creationTimestamp: 2017-09-06T07:54:44Z
labels:
component: apiserver
provider: kubernetes
name: kubernetes
namespace: default
resourceVersion: "96"
selfLink: /api/v1/namespaces/default/services/kubernetes
uid: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
spec:
clusterIP: 10.32.0.1
ports:
- name: https
port: 443
protocol: TCP
targetPort: 6443
sessionAffinity: ClientIP
sessionAffinityConfig:
clientIP:
timeoutSeconds: 10800
type: ClusterIP
status:
loadBalancer: {}
我知道我可以像Haproxy一样使用LB,也可以使用云提供商LB,但是我只想在集群内部实现该功能
答案 0 :(得分:1)
魔术magic。服务的端点由apiserver自己直接管理。这就是为什么它没有选择器。该服务实际上仅适用于与群集DNS兼容。确实是您用来从群集内部与API进行通信的方法,大多数客户端库通常会自动检测到这一点。
答案 1 :(得分:0)
如果要从Kubernetes群集本身(即从Pod)连接到Kubernetes API Server,则可以使用默认创建的kubernetes服务(通过端口443),该服务在所有名称空间中都可用,并且您不应该配置外部负载均衡器为此,请尝试通过该负载均衡器连接到它,因为那样您会将流量从集群路由到集群外的负载均衡器,只是再次进入集群内部并到达Kubernetes API Server。
您应该为Kubernetes API Server(端口6443)配置外部负载均衡器,并在希望从集群外部(即使用kubeconfig文件通过kubectl)连接到Kubernetes API Server时使用它来连接Kubernetes API Server。