- Pod,Service和Deployment的关系
-
Pod:Kubernetes 中最小的部署单元,用于运行容器化应用。
-
Service:提供服务发现和负载均衡,为 Pod 提供稳定的网络端点,ClusterIP,NodePort,LoadBalance以及ExternalName。
-
Deployment:管理Pod的副本,确保应用的高可用性,并支持滚动更新和回滚。
- K8S的核心组件
-
控制平面(Control Plane)
控制平面负责管理集群的状态,包括调度、配置和维护。主要组件包括:
-
API Server:
-
作用:提供 RESTful API 接口,用于与集群交互。
-
功能:接收和处理来自用户的请求,验证请求并更新 etcd 中的集群状态。
-
-
etcd:
-
作用:分布式键值存储,用于存储集群的配置数据和状态信息。
-
功能:存储所有集群配置和状态信息,确保数据的一致性和高可用性。
-
-
Controller Manager:
-
作用:运行各种控制器进程,负责维护集群的状态。
-
功能:确保集群的实际状态与期望状态一致,例如管理 Pod 的创建、删除和健康检查。
-
-
Scheduler:
-
作用:负责将 Pod 调度到合适的节点上运行。
-
功能:根据节点的资源使用情况、Pod 的资源需求和策略规则,选择最佳节点来运行 Pod。
-
-
-
工作节点
-
Kubelet:
-
作用:运行在每个节点上的代理,负责管理节点上的容器。
-
功能:与 API Server 通信,确保容器按照期望状态运行,管理容器的生命周期。
-
-
Kube-proxy:
-
作用:运行在每个节点上的网络代理,负责维护网络规则。
-
功能:实现服务发现和负载均衡,管理 Pod 之间的网络通信。
-
-
Container Runtime:
-
作用:负责运行容器的底层软件。
-
功能:支持多种容器运行时,如 Docker、containerd 等。
-
-
- K8S如何进行服务发现
服务发现是Kubernetes中用于动态识别和访问集群内服务的机制。它允许服务在集群中动态地发现和通信,而无需硬编码IP地址或端口。
++核心机制++
- Pod的动态性:Pod是短暂的,可以随时创建或销毁,其IP地址会动态变化。
- 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如何处理状态化应用?
-
稳定的网络标识符:每个 Pod 都有一个唯一的、稳定的网络标识符,POD重启不变(如
web-0
、web-1
) -
持久化存储:每个 Pod 都有自己的持久化存储卷(PersistentVolume),确保数据不会丢失,POD重启不受影响;
-
有序的部署和扩展:Pod 按顺序创建和删除,确保数据一致性;
- 简述K8S如何将一个POD调度到一个节点上的。
调度器的决策基于资源可用性、节点选择器、亲和性规则、污点与容忍等因素。通过合理配置调度策略,可以优化集群的资源利用率和应用性能。
- K8S的亲和性和反亲和性
-
Pod 亲和性:确保 Pod 与特定的 Pod 或节点一起运行,用于提高性能或满足特定部署需求。
-
Pod 反亲和性:确保 Pod 不与特定的 Pod 或节点一起运行,用于提高高可用性和避免资源争抢。
通过合理配置亲和性和反亲和性规则,可以优化 Pod 的调度策略,满足不同的部署需求和性能要求。