【问题标题】:Interested in setting up K8s cluster on EC2 instance with Minikube & domain name有兴趣使用 Minikube 和域名在 EC2 实例上设置 K8s 集群
【发布时间】:2020-06-30 12:27:35
【问题描述】:

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

我认为使用 Minikube 设置一个运行我的各种项目的开发集群并将域名连接到此实例会非常酷(尽管显然有些过头)。

设置

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

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

问题

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

我尝试过的

我在想,因为这实际上只用于开发目的,所以我可以尝试使用 kubect port-forward ... 以某种方式指向我的 Ingress 控制器。但是官方网站上的thisport-forward 引用并没有说明 Ingress 控制器。

问题

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

【问题讨论】:

    标签: kubernetes amazon-ec2 kubernetes-ingress


    【解决方案1】:

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

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

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

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

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

    4. 创建入口资源,您可以通过 EC2 实例公共 IP 地址访问任何服务。

    5. 当您有更多 EC2 实例的预算时,您可以使用 kubeadm join 将它们作为工作节点添加到集群中。

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

    【讨论】:

    • 谢谢!我会在下班后尝试一下,如果我能够让它工作,我会打上绿色的复选标记。 :)
    • hostNetwork: true 是否意味着我将绕过任何虚拟网络提供商,例如 Calico?或者这只是将网络设置为入口控制器的 hostNetwork?
    • 只是入口控制器 pod 将在 hosts 网络命名空间上运行
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-29
    • 1970-01-01
    • 2019-11-05
    • 1970-01-01
    相关资源
    最近更新 更多