k8s基础知识

K8s 全称 Kubernetes ,中文常叫「容器编排平台」,由谷歌基于内部 Borg 系统开源,核心作用:批量管理服务器上的容器

Docker 是打包应用的工具(把程序 + 依赖打包成镜像);K8s 是调度、运维成千上万个 Docker 容器的管理系统。

一、核心基础概念

1. 容器 vs 虚拟机

虚拟机(VM,VMware / 云主机)

完整独立系统:内核 + 操作系统 + 应用,占用资源极大,启动分钟级,扩容慢。

容器(Docker)

共享宿主机内核,只打包程序、库、配置,体积几十 MB,启动秒级,隔离轻量。 痛点:一台机器跑十几个容器还好,上百台机器、上千容器手动管理会崩溃:

  • 手动启停、扩容、故障重启
  • 多机器分发容器、负载均衡、滚动更新
  • 存储、网络、权限统一管理 K8s 就是解决以上所有痛点的自动化管理平台

2. K8s 集群两大角色(集群 = 一堆服务器组成)

① Master 控制节点(大脑,管控集群)

集群中控中心,不跑业务程序,只负责调度、管理资源,包含 4 个核心组件:

  1. etcd:集群数据库,存所有集群配置、状态(所有资源数据)
  2. kube-apiserver:唯一入口,所有操作(命令 / 页面)都走它,鉴权校验
  3. kube-controller-manager:控制器,持续对比「期望状态」和「实际状态」,自动调优
  4. kube-scheduler:调度器,新建容器时自动挑选最合适的工作节点部署

② Node 工作节点(干活的,跑业务容器)

真正运行项目 / 服务的服务器,每个 Node 必备 3 组件:

  1. kubelet:节点代理,接收 Master 指令,管理本机容器,上报状态
  2. kube-proxy:网络代理,维护 Service 网络转发,实现集群内部访问
  3. 容器运行时:默认 docker/containerd,真正拉镜像、创建容器

辅助工具

kubectl:本地客户端命令行工具,我们操作 K8s 集群唯一命令工具,所有增删改查都用它。

3. K8s 最小核心资源对象(从底层到上层,循序渐进)

1)Pod(最小调度单元,重中之重)

  • 定义:K8s 里最小、不可分割的单元,一个 Pod 内可装 1~N 个容器(通常只放 1 个业务容器)
  • 特点:
    1. 同一 Pod 内所有容器共享网络、存储卷,共用 IP
    2. Pod 生命周期短暂:故障、扩容、更新都会销毁重建,IP 会变
    3. 不直接操作 Pod,业务全部通过 Deployment 管理 Pod
  • 通俗举例:一个 Nginx 程序镜像 → 打包成一个 Pod

2)Deployment(无状态应用控制器,90% 业务用它)

普通人部署 Web、Java 后端、Python 项目全部用 Deployment 核心能力:

  1. 定义 Pod 副本数量(比如同时跑 3 个相同服务实例)
  2. 自动故障自愈:Pod 崩溃自动新建替换
  3. 水平扩容 / 缩容:一键增加 / 减少实例数量
  4. 滚动更新、版本回滚:升级服务不中断业务 逻辑链路:Deployment → 管理 ReplicaSet(副本控制器)→ 批量创建 / 管理 Pod

3)Service(固定访问入口,解决 PodIP 频繁变动问题)

前面说 Pod 销毁重建 IP 会变,外部 / 内部程序没法稳定访问,Service 作用:

  1. 分配固定不变 ClusterIP,作为一组 Pod 统一访问入口

  2. 内置负载均衡,请求自动分发到后端所有正常 Pod

  3. 四种常用类型: 表格

    Service 类型 作用场景
    ClusterIP(默认) 仅集群内部互相访问(后端服务互调)
    NodePort 通过节点端口暴露,外部可临时测试访问
    LoadBalancer 云厂商负载均衡,生产环境对外提供服务
    ExternalName 映射外部第三方服务

4)ConfigMap / Secret(配置分离)

  • ConfigMap:存放明文配置(配置文件、环境变量、参数),不打包进镜像,修改无需重建镜像
  • Secret:存放敏感数据(数据库账号密码、密钥、Token),加密存储,不明文展示

5)Volume 存储卷

Pod 销毁后容器内数据全部丢失,Volume 给 Pod 挂载持久化存储:

  • emptyDir:临时存储,Pod 删除数据清空
  • hostPath:挂载宿主机本地目录
  • PV/PVC:集群持久化存储(生产数据库必备)

6)Namespace 命名空间

集群资源隔离,相当于文件夹,用来区分环境:

  • 默认 default:不指定命名空间的资源都放这里
  • 示例:dev 开发环境、test 测试、prod 生产,三者资源完全隔离互不干扰
相关推荐
styshoo2 小时前
NVSentinel 数据流梳理
kubernetes·gpu·ai-infra·nvsentinel
想你依然心痛2 小时前
嵌入式容器:Docker与BalenaOS在边缘设备上的实践——容器运行时与OTA
运维·docker·容器
zx78542 小时前
Kubernetes 生产级实战:从零部署 LNMP 架构 ECShop 商城(完整指南)
容器·架构·kubernetes
IT大白鼠3 小时前
K8S发展历史及未来展望
云原生·容器·kubernetes
运维大师4 小时前
【云原生与DevOps】08-多云容灾架构设计:跨Region自动切换实践
运维·云原生·devops
weixin_439930644 小时前
Kubernetes(K8s)入门实践
云原生·容器·kubernetes·k8s
阿里云云原生18 小时前
不改代码也能监控 AI Agent?揭秘 OBI 如何在内核层精准解析 GenAI 语义流量
云原生·agent
众人皆醒我独醉18 小时前
Pod 一直 Terminating,死活删不掉?三个凶手,每一个你都意想不到
面试·kubernetes
飞翔沫沫情19 小时前
K8s Alloy 采集 Pod 控制台日志
云原生·容器·kubernetes