【k8s】(三)架构及概念

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集群日志统一分析接入平台

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注