K8s基础原理
k8s中文社区: https://www.kubernetes.org.cn/
k8s快速入门: http://www.dockone.io/article/932
简介
Kubernetes 简单的说就是一个容器集群编排工具
Kubernetes 是为生产环境而设计的容器调度管理系统,对于负载均衡、 服务发现、高可用、滚动升级、自动伸缩等容器云平台的功能要求有原生支持
一个K8s集群是由分布式存储(etcd)、服务节点(Minion, etcd现在称为Node)和控制节点(Master)构成的。所有的集群状态都保存在etcd中,Master节点上则运行集群的管理控制模块。Node节点是真正运行应用容器的主机节点,在每个Minion节点上都会运行一个Kubelet代理,控制该节点上的容器、镜像和存储卷等。
1. Master(管理节点)核心组件:
- API-Server ---k8s系统对外接口,提供Restful API供客户端和其他组件调用,支持水平扩展
- Scheduler ---负责对资源进行调度,具体负责分配某个请求的Pod到某个节点上
- Controller ---对不同资源的管理器,维护集群的状态,包括故障检测、自动扩展、滚动更新等
- Etcd ---作为K/V数据库,存放集群状态和配置相关数据
2. Node(工作节点)核心组件:
- Kubelet --- 节点上最主要的工作代理,汇报节点状态并实现容器组的生命周期管理
- Kube-proxy --- 代理对抽象应用地址的访问,负责配置正确的服务发现和负载均衡转发规则(通常利用iptables规则)
- Container runtime --- 本地容器引擎 (标准仅支持docker(rkt,cri-o,frakti等其他类型的容器使用CRI封装好的外部命令))
3. Addons(可选组件):
- DNS --- 记录启动的容器组和服务地址,为集群提供dns服务
- CNI --- 容器网络插件必选(Flannel,calio,...)
- WebUI --- web界面
- ...
4. 资源类型:
基础资源:Pod / Service / Namespace / Volume
高级资源控制器(建立在基础资源之上):ReplicaSet / Deployment / Daemonset / statefulSet / Job
- Client通过service-ip(cluster-ip)访问Service
- Service通过Label(Label select)来关联到Pod
- Service也有可能会被删除,所以Client还是要通过DNS解析获得service-ip
- Pod --- 容器运行所在地,也是k8s操作的最小单元。 同一个Pod内的容器默认时共享网络的,并且可以使用同一存储卷
5. Kubernetes Network
K8S的架构图:
K8S组件:
所有评论(0)