Docker主要适用于服务器不多,但是需要用到组件比较多的场景

将程序以及环境打包成容器

一、docker常用命令

安装docker

docker build生成镜像

docker pull 拉取镜像

docker run 启动镜像 通过dockerfile

停止docker

二、docker-compose

docker-compose容器编排技术。适用于多个微服务服务同时线上部署

docker-compose -f docker-compose文件 up -d 启动docker-compose

三、微服务集群架构部署-k8s(通过集群化管理容器)

一个matser

多个node

k8s集群安装好之后kubetcl get nodes  //查看主节点

kubectl get all  //部署所有核心资源列表

deployment:部署pod用

pod:docker容器做了一层封装

service:k8s里面端口映射

k8s批量编排:编排文件

kubectl delete deployment  //删除deployment 

上图的详细解答:

1. 总指挥部:Kubernetes Master(左侧虚线框)

这是集群的“大脑”,负责整个集群的决策、调度和管理。它由四个核心组件组成:

  • kube-apiserver(API 服务器)—— 前台接待/网关

    • 角色:它是整个集群的唯一入口。无论是你(管理员)发出的指令,还是内部组件之间的沟通,都必须经过它。
    • 图中位置:位于 Master 区域的中心,连接着所有其他组件。
    • 作用:它负责验证请求、处理数据,并将其存入 etcd。你可以把它想象成公司的“前台”或“总机”,所有外部请求都要先过它这一关。
  • etcd —— 核心档案室

    • 角色:这是一个高可用的键值数据库,用来保存集群的所有状态数据(比如创建了几个 Pod,每个 Pod 的 IP 是多少,配置是什么)。
    • 图中位置:左侧的圆柱体图标。
    • 作用:它是集群的“唯一真相源”。如果 etcd 里的数据丢了,整个集群的状态就丢了。
  • kube-scheduler(调度器)—— 资源调度员

    • 角色:负责决定把任务分配给哪台机器去执行。
    • 图中位置:左下角。
    • 作用:当你要求创建一个应用时,Scheduler 会观察所有 Worker 节点的资源情况(CPU、内存够不够),然后挑选一台最合适的节点,告诉它:“这个活你来干”。
  • kube-controller-manager(控制器管理器)—— 纪检委/管家

    • 角色:负责维护集群的“期望状态”。
    • 图中位置:左上角。
    • 作用:它里面运行着各种控制器(比如节点控制器、副本控制器)。它会一直盯着集群,确保“实际状态”和“你想要的状态”一致。例如,你要求运行 3 个副本,如果挂了 1 个,它发现后就会立刻下令再启动 1 个,以此来实现自愈能力
    • cloud-controller-manager:图中右上角那个,专门负责和云厂商(如阿里云、AWS)的 API 打交道,管理负载均衡、存储卷等云资源。

2. 执行团队:Kubernetes Nodes(右侧虚线框)

这是集群的“肌肉”,也就是真正运行你业务代码(容器)的地方。

  • kubelet —— 工头/节点代理

    • 角色:运行在每台工作节点上的核心代理。
    • 图中位置:右侧每个节点上的第一个组件。
    • 作用:它直接听命于 Master(具体是 apiserver)。当 Scheduler 决定某个 Pod 在这个节点运行时,Kubelet 就会负责调用底层的容器引擎(如 Docker)来启动容器,并定期向 Master 汇报这个节点的健康状况。
  • kube-proxy —— 网络代理/传令兵

    • 角色:负责节点上的网络通信。
    • 图中位置:右侧每个节点上的第二个组件。
    • 作用:它维护节点上的网络规则。当外部流量访问服务时,kube-proxy 负责把流量转发到正确的 Pod 上,实现负载均衡

3. 它们是如何协同工作的?(工作流)

结合图中的箭头,一个典型的流程是这样的:

  1. 你下达指令:你通过命令行(kubectl)告诉 API Server:“我要部署一个 Nginx 应用”。
  2. 保存状态:API Server 把这个请求写入 etcd 数据库。
  3. 调度任务Scheduler 发现 etcd 里有个新任务还没分配节点,于是它算了一下,决定把它放到 Node 1 上。
  4. 执行任务Kubelet(在 Node 1 上)通过 API Server 得知自己有了新任务,于是它调用底层的容器引擎启动 Nginx 容器。
  5. 网络打通Kube-proxy 配置好网络规则,确保外部能访问到这个 Nginx。
  6. 维持状态Controller Manager 持续监控,发现 Nginx 跑起来了,状态符合预期;如果中间挂了,它会触发重新创建流程。

更多推荐