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-ctrimage: polinux/stressresources: #定义容器内存 CPU容量limits:memory: "200Mi"requests:memory: "100Mi"command: ["stress"]args: ["--vm", "1", "--vm-bytes", "150M", "--vm-hang", "1"]volumeMounts:- name: redis-storagemountPath: /data/redisvolumes:- name: redis-storageemptyDir: {}
YAML 文件核心字段解析
字段 | 说明 |
---|---|
apiVersion |
资源所属的 API 组(如 v1 、apps/v1 、batch/v1 )。 |
kind |
资源类型(如 Pod 、Deployment 、Service )。 |
metadata |
资源的名称、标签、注解等元信息。 |
spec |
记录了 Pod 内部所有的资源的详细信息 |
selector |
用于关联其他资源(如 Service 选择 Pod)。 |
template |
定义 Pod 的配置(用于 Deployment、StatefulSet 等)。 |
containers |
容器列表,包含镜像、端口、环境变量等。 |
ports |
容器或 Service 的端口配置。 |
env |
设置容器的环境变量(可直接或从 ConfigMap/Secret 引用)。 |
K8S核心架构
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