专业搭建网站公司,客户网站开发全流程图,网站app制作,wordpress 500一、Kubernetes 是什么 Kubernetes 是一个全新的基于容器技术的分布式架构解决方案#xff0c;是 Google 开源的一个容器集群管理系统#xff0c;Kubernetes 简称 K8S。 Kubernetes 是一个一站式的完备的分布式系统开发和支撑平台#xff0c;更是一个开放平台#xff0c;对… 一、Kubernetes 是什么 Kubernetes 是一个全新的基于容器技术的分布式架构解决方案是 Google 开源的一个容器集群管理系统Kubernetes 简称 K8S。 Kubernetes 是一个一站式的完备的分布式系统开发和支撑平台更是一个开放平台对现有的编程语言、编程框架、中间件没有任何侵入性。 Kubernetes 提供了完善的管理工具这些工具涵盖了开发、部署测试、运维监控在内的各个环节。 Kubernetes 具有完备的集群管理能力包括多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和服务发现机制、内建智能负载均衡器、强大的故障发现和自我修复能力、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制、多粒度的资源配额管理能力。 Kubernetes 官方文档Kubernetes 二、Kubernetes 特性 ① 自我修复在节点故障时重新启动失败的容器替换和重新部署保证预期的副本数量杀死健康检查失败的容器并且在未准备好之前不会处理用户的请求确保线上服务不中断。② 弹性伸缩使用命令、UI或者基于CPU使用情况自动快速扩容和缩容应用程序实例保证应用业务高峰并发时的高可用性业务低峰时回收资源以最小成本运行服务。③ 自动部署和回滚K8S采用滚动更新策略更新应用一次更新一个Pod而不是同时删除所有Pod如果更新过程中出现问题将回滚更改确保升级不影响业务。④ 服务发现和负载均衡K8S为多个容器提供一个统一访问入口内部IP地址和一个DNS名称并且负载均衡关联的所有容器使得用户无需考虑容器IP问题。⑤ 机密和配置管理管理机密数据和应用程序配置而不需要把敏感数据暴露在镜像里提高敏感数据安全性。并可以将一些常用的配置存储在K8S中方便应用程序使用。⑥ 存储编排挂载外部存储系统无论是来自本地存储公有云还是网络存储都作为集群资源的一部分使用极大提高存储使用灵活性。⑦ 批处理提供一次性任务定时任务满足批量数据处理和分析的场景。 三、基础架构图 核心组件• etcd保存了整个集群的状态和应用部署的信息• Kube-apiserver提供了资源操作的唯一入口并提供认证、授权、访问控制、API注册和发现等机制• Kube-Controller-manager负责维护集群的状态比如故障检测、自动扩展、滚动更新等• Kube-scheduler负责资源的调度按照预定的调度策略将Pod调度到相应的机器上• kubelet负责节点注册和心跳发送、应用生命周期管理、应用健康检查、CSI存储接口对接存储• Container runtime负责镜像管理以及Pod和容器的真正运行CRI• kube-proxy负责服务暴露实现 注意kubelet、container Runtime、kube-proxy这几个组件在master节点也可以有。master节点也可以组集群。具体作用可自行检索。 Node和Pod是不同的概念Node是物理或虚拟机器而Pod是一个或多个容器的集合。Pod可以在Node上运行一个Node可以运行多个Pod一个Pod也可以跨多个Node运行。 四、配额限额 1资源配置 要配置两个 request--资源请求 limit--最大限制 实例spec:containers:- name: hostnamesimage: mirrorgooglecontainers/serve_hostnameresources:requests:cpu: 100mmemory: 100Milimits:cpu: 100mmemory: 100Mi100 millicpu也就是 0.1 个 CPU 的意思。也可以写成 cpu0.1
memory100Mi1Mi1024*10241M1000*1000所以这里就是100MB内存的意思。 问题按理说设置limit最大资源限制就可以了类似docker-compose上面配置一样为什么k8s还要设置一个request资源请求参数答resources.requests 字段可以指定 Pod 所需的 CPU 和内存资源量。Kubernetes 调度器会根据这个参数来选择合适的节点以确保节点上的资源能够满足 Pod 的需求。如果没有设置这个参数Kubernetes 调度器会默认将 Pod 的资源需求设置为 0这可能会导致 Pod 被调度到资源不足的节点上从而影响 Pod 的性能和稳定性。需要注意的是resources.requests 字段只是一个建议值Kubernetes 调度器并不会强制要求节点提供这些资源。如果节点上的资源不足Pod 仍然可能会出现资源不足的情况。因此在设置 resources.requests 字段时需要根据实际情况合理设置以确保 Pod 能够正常运行。 2资源抢占 对于内存这类不可压缩资源如果发生资源抢占则会按照优先级的高低进行Pod的驱逐(关闭掉)。驱逐的策略为 优先驱逐RequestLimit0BestEffort级别的Pod其次驱逐Request !Limit (Burstable)。0RequestLimit的Pod的会被保留; Request设置按比例分占CPU调度的时间片所以反过来说request值设得越大也就意味着发生资源抢占时每个Pod分到的CPU时间片也越多