【问题标题】:What happens if a kubernetes Service fails?如果 Kubernetes 服务失败会发生什么?
【发布时间】:2019-03-21 10:12:22
【问题描述】:

我刚刚了解了 Kubernetes 中的 ReplicaSet 和服务。我知道 ReplicaSets 中期望状态的概念,这意味着如果我们的一个 pod 发生故障,它将被重新调度以保持所需的副本数量。

但是如果服务出现故障/失败会发生什么?有什么补救措施吗?

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    Kubernetes 服务是一种抽象,它定义了一组逻辑 Pod 和访问它们的策略 - 有时称为微服务。服务所针对的 Pod 集(通常)由标签选择器确定(请参阅下文了解为什么您可能需要没有选择器的服务)。 service

    k8s 服务是一个抽象概念,它不会像 pod 那样消耗任何 cpu/memory,所以如果它宕机也没有意义。如果您删除它然后将其删除,则没有活动的具体对象。

    其中一个功能是提供静态 IP(集群 IP)和 DNS 记录,以便其他 pod 可以与其通信,集群间通信。 DNS record

    kube-proxy 的主要职责之一是编写实现服务的 iptables 规则。节点具有相同的 iptables 规则,这些规则由 kube-proxy 同步。

    【讨论】:

    • 那你说的那个“具体物体”是什么?例如它可以做负载均衡,如果那个负载均衡器坏了怎么办?
    • 服务由 kube-proxy 组件管理,该组件是 IPTables 规则,与其他节点同步。 kube-proxy宕机需要重启,类似kubelet,kubelet宕机了怎么办
    • 据我了解具体的对象是节点,pod因为它们消耗资源,如果节点宕机,我们无能为力,因此我们需要更多的节点,如果一个pod宕机,replicaset是在那里调和它
    【解决方案2】:

    服务中断的主要原因之一是,如果您弄乱了主机上的 ip 表规则。 Kubernetes 中的服务对象不消耗任何集群资源。它只是让 kube proxy 为服务选择的 Pod 定义路由规则。

    如果服务不存在,可以验证并创建服务

    【讨论】:

    • Service 对象存储在哪里?它是分布式的还是什么?它是如何访问的?
    • 所有kubernetes对象都存储在etcd中
    • 我知道,但它究竟是如何访问的?比如我指的是一个特定的IP,IP指的是一台机器,而不是一个服务对象,接下来会发生什么?我所指的 IP 是如何选择的?
    猜你喜欢
    • 2020-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-18
    • 2016-01-23
    • 2018-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多