了解Kubernetes

简介: 11.1.了解架构K8s分为两部分:  1.Master节点  2.node节点Master节点组件:  1.etcd分布式持久化存储  2.api服务器  3.scheduler  4.controllerNode节点:  1.kubelet  2.kube-proxy  3.容器运行时(docker、rkt及其它)附加组件:  1.Dns服务器  2.仪表板  3.ingress控制器  4.Heapster控制器  5.网络容器接口插件11.1.1.k8s组件分布式特性  k8s系统组件之间通信只能通过API服务器通信,他们之间不会之间进行通信。

11.1.了解架构
K8s分为两部分:
  1.Master节点
  2.node节点
Master节点组件:
  1.etcd分布式持久化存储
  2.api服务器
  3.scheduler
  4.controller
Node节点:
  1.kubelet
  2.kube-proxy
  3.容器运行时(docker、rkt及其它)
附加组件:
  1.Dns服务器
  2.仪表板
  3.ingress控制器
  4.Heapster控制器
  5.网络容器接口插件
11.1.1.k8s组件分布式特性

  k8s系统组件之间通信只能通过API服务器通信,他们之间不会之间进行通信。

  API服务器是和etcd通信的唯一组件,其他组件不会直接和etcd进行通信。
  API服务器与其他组件之间的通信基本上是由其他组件发起的,

//获取Master节点服务健康状况

kubectl get componentstatuses

11.1.2.k8s如何使用etcd
   etcd是一个响应快,分布式,一致的key-value存储。
  是k8s存储集群状态和元数据唯一的地方,具有乐观锁特性,
  
关于乐观锁并发控制

乐观锁并发控制(有时候指乐观锁),是指一段数据包含一个版本数字,而不是锁住该段数据并阻止读写操作。每当更新数据,版本数就会增加。当更新数据时,版本就会增加。当更新数据时,就会检查版本值是否在客户端读取数据时间和提交时间之间被增加过。如果增加过,那么更新会被拒绝,客户端必须重新读取新数据,重新尝试更新。
两个客户端尝试更新同一个数据条目,只有一个会被更新成功。

资源如何存储在etcd中

  flannel操作etcd使用的是v2的API,而kubernetes操作etcd使用的v3的API,所以在下面我们执行etcdctl的时候需要设置ETCDCTL_API环境变量,该变量默认值为2。

  etcd是使用raft一致性算法实现的,是一款分布式的一致性KV存储,主要用于共享配置和服务发现。
  Etcd V2和V3之间的数据结构完全不同,互不兼容。

确保etcd集群一致性
  一致性算法要求大部分节点参与,才能进行到下一个状态,需要有过半的节点参与状态的更新,所以导致etcd的节点必须为奇数个。

11.1.3.API服务器
  Kubernetes API服务器为API对象验证和配置数据,这些对象包含Pod,Service,ReplicationController等等。API Server提供REST操作以及前端到集群的共享状态,所有其它组件可以通过这些共享状态交互。

  1.API提供RESTful API的形式,进行CRUD(增删查改)集群状态

  2.进行校验

  3.处理乐观锁,用于处理并发问题,

  4.认证客户端

    (1)通过认证插件认证客户端

    (2)通过授权插件认证客户端

    (3)通过准入插件验证AND/OR修改资源请求

  API服务器如何通知客户端资源变更

    API服务器不会去创建pod,同时他不会去管理服务的端点,

    它做的是,启动控制器,以及一些其他的组件来监控一键部署的资源变更,是得组件可以再集群元数据变化时候执行任何需要做的任务,

11.1.4.了解调度器
  调度器指定pod运行在哪个集群节点上。

  调度器不会命令选中节点取运行pod,调度器做的就是通过api服务器更新pod的定义。然后api服务器再去通知kubelet该pod已经被调用。当目标节点的kubelet发现该pod被调度到本节点,就会创建并运行pod容器。

  

调度方法:

  1.通过算法过滤所有节点,找到最优节点

  2.查找可用节点

    (1)是否满足对硬件的资源要求

    (2)节点是否资源耗尽

    (3)pod是否要求被调度到指定的节点、

    (4)是否和要求的lable一致

    (5)需求端口是否被占用

    (6)是否有符合要求的存储卷

    (7)是否容忍节点的污染

11.1.5.介绍控制器管理器中运行的控制器
(1)RC控制器

  启动RC资源的控制器叫做Replication管理器。

  RC的操作可以理解为一个无限的循环,每次循环,控制器都会查找符合其pod选择器的pod数量,并且将该数值和期望的复制集数量做比较。

(2)RS控制器

  与RC类似

(3)DaemonSet以及job控制器

  从他们各自资源集中定义pod模板创建pod资源,

(4)Deployment控制器

  Deployment控制器负责使deployment的实际状态与对应的Deployment API对象期望状态同步。

  每次Deployment对象修改后,Deployment控制器会滚动升级到新的版本。通过创建ReplicaSet,然后按照Deployment中定义的策略同时伸缩新、旧RelicaSet,直到旧pod被新的替代。

(5)StatefulSet控制器

  StatefulSet控制器会初始化并管理每个pod实例的持久声明字段。

(6)Node控制器

  Node控制器管理Node资源,描述了集群的工作节点。

(7)Service控制器

  Service控制器就是用来在loadBalancer类型服务被创建或删除,从基础设施服务请求,释放负载均衡器的。

  当Endpoints监听到API服务器中Aervice资源和pod资源发生变化时,会对应修改、创建、删除Endpoints资源。

