K8S核心技术点

  • Pod,Service和Deployment的关系
  1. Pod:Kubernetes 中最小的部署单元,用于运行容器化应用。

  2. Service:提供服务发现和负载均衡,为 Pod 提供稳定的网络端点,ClusterIP,NodePort,LoadBalance以及ExternalName。

  3. Deployment:管理Pod的副本,确保应用的高可用性,并支持滚动更新和回滚。

  • Service类型介绍

        在 Kubernetes 中,服务(Service)是用于将一组 Pod 暴露给外部或内部访问的抽象层。Kubernetes 提供了多种服务类型,每种类型都有其特定的用途和特点。以下是 ClusterIP、NodePort、LoadBalancer 和 ExternalName 的详细解释:

  • ClusterIP
  • 定义:这是 Kubernetes 中默认的服务类型。ClusterIP 会为服务分配一个虚拟的内部 IP 地址(ClusterIP),该 IP 地址只能在集群内部访问。
  • 工作原理:
    1. ClusterIP 通过 iptables 或 IPVS 规则将流量路由到后端的 Pod。
    2. Kubernetes 使用 kube-proxy 组件来管理服务的网络规则
  • 特点:
    1. 适合内部微服务之间的通信。
    2. 服务只能在集群内部访问。
  • 适用场景:
    1. 当服务只需要在集群内部使用时。
    2. 例如,后端服务之间的调用。
  • NodePort
  • 定义:NodePort 是在 ClusterIP 的基础上,为服务分配一个固定的端口(NodePort),并将该端口暴露到每个节点的 IP 上。
  • 工作原理:
    1. NodePort 会在每个节点上监听指定的端口,并将外部流量转发到 ClusterIP。
    2. 外部可以通过 `<节点IP>:<NodePort>` 的方式访问服务。
  • 特点:
    1. NodePort 的端口范围默认是 `30000-32767`,但可以手动指定。
    2. 服务可以通过集群内部和外部访问。
  • 适用场景:
    1. 当需要从集群外部访问服务,但不想使用 LoadBalancer。
    2. 例如,测试环境或部署小型。
  • LoadBalancer
  • 定义:LoadBalancer 是在 NodePort 的基础上,通过云提供商的负载均衡器(如 AWS ELB、GCP Load Balancer 等)为服务分配一个外部 IP 地址。
  • 工作原理:
    1. 云提供商的负载均衡器会自动创建,并将流量分发到后端的节点。
    2. 外部可以通过负载均衡器的 IP 或域名访问服务。
  • 特点:
    1. 提供高可用性和流量分发。
    2. 依赖云提供商的支持。
  • 适用场景:
    1. 当需要从外部访问服务,并且需要高可用性时。
    2. 例如,生产环境中的 Web 应用。
  • ExternalName
  • 定义:ExternalName 是一种特殊的服务类型,它通过 CNAME(别名)将服务映射到外部的 DNS 名称,而不是直接暴露服务本身。
  • 工作原理:
    1. ExternalName 服务不会创建 ClusterIP 或 NodePort,而是直接将请求转发到外部的 DNS 名称,将内部sevice-name通过DNS的CNAME映射到外部的域名,例如,如果服务 my-serviceexternalName 设置为 external-database.example.com,那么在集群内部访问 my-service 时,实际上会解析为 external-database.example.com
    2. 适用于访问外部系统或服务。
  • 特点:
    1. 不需要后端 Pod。
    2. 适合访问外部资源,如数据库、API 等。
  • 适用场景:
    1. 当需要访问外部服务时。
    2. 例如,访问外部的数据库或第三方 API。

  • K8S的核心组件
  1. 控制平面(Control Plane)

    控制平面负责管理集群的状态,包括调度、配置和维护。主要组件包括:

    1. API Server:

      • 作用:提供 RESTful API 接口,用于与集群交互。

      • 功能:接收和处理来自用户的请求,验证请求并更新 etcd 中的集群状态。

    2. etcd:

      • 作用:分布式键值存储,用于存储集群的配置数据和状态信息。

      • 功能:存储所有集群配置和状态信息,确保数据的一致性和高可用性。

    3. Controller Manager:

      • 作用:运行各种控制器进程,负责维护集群的状态。

      • 功能:确保集群的实际状态与期望状态一致,例如管理 Pod 的创建、删除和健康检查。

    4. Scheduler:

      • 作用:负责将 Pod 调度到合适的节点上运行。

      • 功能:根据节点的资源使用情况、Pod 的资源需求和策略规则,选择最佳节点来运行 Pod。

  2. 工作节点

    1. Kubelet:

      • 作用:运行在每个节点上的代理,负责管理节点上的容器。

      • 功能:与 API Server 通信,确保容器按照期望状态运行,管理容器的生命周期。

    2. Kube-proxy:

      • 作用:运行在每个节点上的网络代理,负责维护网络规则。

      • 功能:实现服务发现和负载均衡,管理 Pod 之间的网络通信。

    3. Container Runtime:

      • 作用:负责运行容器的底层软件。

      • 功能:支持多种容器运行时,如 Docker、containerd 等。

  • K8S如何进行服务发现
            服务发现是Kubernetes中用于动态识别和访问集群内服务的机制。它允许服务在集群中动态地发现和通信,而无需硬编码IP地址或端口。

