多主机设置上的Kubernetes NodePort /负载均衡器/入口:是否有必要?

时间:2018-12-06 09:17:26

标签: kubernetes load-balancing kubernetes-ingress

我对此很陌生,但是我正在建立一个多主机,高可用性Kubernetes集群,该集群至少包含3个主机和可变数量的节点。我试图在不使用kube-spray或任何其他工具的情况下进行此操作,以了解真正的出入。我觉得除了一小部分以外,我的大部分精力都没了:

我的理解是:

  • NodePort将端口分配给特定服务
  • 负载均衡器是允许外部访问的外部资源
  • Ingress控制器允许您配置服务和端口的特定路径。

关于我的集群的一些要点:

  • 我部署的Pod可以在群集中的任何计算机上运行,​​并且不需要外部访问。
  • 我的主人也是工作者节点,可以运行pods
  • etcd在每个主机上运行

我的问题是,我需要一个NodePort / LB / Ingress Controller吗?我试图理解为什么我需要以上任何一个。如果将一个主节点与另一个主节点并排添加到现有集群中,则吊舱将在它们之间分布,对吗?那不是我所需要的吗?请帮助我理解,因为我觉得我缺少一个关键概念。

1 个答案:

答案 0 :(得分:2)

首先,NodePort,LoadBalancer和Ingress与设置kubernetes集群无关。这三个工具可将您的应用程序暴露给外界,以便您可以从kubernetes集群外部访问这些应用程序。

这里有两个部分:

  1. 使用三个主节点设置高可用性的kubernetes集群。我已经在上面写了一篇博客,介绍如何设置多主kubernetes集群,它将为您提供有关如何在kubernetes中设置多主集群的简要说明。
  

https://velotio.com/blog/2018/6/15/kubernetes-high-availability-kubeadm

  1. 现在,一旦您准备好kubernetes集群,就可以开始在其上部署应用程序(pod,服务等)。您部署的那些应用程序可能需要暴露于外界,例如,托管在您的kubernetes集群上的网站,并且需要从Internet访问。然后这些NodePort,Loadbalancer或Ingress出现在图中。 NodePort,LoadBalancer和Ingress之间的区别以及何时使用什么?这篇文章在这里很好地解释了。
  

https://medium.com/google-cloud/kubernetes-nodeport-vs-loadbalancer-vs-ingress-when-should-i-use-what-922f010849e0

希望这可以使您更加清楚。

编辑:此编辑适用于1.13的kubeadm配置文件(请参见注释)

apiVersion: kubeadm.k8s.io/v1beta1
kind: ClusterConfiguration
kubernetesVersion: stable
apiServer:
  certSANs:
  - "VIRTUAL IP"
controlPlaneEndpoint: "VIRTUAL IP"
etcd:
    external:
        endpoints:
        - https://ETCD_0_IP:2379
        - https://ETCD_1_IP:2379
        - https://ETCD_2_IP:2379
        caFile: /etc/kubernetes/pki/etcd/ca.crt
        certFile: /etc/kubernetes/pki/apiserver-etcd-client.crt
        keyFile: /etc/kubernetes/pki/apiserver-etcd-client.key