(8)Endpoint资源控制器

  Service不会直接连接到pod,而是通过一个ip和端口的列表,EedPoint管理器就是监听service和pod的变化,将ip和端口更新endpoint资源。

(9)Namespace控制器

  当收到删除namespace对象的通知时,控制器通过API服务群删除后所有属于该命名空间的资源。

(10)PV控制器

  创建一个持久卷声明时,就找到一个合适的持久卷进行绑定到声明。

11.1.6.kubelet做了什么
了解kubelet的工作内容

  简单来说,就是负责所有运行在工作节点上的全部内容。

  第一个任务,在api服务器中创建一个node资源来注册该节点;第二任务,持续监控api服务器是否把该节点分配给pod;第三任务,启动pod;第四任务,持续监控运行的容器,向api服务器报告他们的状态,事件和资源消耗。

  第五任务,kubelet也是运行容器的存活探针的组件,当探针报错时,他会重启容器;第六任务,当pod从api服务器删除时,kubelet终止容器,并通知服务器pod已经终止。

11.1.7.kube-proxy的作用
  service是一组pod的服务抽象,相当于一组pod的LB,负责将请求分发给对应的pod。service会为这个LB提供一个IP,一般称为cluster IP。
  kube-proxy的作用主要是负责service的实现,具体来说,就是实现了内部从pod到service和外部的从node port向service的访问。

  kube-proxy有两种代理模式,userspace和iptables,目前都是使用iptables。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
7月前
|
存储 运维 Kubernetes
《聊聊分布式》从Paxos到Raft:分布式共识算法的演进与突破
共识算法是分布式系统的“大脑”,确保多节点协同工作。Paxos理论严谨但工程复杂,而Raft以可理解性为核心,通过清晰的角色划分和流程设计,显著降低实现与运维难度,成为etcd、Consul等主流系统的基石,体现了从理论到工程实践的成功演进。
|
9月前
|
存储 人工智能 缓存
如何创建、修改和删除OSS加速器?
OSS加速器通过将热点数据缓存至高性能存储,提升数据访问速度,适用于AI、大数据分析等高并发场景。本文介绍其创建、删除及容量调整操作,助力优化业务性能。
|
4月前
|
人工智能 安全 搜索推荐
你的错题本里藏着金矿,但你却只把它当成了回收站——用AI给大脑做一次深度Debug
把学习比作软件开发,错题就是Bug。大多数人只改答案(打补丁),却忽略了底层的逻辑漏洞。本文分享一套"错题分析AI指令",利用Root Cause Analysis(根因分析)思维,帮助你用AI深度Debug大脑,将每一个错误转化为认知的核心资产。
452 2
|
10月前
|
安全 Linux iOS开发
Tenable Nessus 10.9.0 发布,新增功能简介
Tenable Nessus 10.9.0 (macOS, Linux, Windows) - 漏洞评估解决方案
492 0
 Tenable Nessus 10.9.0 发布,新增功能简介
|
10月前
|
运维 监控 Java
初创代购选单体,千万级平台用微服务:一张表看懂架构选型红线
在跨境电商代购系统年交易额超3.2万亿元的背景下,本文对比微服务与单体架构的技术原理、适用场景及实战案例,结合性能、运维、成本等维度,为企业提供架构选型指南,助力实现高效扩展与稳定运营。
|
数据采集 机器学习/深度学习 人工智能
AI时代的流量博弈:代理IP如何赋能智能应用突围
在AI时代,流量获取成为互联网发展的关键挑战。本文探讨代理IP技术如何助力AI应用突破流量困境。从身份伪装、地域突破到并发采集,代理IP为数据收集与智能应用提供支持。同时,文章分析不同类型代理IP的特点及应用场景,并强调合规使用的重要性。未来,边缘计算和AI将与代理IP深度融合,推动更高效的数据流通模式,助力AI应用实现增长突破。
328 7
AI时代的流量博弈:代理IP如何赋能智能应用突围
|
传感器 安全 Java
《从头开始学java,一天一个知识点》之:循环结构:for与while循环的使用场景
**你是否也经历过这些崩溃瞬间?** - 看了三天教程,连`i++`和`++i`的区别都说不清 - 面试时被追问"`a==b`和`equals()`的区别",大脑突然空白
405 22
|
弹性计算 网络协议 网络安全
阿里云服务器开通1723端口教程配置安全组规则
阿里云服务器安装PPTP需要1723端口,阿里云服务器默认没有开通1723端口,可以在云服务器安全组中开放1723端口
1492 0
阿里云服务器开通1723端口教程配置安全组规则
|
人工智能 自然语言处理 搜索推荐
写歌词的技巧和方法,写歌词的基本要求,歌词创作基本知识及注意事项,创作歌词的要点
我们平常在歌词创作的时候,会有意去注重一些基本原则,也会用心去研究:写歌词的技巧和方法,写歌词的基本要求,歌词创作基本知识及注意事项,创作歌词的要点。近年来,AI人工智能技术终于开始进入音乐歌词创作领域。AI音乐创作技术的出现是科技史上又一次巨大的进步,让音乐人更加轻松地创作出更好的音乐作品。在人工智能创作歌词领域,AI机器人小芝(aixiegeci)是一个快速创作原创歌词的软件应用。它甚至不需要你懂太多的音乐创作歌词知识,一个普通人也可以通过的操作就可以快速完成一首歌词作品的创作。
754 0
写歌词的技巧和方法,写歌词的基本要求,歌词创作基本知识及注意事项,创作歌词的要点
|
小程序 Python