Kubernetes(K8S)是云技术的最核心的部分,也是构建是云原生的基石,下面我就全面来详解Kubernetes(K8S)@mikechen
K8S
K8S全称是“Kubernetes ”,是一个容器编排平台,用于自动化应用程序的部署、扩展、和管理,由谷歌(Google)开发。
K8S主要解决以下4大点:
- 容器编排:Kubernetes (K8S) 的核心功能之一:是容器编排,可以自动管理、和协调容器化应用程序的部署、扩展和运行。
- 弹性收缩:根据应用程序的需求和负载,Kubernetes 可以自动调整运行容器的数量,实现弹性伸缩。
- 自我修复:当容器或节点故障时,Kubernetes 可以自动重启、或替换这些组件,确保应用程序的高可用性。
- 资源管理:Kubernetes 能够有效管理和分配计算资源(比如:CPU、内存……等),从而,提高资源利用率。
K8S架构
Kubernetes 采用主从(Master-Node)架构,主要由2大组件组成:Master 节点和工作节点(Node)。
如下图所示:
第一大组件:是Master组件(大脑) 。
Master 类似集群的:“大脑”,负责管理:整个集群的状态、和协调所有的工作负载。
主要会涉及到,包括: API 服务器、控制器管理器、调度器……等组件。
1.API Server
API Server :是 Kubernetes 控制平面的前端,处理所有API 请求。
K8S所有的控制请求,都通过 API Server 处理、和转发。
API Server,主要解决:
- 处理集群中所有的 REST 操作请求(例如:创建、更新、删除…等);
- 提供集群状态和资源的查询接口;
- 进行请求认证、和授权。
2、Kube-controller-manager
负责运行控制器进程,这些控制器,包括:节点控制器、复制控制器、端点控制器…等,确保集群状态、与期望状态一致。
如下图所示,有多个控制器:
负责维护集群的状态,例如:确保指定数量的 Pod 在工作、处理节点故障,以及进行滚动、更新…等。
3、Kube-scheduler
负责将新创建的 Pod ,分配到合适的 Node 上运行。
以及,监控未绑定到节点的 Pod,并根据预定义的策略、和约束,将其分配到合适的节点上。
总之,调度决策的核心,是找到满足 Pod 资源需求、和其他约束条件的最优节点。
第二大组件:子节点(Node)
Kubernetes 工作节点(Node)通过 :Kubelet、Kube-proxy 和容器运行时等组件,提供了强大的容器运行环境。
1、Kubelet
Kubelet是每个节点上的主要代理进程,负责:管理该节点上的 Pod 、和容器。
Kubelet 是节点上所有容器操作的核心,直接与容器运行时交互。
2、Kube-proxy
Kube-proxy 是 Kubernetes 网络代理,负责:维护网络规则以便 Pod 间通信。
通过 iptables管理节点上的网络规则,处理服务的负载均衡、和网络转发。
3、容器运行时 (Container Runtime)
容器运行时是负责:拉取镜像并在节点上运行容器的软件,比如:
- Docker;
- containerd;
主要管理容器的生命周期,比如:创建、启动、停止和删除容器。
Kubernetes (K8S) 应用
Kubernetes 在各类应用场景中发挥着重要作用,比如:
- 微服务架构:通过将应用程序拆分为多个小型、独立的服务,K8S可以结合Istio,来解决微服务架构;
- 应用的容器化:将应用容器化后部署在 K8S上,可以提升应用的可扩展性、和管理效率;
- 持续集成和持续部署(CI/CD):结合 CI/CD 工具,K8S可以实现自动化的应用构建、测试、和部署….等流程;
- 混合云和多云部署:Kubernetes 提供了跨不同云提供商的一致性,使得混合云、和多云环境的管理更加方便;
K8S总结
总之,K8S是一个强大、灵活且可扩展的容器编排平台,能够满足各种规模的应用部署、和管理需求。
陈睿mikechen
十余年BAT架构经验,资深技术专家,就职于阿里、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》