0x01 架构

0x02 APIServer
所有服务访问的统一入口
0x03 Replication Controller(RC)
定义一个期望的场景,即声明某种Pod的副本数量在任意时刻都符合某个预期值,故RC包含如下部分的定义:
@ Pod期待的副本数量;
@ 用于筛选目标Pod的Label Selector;
@ 当Pod的副本数量小于预期数量时,用于创建新Pod的Pod模板(template)。
apiVersion:v1
kind: ReplicationController
metadata:
name:frontend
spec:
replicas:1
selector:
tier:frontend
template:
metadata:
labels:
app: app-demo
tier: frontend
spec:
containers:
- name: tomcat-demo
image: tomcat
imagePullPolicy:IfNotPresent
env:
- name: GET_HOST_FROM
value: dns
ports:
- containerPort: 80
这是一个完整的RC定义的例子,即确保拥有tier=frontend标签的这个Pod(运行Tomcat容器)在整个Kubernetes集群中始终只有一个副本。
此外,在运行时,我们可以通过修改RC的副本数量,来实现Pod的动态缩放(Scaling),这可以通过执行kubectl scale命令来一键完成:
kubectl scale rc redis-slave –replicas=3
需要注意的是,删除RC并不会影响通过该RC已创建好的Pod。为了删除所有Pod,可以设置replicas的值为0,然后更新该RC。另外,kubectl提供了stop和delete命令来一次性删除RC和RC控制的全部Pod。
在新版本中使用ReplicaSet和该功能一致。
0x04 Scheduler
负责接受任务,选择合适的节点分配任务
0x05 etcd
键值对数据库,存储K8S集群的持久化信息。
0x06 kube-proxy
写入规则至 IPTABLES、 IPVS实现服务映射访问
0x07 kubelet
直接跟容器引擎交互实现容器的生命周期管理
0x08 其他插件
CoreDNS:为集群中的SVC创建一个域名解析
DashBoard:提供B/S访问的仪表盘
IngressController:官方只能实现四层代理,INGRESS可以实现七层代理
Fedetation:提供一个可以跨集群中心多K8S统一管理功能
Prometheus:提供一个K8S集群的监控能力
ELK:提供K8S集群日志统一分析接入平台