核心机制

  1. Pod的动态性:Pod是短暂的,可以随时创建或销毁,其IP地址会动态变化。
  2. Service的稳定性:Service提供了一个稳定的网络端点,即使后端的Pod发生变化,Service的端点仍然保持不变。

自动更新

        Service通过标签选择器动态地发现和管理后端的Pod,确保流量始终路由到健康的Pod。

Kubernetes通过Service提供稳定的服务发现机制,使得服务之间的通信变得简单可靠。Service通过标签选择器动态地发现和管理后端的Pod,并提供稳定的网络端点。通过DNS和环境变量,Pod可以轻松地发现和访问其他Service,确保系统的高可用性和灵活性。

  • 介绍一下Resource Quato

Resource Quota 是 Kubernetes 中用于限制命名空间内资源使用的一种机制。它通过设置资源使用上限,帮助管理员进行资源管理,确保资源的公平分配和使用,避免资源耗尽和浪费。通过合理配置 Resource Quota,可以优化资源分配,降低成本,并确保系统的稳定运行。

  • HPA和VPA的区别

HPA:调整POD副本数量

VPA:调整CPU和内存

  • K8S的网络策略

        Network Policies 是 Kubernetes 中用于定义 Pod 之间网络访问规则的机制。通过限制入站和出站流量,可以实现网络隔离和流量控制,提高集群的安全性和稳定性。通过合理配置 Network Policies,可以保护服务免受未经授权的访问和恶意流量的影响。

  • K8S如何处理状态化应用?
  1. 稳定的网络标识符:每个 Pod 都有一个唯一的、稳定的网络标识符,POD重启不变(如 web-0web-1

  2. 持久化存储:每个 Pod 都有自己的持久化存储卷(PersistentVolume),确保数据不会丢失,POD重启不受影响;

  3. 有序的部署和扩展:Pod 按顺序创建和删除,确保数据一致性;

  • 简述K8S如何将一个POD调度到一个节点上的。

        调度器的决策基于资源可用性、节点选择器、亲和性规则、污点与容忍等因素。通过合理配置调度策略,可以优化集群的资源利用率和应用性能。

  • K8S的亲和性和反亲和性
  1. Pod 亲和性:确保 Pod 与特定的 Pod 或节点一起运行,用于提高性能或满足特定部署需求。

  2. Pod 反亲和性:确保 Pod 不与特定的 Pod 或节点一起运行,用于提高高可用性和避免资源争抢。

        通过合理配置亲和性和反亲和性规则,可以优化 Pod 的调度策略,满足不同的部署需求和性能要求。

  • K8S中如何处理POD的健康检查

        通过合理配置 Liveness 和 Readiness 探针,可以确保 Kubernetes 集群中的应用保持健康状态,提高系统的可靠性和可用性。Liveness探针检测失败,会重启POD,Readiness探针检测失败,不会放流量到POD。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值