Kubernetes
K8s简介
1.了解Kubernetes(K8S)是什么?它的功能、优缺点?

Kubernetes(简称 K8s),是用于自动部署、扩缩和管理容器化应用程序的开源系统。
Kubernetes(简称K8s)是谷歌开源的容器编排系统,用于自动化部署、扩展和管理容器化应用程序。使用Go语言编写,适合管理大规模的容器集群;
容器编排开源系统:
可以把它想象成一个数据中心的操作系统,或者一个容器集群的管理员。
-
核心思想:它将多台物理或虚拟机组合成一个强大的集群,你只需要告诉它你想让应用程序如何运行(例如,需要3个副本,需要5GB内存,需要开放80端口),Kubernetes 就会自动在集群中找到合适的位置来部署和维持这些应用的运行状态。
功能:
1.通过yaml配置文件,实现集群中容器的一键批量部署;
2.可以扩容、缩容、更新、回滚、发布、服务发现······;
3.默认提供负载均衡,高可用等
Kubernetes提供了完善的管理工具(开发、部署、测试、运维、监控)因此,Kubernetes是一个全新的基于容器技术的分布式架构解决方案,并且是一个一站式完备的分布式系统开发和支撑平台。
Kubernetes同时具有完备的集群管理能力:
1、故障自愈
2、服务发现与负载均衡
3、自动部署与回滚
4、自动伸缩(扩容与缩容)
优点:
-
高可用性与韧性:
-
通过自我修复和副本机制,应用程序可以承受节点故障、容器崩溃等意外情况,确保服务持续可用。
-
-
高可扩展性:
-
无论是应用层面(轻松扩缩容副本数)还是集群层面(轻松添加或移除节点),Kubernetes 都提供了极佳的扩展性。
-
-
避免供应商锁定:
-
Kubernetes 是云原生计算基金会(CNCF)的项目,拥有庞大的社区和统一的API。你可以在本地数据中心、AWS、Google Cloud、Azure 或任何混合环境中运行几乎相同的 Kubernetes 集群,实现了真正的“一次部署,随处运行”。
-
-
声明式模型与自动化:
-
“告诉我你想要什么,而不是如何去做”。这种模式极大地简化了运维工作,并减少了人为错误。系统会自动维持你声明的状态。
-
-
丰富的生态系统:
-
拥有一个极其庞大的工具和扩展生态系统(称为 Operator 或 Helm Chart),可以轻松集成日志、监控、CI/CD、服务网格(如 Istio)等。
-
-
资源利用率高:
-
通过高效的调度和装箱,可以将多个应用紧密地部署在更少的服务器上,节省硬件成本。
-
缺点与挑战:
-
学习曲线陡峭:
-
Kubernetes 的概念非常繁多且复杂(如 Pod、Service、Deployment、StatefulSet、Ingress、ConfigMap 等),对开发和运维团队来说,学习和掌握它需要投入大量时间和精力。
-
-
复杂性高:
-
部署和管理一个生产级别的 Kubernetes 集群本身就是一个复杂的任务。虽然托管服务(如 EKS, AKS, GKE)减轻了部分负担,但集群的运维、升级、网络和存储配置仍然不简单。
-
-
成本可能更高:
-
运维成本:可能需要专门的团队(SRE或平台团队)来维护集群。
-
资源成本:Kubernetes 本身(控制平面组件)需要消耗一定的 CPU 和内存资源。对于非常小的项目,使用 Kubernetes 可能“杀鸡用牛刀”,反而更昂贵。
-
-
调试困难:
-
当问题出现时,由于系统是分布式的、动态的,排查问题(网络、存储、调度失败)的根源可能比在传统系统中更具挑战性。
-
-
“过度工程”的风险:
-
对于简单的、无状态的、不需要动态扩缩容的应用程序来说,引入 Kubernetes 可能会带来不必要的复杂性。有时候,使用更简单的编排工具甚至直接运行容器可能更合适。
-
2.为什么要学习K8S,学完K8S后能做什么?
Kubernetes 的一些关键特性和用途:
1.容器编排
-
自动化部署:Kubernetes 可以自动化地部署应用程序容器,并通过滚动更新或回滚来管理应用的升级过程。
-
负载均衡:Kubernetes 可以自动将流量分配到多个容器实例,确保服务的高可用性和负载均衡。
2.扩展和管理
-
自动扩展:Kubernetes 可以根据资源使用情况自动扩展或缩减应用程序的实例数量,以适应流量或资源需求的变化。
-
自愈能力:如果某个容器或节点发生故障,Kubernetes 可以自动重启或重新调度容器,确保应用程序的持续运行。
3.存储管理
-
持久化存储:Kubernetes 支持多种存储解决方案,可以为应用程序提供持久化存储。
-
存储编排:Kubernetes 可以动态地为应用程序分配存储资源,并管理存储的生命周期。
4.服务发现和负载均衡
-
服务发现:Kubernetes 提供了内置的服务发现机制,使得不同的服务可以相互发现和通信。
-
负载均衡:Kubernetes 支持多种负载均衡策略,确保流量在多个容器实例之间均匀分布。
5.配置和密钥管理
-
配置管理:Kubernetes 允许用户通过配置文件或环境变量来管理应用程序的配置。
-
密钥管理:Kubernetes 提供了安全的密钥管理机制,用于存储和管理敏感信息,如数据库密码或 API 密钥。
6.多环境支持
-
混合云和多云:Kubernetes 可以在不同的云环境(如 AWS、Azure、Google Cloud)和本地数据中心中运行,实现混合云和多云部署。
-
集群管理:Kubernetes 可以管理多个集群,允许用户跨多个集群部署和管理应用程序。
7.社区和生态系统
-
丰富的插件和扩展:Kubernetes 拥有一个庞大的社区和生态系统,提供了大量的插件和扩展,用于增强 Kubernetes 的功能。
-
持续演进:Kubernetes 是一个活跃的开源项目,不断引入新的特性和改进,以满足不断变化的容器化需求。
3.了解K8S和Docker关系、区别?
-
Docker 是创建和运行容器的工具(容器运行时)。
-
Kubernetes 是管理大量容器的平台。
核心区别对比表
| 特性 | Docker (Docker Swarm) | Kubernetes (K8s) |
|---|---|---|
| 定位 | 容器化工具(单机) | 容器编排平台(集群) |
| 核心功能 | 1.构建/管理容器镜像; 2.启动/停止单机容器 | 1.容器调度与部署; 2.服务发现与负载均衡; 3.自动伸缩与故障恢复 |
| 核心目标 | 解决“应用环境一致性”问题 | 解决“大规模容器集群管理”问题 |
| 依赖关系 | 可独立使用,无需依赖K8s | 无法直接创建容器,需依赖容器运行时(可含Docker) |
4.了解K8S的结构,核心组件?用 “是什么 - 解决什么问题 - 核心作用” 的结构?

