k8s是一组服务器集群,K8s所管理的集群节点上的容器
1.1 kubernetes简介
Kubernetes是一个可移植的,可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。它拥有一个庞大且快速增长的生态系统。Kubernetes的服务,支持和工具广泛可用。
Kubernetes这个名字起源于希腊语,意思是舵手或飞行员。Google在2014年开源了Kubernetes项目。Kubernetes将超过15年的Google在大规模生产工作负载方面的经验与社区中最好的想法和实践相结合。
K8s的功能有哪些?
- 自我修复:一旦某一个容器崩溃,能够在1秒中左右迅速启动新的容器
- 弹性伸缩:可以根据需要,自动对集群中正在运行的容器数量进行调整
- 服务发现:服务可以通过自动发现的形式找到它所依赖的服务
- 负载均衡:如果一个服务起动了多个容器,能够自动实现请求的负载均衡
- 版本回退:如果发现新发布的程序版本有问题,可以立即回退到原来的版本
- 存储编排:可以根据容器自身的需求自动创建存储卷
1.3 Kubernetes架构
kubernetes分别有两种角色:master 管理节点 和 worker 工作节点
生产k8s集群图构
1.4 kubernetes概念
Kubernetes 的概念术语
Master:集群控制节点,每个集群需要至少一个master节点负责集群的管控
Node:工作负载节点,由master分配容器到这些node工作节点上,然后node节点上的docker负责容器的运行
Pod:kubernetes的最小控制单元,容器都是运行在pod中的,一个pod中可以有1个或者多个容器
Controller:控制器,通过它来实现对pod的管理,比如启动pod、停止pod、伸缩pod的数量等等
Service:pod对外服务的统一入口,下面可以维护者同一类的多个pod
Label:标签,用于对pod进行分类,同一类pod会拥有相同的标签
NameSpace:命名空间,用来隔离pod的运行环境
1.5 kubernetes组件
一个kubernetes集群主要是由控制节点(master)、工作节点(node)构成,每个节点上都会安装不同的组件。
master:集群的控制平面,负责集群的决策 ( 管理 )
-
API Server:组件负责响应用户的管理请求、进行指挥协调工作,所有服务访问统一入口。
-
Scheduler:负责集群资源的计算调度,按照预定的调度策略将Pod调度到相应的node节点上。
-
Controller manager:负责控制控制管理对应的资源,如副本(replication)和工作节点(node)等。维持副本期望数目。
-
ETCD:负责以K/V的形式保存 Kubernetes Cluster 所有的配置信息和各种资源的状态信息。
node:集群的数据平面,负责为容器提供运行环境 ( 工作 )
-
Kubelet : 负责维护容器的生命周期,即通过控制docker,来创建、更新、销毁容器。
-
KubeProxy : 负责提供集群内部的服务发现和负载均衡。
-
Docker : 负责节点上容器的各种操作。
-
Flannel:维持各个节点上pod之间的通信(k8s集群的扁平化网络组件)。