我正在使用群集(带有主节点,带有Pod的节点),但是如何也可以在节点中使用服务?将Internet暴露给节点环境(使用服务)而不是主环境。
我的情况(尚在测试中)是:
我需要公开服务所在的节点,而不是主机。因为,如果我暴露了母版,而母版掉线了,则所有服务都会停止。
答案 0 :(得分:1)
您似乎倾向于NodePort Services,所以我想您没有使用云提供商(就像使用云提供商一样,您可以使用LoadBalancer)。
由于您有多个节点,因此您需要选择在外部公开哪些节点以及如何公开。您可以放an external Load Balancer in front of the cluster so that load is balanced between nodes。那不会成为集群的一部分,因此必须单独配置以知道要路由到哪个IP /节点。
或者您可以考虑使用单个节点进行路由。该节点将仅使用kube-proxy发送流量,而无需进入应用程序内容(L4而非L7),因此它可以进行路由而无需进行大量处理,这有助于减轻其不可用的风险。但是它仍然仅仅是单个节点,并且根据其硬件,存在可能由于其他原因而崩溃的风险。因此,在决定哪种设置从外部进行公开最适合您的集群时,需要权衡取舍-您需要选择是否除了集群之外还需要维护负载均衡器,以及是否比使用节点更可靠。 / p>
答案 1 :(得分:0)
如果您希望从计划Pod中移除主机,并且您正在使用Kubernetes 1.7或更高版本,则可以使用以下命令。
<TreeView Margin="10"
ItemsSource="{Binding ChainedCommandVMs}">
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsExpanded"
Value="True" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TreeViewItem">
<StackPanel>
<ContentPresenter ContentSource="Header" />
<ItemsPresenter Name="ItemsHost" />
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</TreeView.ItemContainerStyle>...
您不能公开一个节点,它是一台已经具有ip地址并已公开的VM或裸机。您要做的是使用服务将Pod暴露在集群外部。您可以为此使用Kubernets Services。对于此测试方案,您可以使用NodePort将Pod暴露在外面。如果使用NodePort,则可以使用kubectl taint node yourMasterNode node-role.kubernetes.io/master:NoSchedule-
从群集外部访问它。如果您想从互联网访问它,可能需要一个静态的公共IP。
但是,如果您担心Pod的可用性,则可以使用多节点群集,然后使用Pod的副本,以便可以在多个节点上调度它们。然后,只要在其他位置安排了新的Pod时,只要其他节点中的Pod可以继续服务即可。这就是您可以在Kubernetes中获得100%可用性的方式。
当您担心主机崩溃时。如果主服务器宕机,则应用程序将继续提供服务,并且节点将是临时节点,而不是群集。除非节点重新启动或应用程序失败,否则它将正常运行。但是群集将无法响应节点故障,创建新资源,将Pod移至新节点等。直到主节点重新联机。因此,如果主服务器极有可能失败,则可以在集群中使用multiple masters。