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存储申请

相关文档资料 ​