我有一个用kubeadm创建的裸机kubernetes( v1.11.0
)集群,工作正常,没有任何问题 . 与calico网络并使用kubectl taint nodes命令使其成为单节点集群 . (单个节点是必需的) .
我需要在主机端口80上运行mydockerhub / sampleweb静态网站图像 . 假设运行此kubernetes的ubuntu服务器的IP地址是192.168.8.10 .
如何在 192.168.8.10:80
上提供我的静态网站或在本地DNS服务器上映射到它的主机名? (例如: frontend.sampleweb.local:80
) . 后来我需要在映射到另一个子域的不同端口上运行其他服务 . (示例: backend.sampleweb.local:80
路由到端口8080上运行的服务) .
我需要知道:
-
我可以在没有负载均衡器的情况下实现这一目标吗?
-
需要创建哪些资源? (入口,部署等)
-
群集需要哪些其他配置? (网络政策等)
如果提供了样本yaml文件,我们非常感激 .
我是kubernetes世界的新手 . 我得到了样本kubernetes部署(如sock-shop)端到端工作,没有任何问题 . 我尝试使用NodePort来访问该服务,但我不需要在另一个端口上运行它,而是需要在主机上运行它 . 我尝试了许多入口解决方案但没有工作 .
我的设置截图:
2 回答
我最近使用traefik.io配置了一个与您的项目具有类似要求的项目 .
所以我将展示
traefik
和ingresses的基本解决方案 .我专用了一个名为
traefik
的整个命名空间(你可以使用kube-system
),并创建了一个kubernetes serviceAccount:入口规则调用的traefik控制器需要ClusterRole及其绑定:
traefin控制器将被部署为守护进程(即,根据定义为集群中的每个节点一个),并且Kubernetes服务专用于控制器:
最后一部分要求您为项目中的每个微服务创建一个服务,这里有一个例子:
以及将请求转发给适当服务的入口(规则集):
在这个入口中,我写了一个主机URL,这将是集群中的入口点,因此您需要将名称解析为主K8S节点 . 如果您有更多可能是主节点的节点,则建议使用负载均衡器(在这种情况下,主机URL将是LB) .
看一下kubernetes.io文档,清楚了解kubernetes的概念 . 另外traefik.io也很有用 .
我希望这可以帮助你 .
除了Nicola Ben的andswer之外,你必须在你的traefik服务中定义一个externalIPs,只需按照Nicola Ben的步骤,并在服务“my-svc-1”中添加一个externalIPs部分 .
而且您可以定义多于externalIP .