Kubernetes 架构图
Master-Node 架构
flowchart TB
subgraph Client[客户端]
kubectl[kubectl]
end
subgraph Master[Master节点]
API[API Server]
etcd[etcd]
Scheduler[Scheduler]
Controller[Controller]
end
subgraph Node1[Worker Node 1]
kubelet1[kubelet]
Pod1[Pod]
Pod2[Pod]
end
subgraph Node2[Worker Node 2]
kubelet2[kubelet]
Pod3[Pod]
Pod4[Pod]
end
Client --> API
API --> etcd
API --> Scheduler
API --> Controller
API --> kubelet1
API --> kubelet2
kubelet1 --> Pod1
kubelet1 --> Pod2
kubelet2 --> Pod3
kubelet2 --> Pod4
Master 节点组件
| api |
API Server集群统一入口,处理 REST 请求 |
| storage |
etcd高可用键值存储,保存集群状态 |
| schedule |
Scheduler负责 Pod 调度到合适的节点 |
| build |
Controller Manager运行控制器,维护集群状态 |
Worker 节点组件
| settings_applications |
kubelet与 Master 通信,管理容器生命周期 |
| swap_horiz |
kube-proxy维护网络规则,实现 Service |
| extension |
Container Runtime运行容器(Docker/containerd) |
| layers |
Pod最小部署单元,包含一个或多个容器 |
Pod 创建运行流程
sequenceDiagram
participant U as User
participant K as kubectl
participant A as API Server
participant E as etcd
participant S as Scheduler
participant N as kubelet
participant P as Pod
U->>K: kubectl run nginx
K->>A: POST /api/v1/pods
A->>E: save pod
E-->>A: saved
A-->>K: created
K-->>U: pod/nginx created
A->>S: watch pending pods
S->>S: schedule
S->>A: bind pod to node
A->>N: watch new pod
N->>P: create container
N->>A: update status Running
Service 网络模型
flowchart LR
subgraph Ext[External]
User[User Request]
end
subgraph Cluster[K8s Cluster]
subgraph NodeA[Node A]
Ingress[Ingress]
Service1[Service]
PodA1[Pod]
end
subgraph NodeB[Node B]
PodB1[Pod]
end
end
User --> Ingress
Ingress --> Service1
Service1 --> PodA1
Service1 --> PodB1