1、Kubernetes 概念
kubernetes是一个开源的容器编排工具,目标是为了可以自动部署、扩展、和管理容器化的应用。
2、核心组件
集群结构
Cluster集群:由Master节点与Node节点,共同构成的集群
Master节点:是一个控制平面(controller plane),管理Node节点
Node节点:负责运行化 Pod 应用
控制平面(Control Plane)核心组件
kube-apiserver:集群的入口,所有的操作,都会经过api进行
etcd:分布式键值对存储管理
kube-scheduler:负责将Pod,调度到对应的Node中
kube-controller-manager:管理控制容器,负责维持期望
cloud-controller-manager:与云资源进行交互
节点组件
kubelet:负责管理每个Node节点中 Pod的生命周期
kube-proxy:提供网络代替和复杂均衡
container runtime:底层的容器运行时,如docker、containerd
3、核心概念对象Pod:最小部署单位,里面可以有多个容器共享网络与存储Deployment:管理Pod副本的滚动和升级ReplicaSet:管控Pod数量Service:对Node节点内的Pod提供稳定的访问入口ConfigMap / Secret:管理和配置敏感信息Namespace:命名空间,逻辑分组资源Volume:数据挂载,或者资源存储。Ingress:(HTTP/HTTPS)对外提供访问接口Job/CronJob:提供定时任务支持
4、Kubernetes 工作流程
- 用户首先通过
kubectl / api发送yaml文件。 - 然后通过
kube-apiserver接收请求,并修改对应etcd controller通过kube-apiserver监听并 新增/删除/更新 pod数量,使其向着期望靠近。scheduler发现未绑定的Pod,就将其绑定到对应 Node 节点- 对
Node中的kubelet监听到,有Pod分配给自己,就调用container runtime进行对应的更正。 - 而
service与ingress负责对应的负载均衡 和 访问入口
5、网络和服务发现
- 每个 Pod 都有唯一IP
- Pod可以通过DNS相互访问
- Service可以提供稳定的访问入口
- Kube-proxy 处理 cluster 的负载均衡
6、存储管理
临时存储:Pod生命周期内使用。
持久化缓存:通过 PV / PVC 与 底层存储,共同管理持久化。
其中 PVC 是申请单,PV 可以被类比成一块持久化硬盘。
7、常用高级概念
Horizontal Pod Autoscaler(HPA):Pod 自动扩容
StatefulSet:管理有状态服务,如数据库
DaemonSet:保证每个 Node 上运行一个Pod
Operator:用代码管理复杂应用生命周期,说白了就像一个自动运维的机器人。