K8S是一个开源的容器集群管理系统,可以实现容器集群的自动化部署、自动扩缩容、维护等功能

核心概念

    • Pod
      最小的部署单元,包含一个或多个共享资源的容器。在同一个 Pod 里的几个 Docker 服务/程序,好像被部署在同一台机器上,可以通过 localhost 互相访问,并且可以共用 Pod 里的存储资源

    • Deployment
      定义应用的副本数和更新策略,支持滚动升级和回滚。

    • Service
      为一组 Pod 提供固定的访问入口(IP/DNS)。

    • Namespace
      逻辑隔离集群资源(如开发、测试、生产环境)。

    • Node
      集群中的工作节点(物理机或虚拟机),运行容器化应用。 

K8S 中所有的对象都通过 yaml 来表示

apiVersion: v1                         #ApiServer版本
kind: Deployment                  #资源类型(如 Deployment、Service、Pod)
metadata:                            # 资源的元数据(名称、标签等)
  name: memory-demo         #资源名称
  namespace: mem-example  #资源标签
spec:                                # 资源的具体规格(核心配置)
  containers:                    #定义 Pod 中的容器列表。
  - name: memory-demo-ctr
    image: polinux/stress
    resources:                         #定义容器内存 CPU容量
      limits:
        memory: "200Mi"
      requests:
        memory: "100Mi"
    command: ["stress"]
    args: ["--vm", "1", "--vm-bytes", "150M", "--vm-hang", "1"]
    volumeMounts:
    - name: redis-storage
      mountPath: /data/redis
  volumes:
  - name: redis-storage
    emptyDir: {}
View Code

 YAML 文件核心字段解析

 
字段说明
apiVersion 资源所属的 API 组(如 v1apps/v1batch/v1)。
kind 资源类型(如 PodDeploymentService)。
metadata 资源的名称、标签、注解等元信息。
spec 记录了 Pod 内部所有的资源的详细信息
selector 用于关联其他资源(如 Service 选择 Pod)。
template 定义 Pod 的配置(用于 Deployment、StatefulSet 等)。
containers 容器列表,包含镜像、端口、环境变量等。
ports 容器或 Service 的端口配置。
env 设置容器的环境变量(可直接或从 ConfigMap/Secret 引用)。
 
 

K8S核心架构

image

 K8S是主从架构,Master Node负责核心调度、任务管理,Work Node负责执行用户程序

Master Node核心组件:

kube apiServer: 负责接收所有请求到K8S的请求,比如UI界面 CLI请求,然后API server根据请求,通知其他组件执行响应操作

etcd:K8S存储服务,etcd存储k8s关键配置、用户配置。所有etcd写入都需要通过apiserver

kube scheduler:K8S work node调度器,用户要进行部署时,scheduler选择合适的worknode来部署

Contronller manager:K8S work node的监控器。controller manager负责监控和调整在worknode部署服务的状态,比如用户要求 A 服务部署 2 个副本,那么当其中一个服务挂了的时候,Controller 会马上调整,让 Scheduler 再选择一个 Worker Node 重新部署服务

Work Node核心组件 

Kubelet: work Node监控器以及与Master Node通讯器,可以理解为MasterNode安装在workNode上的“眼线”,它定期向Master Node汇报WorkNode运行服务状态,并根据Master Node指令进行调整。Kubelet上报给msater自己资源的使用情况后,master的调度器Scheduler就能根据每台node机器的实际情况来给各个node分配任务了;

Kube proxy:K8S网络代理,kube-proxy负责work node在k8s网络通讯以及对外部网络流量的负载均衡

Container runtime:work node的运行环境,即安装了容器化所需的软件环境确保容器化程序能够跑起来,比如 Docker Engine运行环境。

 

参考: https://www.cnblogs.com/beatle-go/p/18301030

 

 

posted on 2025-07-27 09:57  colorfulworld  阅读(20)  评论(0)    收藏  举报