我们可以使用服务“ kubernetes”与API服务器通信吗?

时间:2020-03-18 22:12:59

标签: kubernetes kubernetes-service

我在寻找带有健康检查的负载平衡技术时, 与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,但是我只想在集群内部实现该功能

2 个答案:

答案 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。