[K8S] 00 - Kubernetes Arch
两个课程系列:
- Ref: 尚硅谷【k8s】Kubernetes最新最细视频教程 重磅发布 【review, focus on this course】
- Ref: 2020年最新 黑马程序员 - Kubernetes(K8S)超快速入门教程(完整资料)【貌似侧重实践】
Ref: https://github.com/kubernetes/kubernetes/releases【迭代快,可能每三个月更新一个版本】
学习大纲
前世今生
MESOS SWARM 已淘汰 --> K8S
Tweeter,2019已全部k8s化。
知识图谱
基本就是课程目录。
组件说明
[Borg系统] Google prototype of k8s.
Masters (蜂王) <----> Node (工蜂)
冗余机制 类似于Hadoop HTFS。
[k8s] 系统架构
Scheduler不会直接与etcd直接交互。
API server非常繁忙。
What is container orchestration(容器编排系统)?
-
- Service Discovery
- Load Balancing
- Secrets/configuration/storage management
- Health checks
- Auto-[scaling/restart/healing] of containers and nodes.
- Zero-downtime deploys
-
主要组件
- API Server (from k8s)
- Scheduler (from k8s),介绍任务,给节点分配任务。
- Controller (from k8s),陈述式、声明式*。真正的大脑 by control loop。维持副本期望数据。
- ETCD (from CoreOS,是个配置守护进程),键值对数据库,存储k8s集群所有重要信息(持久化)。
- Kubelet,直接跟容器引擎交互实现容器的生命周期管理。
- kube-proxy,负责写入规则至 iptables, ipvs 实现服务映射。
- 其他插件,见下图。
Ref: k8s学习笔记之etcd
-
ETCD 简介
etcd是一个高可用的分布式键值(key-value)数据库。etcd内部采用raft协议作为一致性算法,etcd基于Go语言实现。
etcd是一个服务发现系统,具备以下的特点:
简单:安装配置简单,而且提供了HTTP API进行交互,使用也很简单。
安全:支持SSL证书验证。
快速:根据官方提供的benchmark数据,单实例支持每秒2k+读操作。
可靠:采用raft算法,实现分布式系统数据的可用性和一致性。
-
ETCD 应用场景
用于服务发现,服务发现 (ServiceDiscovery) 要解决的是分布式系统中最常见的问题之一,即在同一个分布式集群中的进程或服务如何才能找到对方并建立连接。
原理:容器隔离机制
容器利用 内核名称空间技术 进行了隔离:
-
- PID
- Network
- Mount
- IPC
- USER
- UTS, 主机名和域名
网络类型:
-
- closed
- bridge
- joined
- host
Pod 内的容器共享:Network, IPC, UTS. 所以,关系紧密。
总结
Master Components
- kube-apisever
- etcd
- kube-scheduler
- kube-controller-manager
- cloud-controller-manager
Node Components
- kubelet
- kube-proxy
- Container Runtime
Addons
- DNI
- CNI (flannel, calico, ...)
- Web UI (Dashboard)
- Container Resource Monitoring
- Cluster-level Logging