k8s概述
Kubernetes 使你在数以千计的电脑节点上运行软件时就像所有这些节点是单个大节点一样。它将底层基础设施抽象,这样做同时简化了应用的开发、部署, 以及对开发和运维团队的管理。
Kubernetes 的核心功能
整个系统由一个主节点和若干个工作节点组成。开发者把一个应用列表提交到主节点, Kubemetes 会将它们部署到集群的工作节点。组件被部署在哪个节点对于开发者和系统管理员来说都不用关心。
Kubemetes 可以被当作集群的一个操作系统来看待,它降低了开发者不得不在他们的应用里实现一些和基础设施相关服务心智负担。他们现在依赖于Kubemetes 来提供这些服务,包括服务发现、扩容、负载均衡、自恢复,甚至领导者的选举。应用程序开发者因此能集中精力实现应用本身的功能而不用浪费时间思索怎样集成应用与基础设施。
Kubernetes 集群架构
在硬件级别, 一个Kubernetes 集群由很多节点组成,这些节点被分成两种类型,主节点,它承载着Kubernetes 控制和管理整个集群系统的控制面板。而工作节点,它们运行用户实际部署的应用。
控制面板
控制面板用于控制集群并使它工作。它包含多个组件,组件可以运行在单个主节点上或者通过副本分别部署在多个主节点以确保高可用性。
Kubernetes API 服务器,你和其他控制面板组件都要和它通信;提供了 HTTP Rest 接口的关键服务进程,是 Kubernetes 里所有资源的增、删、改、查等操作的唯一入口,也是集群控制入口进程。
Scheculer ,它调度你的应用(为应用的每个可部署组件分配一个工作节点〕。Controller Manager ,它执行集群级别的功能,如复制组件、持续跟踪工作节点、处理节点失败等;是 Kubernetes 里所有资源对象的自动化控制中心,可以理解为资源对象的管家。etcd ,一个可靠的分布式数据存储,它能持久化存储集群配置;Master 节点上往往还启动了一个 etcd server 进程,因为 Kubernetes 里的所有资源对象的数据全部是保存在 etcd 中的。
Kubernetes 基本概念和术语
Kubernetes中的大部分概念如Node、Pod、Replication Controller、Server、Deploymeng、Job、DaemonSet 等都可以看作一种资源对象,几乎所有的资源对象都可以通过 Kubernetes提供的 kubectl 工具执行增、删、改、查等操作,并将其保存在 etcd 中持久化存储。从这个角度来看,Kubernets 其实是一个高度自动化的资源控制系统,它通过跟踪对比 etcd 存储里保存的资源期望状态与当前环境中的实际资源状态的差异来实现自动控制和自动纠错的高级功能。
Pod: 是kubernetes最重要也是最基本的概念。每个Pod都会包含一个 “根容器”,还会包含一个或者多个紧密相连的业务容器。
Kubernetes为每个Pod都分配了唯一的IP地址,称之为PodIP,一个Pod里的多个容器共享PodIP地址。要求底层网络支持集群内任意两个Pod之间的直接通信,通常采用虚拟二层网络技术来实现(Flannel)。