Kubernetes(k8s)的结构采用分布式集群架构,核心分为两部分:控制平面(Control Plane) 和节点(Node)。控制平面负责集群的 “决策与调度”,节点负责 “实际运行容器”,二者通过 API 交互协同工作。
-
Master管理节点(控制平面 Control Plane):决策与调度
-
API Server:集群的“统一入口”,对于K8s的所有操作(部署应用、查询状态)都要经过API Server;负责验证请求、转发指令,是组件间通信的唯一渠道。
-
etcd:是专门存储配置信息的数据库,key-value结构;集群的“数据库”,存储所有集群状态(如Pod数量、配置信息),是“唯一可信数据源”。
-
Controller Manager:控制管理器,运行多种“控制器"进程(如节点控制器、副本控制器),监控集群状态,自动修复异常(如Pod崩了,自动新建一个)。监控集群状态,自动修复异常(如Pod崩溃了,自动新建一个)。
-
Scheduler:“调度器”,将容器调度到相应的节点上运行;根据应用需求(如需要2核CPU)和节点资源(如节点A有3核空闲),决定哪个应用跑在哪个节点上。
-
-
Worker Node 工作节点:容器的运行、监控、管理;
-
Kubelet:每个节点上的“代理程序”,代理Master执行具体的任务,管理容器运行时,监控容器的状态,向Master节点汇报节点状态,确保容器按Pod定义运行(如启动、监控、停止容器);
-
Kube-proxy:利用LVS、iptable的Linux的组件实现负载均衡与网络通信,节点的“网络代理”,管理节点网络规则,实现Pod之间、Pod与外部的通信,支持Service的负载均衡。
-
容器运行时(Container Runtime):用于创建、运行容器的工具,例如:Docker、Podman、Containerd、CRI-O;运行容器的软件(如Docker、containerd),负责拉取镜像、创建容器、管理容器生命周期。
-
5.了解K8S的安装部署方式有哪些?
-
容器化部署:kubeadm,下载容器,使用Docker安装
-
二进制安装:下载K8s各种组件的安装包,配置systemctl,配置证书
自动化部署工具(自定义生产环境)
如果你需要在自有数据中心(on-premises)、边缘环境或特定云主机上从头开始搭建和管理完整的 K8s 集群(包括 Master 和 Worker 节点),这类工具是你的最佳选择。
| 工具 | 描述 | 特点 |
|---|---|---|
| kubeadm | 官方推荐的用于快速部署最佳实践集群的命令行工具。 | - 生产级质量。 - 灵活性高,可以让你完全控制集群的配置。 - 需要自行配置网络、存储等插件。 - 是许多其他工具的基础。 |
| kOps | 类似于 kubeadm,但更专注于在 AWS 上部署生产级集群。 | - 被称为 "Kubernetes Operations"。 - 可以像 kubectl 一样声明式地管理集群的生命周期(创建、升级、销毁)。 - 也支持 GCP 和 OpenStack(处于 Beta 状态)。 |
| Kubespray | 基于 Ansible 的部署工具。 | - 支持在多个平台上部署(AWS, GCP, Azure, OpenStack, on-premises)。 - 功能强大,可定制性极高。 - 依赖 Ansible,对熟悉 Ansible 的团队友好。 |
| Rancher | 一个完整的 Kubernetes 管理平台。 | - 除了能部署集群(通过 RKE),还提供了强大的多云集群统一管理界面。 - 内置了应用商店、安全策略、监控日志等功能。 |
选择建议:
-
想在任意环境(包括裸机)部署且希望使用官方工具,选择 kubeadm。
-
主要在 AWS 上部署,选择 kOps。
-
团队熟悉 Ansible 或需要高度自定义,选择 Kubespray。
-
需要一个统一平台来管理多个集群,选择 Rancher。
756

被折叠的 条评论
为什么被折叠?



