Skip to content

k8s(2014)

关键词:集群管理、调度、自愈

一、Kubernetes 是什么?

为什么会有 Kubernetes?

在没有 K8s 前:

  • 我们手动部署程序到服务器
  • 容器越来越多(Docker)
  • 需要解决:
    • 自动部署
    • 自动扩缩容
    • 自动重启
    • 服务发现
    • 负载均衡
    • 配置管理

Docker 解决:一台机器如何跑服务。

但问题来了:

  • 如果我有 100 台机器?
  • 如果一个容器挂了?
  • 如果流量突然暴涨?

这时 Google 把内部系统 Borg 开源 → Kubernetes。

K8S 是:容器集群操作系统。Kubernetes = 容器编排系统。Kubernetes 是一个用于自动化部署、扩展和管理容器化应用的平台。

如果说:

  • Docker = 管理一个容器
  • K8S = 管理成千上万个容器

原理:

arduino
yaml配置 → API Server → Scheduler分配 → Node运行 → Controller监控

TODO List

  • [ ] kubectl get pods
  • [ ] Deployment
  • [ ] Service
  • [ ] Ingress

二、Kubernetes 的核心思想

K8S 特性 An image

2.1 声明式管理

你只需要告诉 K8s:

yaml
我要 3 个 nginx Pod

K8s 会自动保证:

  • 永远有 3 个
  • 挂了会补
  • 版本升级可回滚

2.2 控制器模式(Controller)

控制器不断对比:

期望状态(Desired State) vs 当前状态(Current State)

不一致就自动修复。

三、Kubernetes 架构

K8S 集群初始化的步骤
软件源安装 ==> 安装软件 ==> 镜像获取 ==> 主节点初始 ==> 工作节点加入集群。

3.1 Master 节点(控制平面)

  • API Server:入口
  • Scheduler:调度 Pod
  • Controller Manager:各种控制器
  • etcd:存储集群数据

3.2 Node 节点(工作节点)

  • kubelet:管理 Pod
  • kube-proxy:网络
  • Container Runtime:docker/containerd

四、K8S 核心概念

  • Pod:最小部署单元
  • Controller:Pod 的管理器
  • Service:Pod 的访问入口
  • Volume:数据卷
  • Namespace:隔离

4.1 Pod

最小运行单元,包含一个或多个容器。

特点:

  • 共享 IP
  • 共享存储
  • 生命周期短暂

4.2 Deployment

管理无状态应用:

  • 副本数
  • 滚动升级
  • 回滚

Deployment → ReplicaSet → Pod

4.3 StatefulSet

管理有状态应用:

  • 固定名称
  • 固定存储
  • 顺序启动

适合:

  • MySQL
  • Redis
  • Kafka

4.4 Service

为 Pod 提供稳定访问地址。

类型:

  • ClusterIP
  • NodePort
  • LoadBalancer

4.5 Ingress

HTTP 网关:

  • 域名转发
  • 路径路由
  • HTTPS

4.6 ConfigMap

存配置文件。

4.7 Secret

存密码、证书。

4.8 PV / PVC

存储抽象:

Pod → PVC → PV → 磁盘

4.9 Namespace

资源隔离。

六、配置与密钥管理

ConfigMap 注入方式:

  • 环境变量
  • 挂载文件

Secret:

  • Base64 存储
  • 可挂载

七、日志与监控

日志:

bash
kubectl logs pod-name

监控:

  • Prometheus
  • Grafana

八、部署流程(实战案例)

8.1 部署 nginx

yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deploy
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx
          ports:
            - containerPort: 80
bash
kubectl apply -f nginx.yaml

九、升级与回滚

bash
kubectl rollout status deployment nginx
kubectl rollout undo deployment nginx

十、安全机制(基础)

  • RBAC 权限控制
  • Namespace 隔离
  • Secret 管理
  • NetworkPolicy

十一、学习路线图

第一阶段:基础

  • Pod
  • Deployment
  • Service
  • Namespace
  • kubectl

第二阶段:进阶

  • Ingress
  • ConfigMap
  • Secret
  • PV/PVC

第三阶段:高级

  • 调度策略
  • 网络插件
  • Helm
  • Operator

十二、心智模型总结

K8s 就是一个:

自动帮你管理容器的操作系统

你只管:

  • 写 YAML
  • 描述目标状态

它负责:

  • 调度
  • 重启
  • 网络
  • 存储
  • 扩缩容

十三、总结

Kubernetes 解决的是:

  • 应用部署
  • 应用治理
  • 应用生命周期管理

掌握 Kubernetes 的关键是:

理解对象关系 + 控制器思想 + 声明式管理

附:对象关系图

对象关系图

  • Ingress → Service → Pod
  • Pod → ConfigMap / Secret
  • Pod → PVC → PV
  • Deployment → ReplicaSet → Pod
  • Pod → Node
  • Pod → Namespace

K8S 原理图

An image

An image

An image

An image

An image

An image

An image

An image

K8S 核心组件

An image
An image

一句话总结每个组件

组件一句话解释
Pod应用运行单元
Node运行 Pod 的机器
Namespace资源隔离空间
Deployment无状态应用控制器
ReplicaSet副本数量管理
StatefulSet有状态应用控制器
Service稳定访问入口
IngressHTTP 网关
ConfigMap配置中心
Secret密码保险箱
PV存储资源
PVC存储申请

相关文档资料