目录

K8S

组件

API Server

  • 所有服务统一入口

  • Scheduler, ReplicaSet, Etcd, Kubelet, Kube proxy 都访问 API SERVER

Scheduler

  • 负责接受任务,选择合适节点分配

  • 集群时,实际只有一台master机器上工作

ETCD

  • 保证集群的高可用

  • 可依赖的分布式键值存储

  • 使用http协议

  • WAL write ahead log

  • 存储需要持久化的重要信息

Kubelet

  • 和 CRI(container runtime interface) 交互

Kube proxy

  • 写入规则至 IPTables 或 IPVS, 实现服务映射访问

Coredns

  • 为 service 实现 name => ip 的解析

Dashboard

  • 为集群提供 B/S 访问体系,展示集群和服务的各种状态

Ingress Control

  • 七层代理,实现负载均衡

Federation

  • 跨集群中心多 k8s 管理功能

Prometheus

  • 提供k8s集群监控能力

ELK

  • 提供 k8s 日志统一分析接入平台

网络解决方案

Flannel

工作

  • 让集群中的不同节点创建的容器都具有全局唯一的虚拟ip地址

  • 并在这些ip地址之间建立覆盖网路,将数据包原封不动的传递到目标容器内

  • 守护进程和工作进程封装/解封网络报文

配置

  • 可分配的ip地址资源段保存到Etcd中

  • 监控Etcd中每个Pod的实际地址,并在内存中维护Pod节点路由表

Pod内部网络通讯

  • 共享同一个Linux协议栈

Pod之间网络通讯

  • 在同一个机器上:网桥直接转发,不经Flannel

  • 不在同一个机器:经过Flannel的封装和转发

Pod到Service

  • LVS

Pod到外网

  • 由机器网卡改写源ip

外网访问Pod

  • 通过Service

POD

k8s的网络模型假设了所有pod都在一个可以直接联通的网络空间中
Pod配置介绍: kubectl explain pod, kubectl explain pod.status

自主式Pod

  • 无人看管,所以不会重启

控制器管理的Pod

ReplicaSet

  • 保证副本数和用户的期望值一样

  • 有容器异常退出,会自动创建新Pod

  • Deployment 自动管理 ReplicaSet

  • 可使用 tag 进行管理

  • 主要用于无状态服务

HPA(Horizontal Pod AutoScale)

  • 根据用户定义的CPU和内存阈值来自动扩缩容

Stateful Set

  • 主要解决有状态服务的问题

  • 支持自己的有状态服务仍需自己实现自定义功能

  • 稳定的持久化存储,即POD重新调度后仍能访问到相同的持久化数据

  • 稳定的网络标识,即POD重新调度后其 PodName 和 HostName 不变,基于 Headless Service 实现

  • 有序部署,有序扩展,部署/扩展时按定义的顺序进行,不会并发进行

  • 有序扩缩容,有序删除

Daemon Set

  • 确保集群中全部或一些(可自行排除)节点上运行指定Pod的副本

  • 每个Node上运行日志手机Daemon,如fluentd, logstash

  • 每个Node上运行监控Daemon,如 Prometheus Node Exporter

Cron Job

  • Job: 只执行一次的任务

  • CronJob: 类似 Crontab

资源控制器

资源分为三个级别

名称空间级别

kube-system为集群系统组件的名称空间,kubectl get pods -n kube-system

  • 工作负载型资源: Pod, ReplicaSet、Deployment、StatelfulSet、DaemonSet、Job、CronJob

  • 服务发现及负载均衡型资源: Service, Ingress、...

  • 配置与存储型资源: Volume(存储卷), CSI(容器存储接口)、...

  • 特殊类型资源: ConfigMap(配置中心), Secret(敏感数据类型)、DownwardAPI(外部信息输出给容器)

集群级别

  • 集群级资源: Namespace, Node, Role, ClusterRole, RoleBinding, ClusterRoleBinding

元数据型

  • 元数据型: HPA, PodTemplate, LimitRange

服务发现

SVC

  • 根据 service ip 访问时使用 round robin(轮询) 来访问每个Pod

构建

存储

有状态服务需要存储数据

调度器

安全

集群认证

鉴权
访问控制

HELM

包安装
部署常用部件

运维