有兴趣在 EC2 实例上使用 Minikube 和域名设置 K8s 集群

Interested in setting up K8s cluster on EC2 instance with Minikube & domain name

我有一个 EC2 实例,用于个人工作和流量非常小的项目(投资组合等)。

我认为使用 Minikube 设置开发集群 运行 我的各种项目并将域名连接到此实例真的很酷(尽管显然有点矫枉过正)。

设置

我有一个指向我的服务的 Ingress 控制器,其 IP 地址与主机不同。我认为这是虚拟机的 IP 地址,但只能从主机访问。

我真的很想使用 Ingress,因为我有很多项目 运行 在使用不同的域名。根据我有限的知识,似乎是简单而正确的解决方案。

问题

不太了解k8s/networking,我不知道如何让访问分配给我实例的弹性 IP 的外部流量定向到 Ingress 控制器

我试过的

我在想,因为这实际上只会用于开发目的,所以我可以尝试使用 kubect port-forward ... 以某种方式指向我的 Ingress 控制器。但是 this port-forward 官方网站的参考资料没有提到 Ingress 控制器。

问题

通过 Ingress 控制器将外部流量引入我的集群的最正确方法是什么?

假设这不是针对实际生产工作负载,我建议采用以下方法

  1. 不使用 minikube,而是使用 kubeadm 在 EC2 实例上安装单节点 kubernetes 集群。

  2. 确保删除主节点污点,以便可以在主节点上安排工作负载 pods,这意味着同一个 EC2 实例将托管控制平面 pods 以及工作量 pods。命令是

    kubectl taint nodes nodename node-role.kubernetes.io/master:NoSchedule-

  3. 安装 nginx 入口控制器并在部署 yaml 中使用 hostNetwork: true。因此 nginx 将在端口 80443 上侦听 EC2 实例的网络。这是 this.

    上的文档
  4. 创建入口资源,您可以通过 EC2 实例 public IP 地址访问任何服务。

  5. 当您有更多 EC2 实例的预算时,您可以使用 kubeadm join.

    将这些实例作为工作节点添加到集群中

注意:您可以使用免费 t2.micro 层 EC2 实例作为工作节点。