Kubernetes概念

本文详细介绍了Kubernetes的核心概念、整体架构、工作原理,包括Master和Node节点职责、Pod、ReplicaSet、Service等关键组件的功能和作用,以及部署、监控和扩展等核心操作。
摘要由CSDN通过智能技术生成


Kubernetes概念

一、Kubernetes简介

Kubernetes提供了面向应用的容器集群部署和管理系统。将重点放在以容器为中心的原语上进行自助运营。
Kubernetes 也提供稳定、兼容的基础(平台),用于构建定制化的workflows 和更高级的自动化任务。

Kubernetes 具备完善的集群管理能力,包括多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和服务发现机制、内建负载均衡器、故障发现和自我修复能力、服务滚动升级和在线扩容、可扩展的资源自动调度机制、多粒度的资源配额管理能力。

Kubernetes 还提供完善的管理工具,涵盖开发、部署测试、运维监控等各个环节。

1、K8S主要功能:

K8s是用来对docker容器进行管理和编排的工具,其是一个基于docker构建的调度服务,提供资源调度、均衡容灾、服务注册、动态扩容等功能套件,其作用如下所示:

(1)数据卷:pod中容器之间数据共享,可以使用数据卷

(2)应用程序健康检查:容器内服务可能发生异常导致服务不可用,可以使用健康检查策略保证应用的健壮性。

(3)复制应用程序实例:控制器维护着pod的副本数量,保证一个pod或者一组同类的pod数量始终可用。

(4)弹性伸缩:根据设定的指标(CPU利用率等)动态的自动缩放pod数

(5)负载均衡:一组pod副本分配一个私有的集群IP地址,负载均衡转发请求到后端容器,在集群内布,其他pod可通过这个Cluster IP访问集群。

(6)滚动更新:更新服务不中断,一次更新一个pod,而不是同时删除整个服务

(7)服务编排:通过文件描述部署服务,使的程序部署更高效。

(8)资源监控:Node节点组件集成cAdvisor资源收集工具,可通过Heapster汇总整个集群节点资源数据,然后存储到InfluxDB时序数据库,再由Grafana展示

(9)提供认证和授权:支持属性访问控制、角色访问控制等认证授权策略

二、kubernetes整体架构

K8S集群包括两个部分:
1、Master 节点 (主节点)主要负责管理和控制
Master节点包含Etcd、Apiserver、controller-manager、Scheduler等组件,作用分别如下:

Etcd:存储状态的数据库,保存了整个集群的状态;
Apiserver:提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制;
controller-manager:负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;
Scheduler:负责资源的调度,按照预定的调度策略将 Pod 调度到相应的机器上。

2、Node 节点(计算节点)
Node节点包含kubelet、kube-proxy等组件,作用分别如下:

kubelet:主要负责监视指派到它所在Node上的Pod,包括创建、修改、监控、删除等;
kube-proxy:负责为Service提供cluster内部的服务发现和负载均衡。
Docker Engine:Docker引擎,负责本机的容器创建和管理工作

三、kubernetes分层架构

Kubernetes设计理念和功能其实就是一个类似Linux的分层架构,各层说明如下:

1、核心层:Kubernetes最核心的功能,对外提供API构建高层的应用,对内提供插件式应用执行环境
2、应用层:部署(无状态应用、有状态应用、批处理任务、集群应用等)和路由(服务发现、DNS解析等)
3、管理层:系统度量(如基础设施、容器和网络的度量),自动化(如自动扩展、动态Provision等)以及策略管理(RBAC、Quota、PSP、NetworkPolicy等)
4、接口层:kubectl命令行工具、客户端SDK以及集群联邦
5、生态系统:在接口层之上的庞大容器集群管理调度的生态系统,可以划分为两个范畴
(1)Kubernetes外部:日志、监控、配置管理、CI、CD、Workflow、FaaS、OTS应用、ChatOps等
(2)Kubernetes内部:CRI、CNI、CVI、镜像仓库、Cloud Provider、集群自身的配置和管理等

四、kubernetes工作原理

k8s的工作原理,原理实现步骤如下:

1、运维人员向 apiserver 发出指令,可以通过API Server的REST API,也可用Kubectl命令行工具。

2、apiserver 响应命令,通过一系列认证授权,把 pod 数据存储到 etcd,创建 deployment 资源并初始化 (期望状态)。

3、controller-manager 通过 list-watch 机制,监测发现新的 deployment,将该资源加入到内部工作队列,发现该资源没有关联的 pod 和 replicaset,启用 deployment controller 创建 replicaset 资源,再启用 replicaset controller 创建 pod。

4、创建完成后,将 deployment,replicaset,pod 资源更新存储到 etcd。

5、scheduler 通过 list-watch 机制,监测发现新的 pod,经过主机过滤、主机打分规则,将 pod 绑定 (binding) 到合适的主机。

6、将绑定结果存储到 etcd。

7、kubelet 每隔 20s (可以自定义) 向 apiserver 通过 NodeName 获取自身 Node 上所要运行的 pod 清单,通过与自己的内部缓存进行比较,新增加 pod。

8、kubelet 调用 Docker API 创建并启动 pod。

9、kube-proxy 为新创建的 pod 注册动态 DNS 到 CoreOS。给 pod 的 service 添加 iptables/ipvs 规则,用于服务发现和负载均衡。

10、controller-manager 通过 control loop(控制循环)将当前 pod 状态与用户所期望的状态做对比,如果当前状态与用户期望状态不同,则 controller 会将 pod 修改为用户期望状态,实在不行会将此 pod 删掉,然后重新创建pod。

五、kubernetes核心概念

基本概念总结:

概念:作用
Cluster: 超大计算机抽象,由节点(node)组成
node: 集群中的计算机
Container: 应用居住和运行在容器中
Pod Kubernetes: 基本调度单位
ReplicaSet: 创建和管理 Pod,支持无状态应用
Service: 应用 Pods 的访问点,屏蔽 IP 寻址和负载均衡
Deployment: 管理 ReplicaSet,支持滚动等高级发布机制
ConfigMap/Secrets: 应用配置,secret 敏感数据配置
DaemonSet: 保证每个节点有且仅有一个 Pod,常见于监控
StatefulSet: 类似 ReplicaSet,但支持有状态应用
Job: 运行一次就结束的任务
CronJob: 周期性运行的任务
Volume: 可装载磁盘文件存储
PersisentVolume/PersistentVolumeClaims: 超大磁盘存储抽象和分配机制
Label/Selector: 资源打标签和定位机制
Namespace: 资源逻辑隔离机制
Readiness Probe: 就绪探针,流量接入 Pod 判断依据
Liveness Probe: 存活探针,是否 kill Pod 的判断依据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值