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 生产,三者资源完全隔离互不干扰
相关推荐
IT大白鼠8 小时前
Ingress 与 Ingress-Controller:K8s 七层 HTTP 反向代理技术详解与实践
http·容器·kubernetes
java_logo9 小时前
Docker 部署 Rocky Linux:轻松搭建 RHEL 兼容企业级基础镜像平台
linux·docker·容器·rocky linux·基础镜像·轩辕镜像·rhel 兼容
阿里云云原生12 小时前
论坛剧透丨当企业有 1000 个智能体后怎么跑怎么管?
云原生
Henry-SAP12 小时前
GPT-6Astra开启AI自主执行新时代
人工智能·云原生·sap·erp
IT大白鼠15 小时前
Istio 结合 K8s 实现流量管理:服务网格灰度、熔断、限流实战
云原生·kubernetes·istio
鹤落晴春15 小时前
【K8s】认识Kubernetes API:从CRD出发的一次梳理
云原生·容器·kubernetes
yanwumuxi17 小时前
Docker记录:误删宿主机挂载目录导致 PostgreSQL 数据丢失
docker·postgresql·容器
cui_hao_nan18 小时前
Docker 学习 5
docker·容器
A黄俊辉A19 小时前
两分钟上手docker
运维·docker·容器
努力努力再努力wz21 小时前
【Docker入门系列】:从架构演进到容器化:一文建立 Docker、虚拟化与 Namespace 的底层心智模型
运维·开发语言·数据结构·c++·docker·容器·架构