在裸机集群上暴露Kubernetes吊舱

时间:2018-08-23 13:23:19

标签: docker kubernetes cluster-computing kubernetes-helm

我正在尝试在没有域的单节点裸机群集上公开Kubernetes容器。 据我了解,我有以下选择:

  1. 使用NodePort公开
  2. 使用Ingress控制器公开
  3. 使用ClusterIP公开并手动设置外部IP

正如我已经提到的,我只有一个单节点集群。这意味着主机同时是直接在fedora主机系统上运行的主机和节点。

最简单的解决方案是使用NodePort。但是这里的限制是(如果我是对的)服务端口将从给定的端口范围中自动选择。

下一个更好的解决方案是使用入口控制器。但是为此,我需要一个没有的公共领域。因此,入口控制器也不适合我。

我还有其他选择吗?我只想直接在9090端口上公开我的服务。

2 个答案:

答案 0 :(得分:1)

为什么不选择选项3?您可以为节点ip设置外部IP。

apiVersion: v1
kind: Service
...
spec:
  externalIPs:
  - your node ip

还可以使用NodePort来指定服务端口。

答案 1 :(得分:0)

您可以通过将以下选项添加到apiserver设置(/etc/kubernetes/manifests/kube-apiserver.yaml)中来为NodePort设置自定义端口范围:

  

-service-node-port-range portRange
  默认值:30000-32767
  一个端口范围,为具有NodePort可见性的服务保留。例:   '30000-32767'。
  包含范围的两端。

这是Kubernetes documentation中与服务有关的部分:

  

如果需要特定的端口号,则可以在   nodePort字段,系统将为您分配该端口,否则   API交易将失败(即您需要注意可能   端口会自己碰撞)。您指定的值必须位于   配置的节点端口范围。

此答案的示例摘自文章Hosting Your Own Kubernetes NodePort Load Balancer

apiVersion: v1
kind: Service
metadata:
  name: nginx
  labels:
    name: nginx
spec:
  type: NodePort
  ports:
    - port: 80
      nodePort: 30080
      name: http
    - port: 443
      nodePort: 30443
      name: https
  selector:
    name: nginx
相关问题