Kubernetes 学习2 k8s基础概念
一、架构描述
1、基本架构
2、pod ,有两类
a、自主式pod
自我管理的,创建之后,任然是需要提交给API Server,API Server接受之后然后由调度器调度到指定的 node节点,由node启动此pod,如果有pod中的容器出现故障,需要重启容器时需要kubelet来完成的,但是,如果节点故障了那么这个pod就消失了。没事实现全局调度。
b、控制器管理的pod。
1)、正是控制器的引入和使用,使得在k8s的集群设计中pod完成可以成为有生命周期的对象。由调度器将其调度到集群中的某节点运行以后任务也就被终止了,但是有一些任务比如nginx或tomcat时,他们是作为守护进程运行的这种如果运行为pod容器的话要确保时刻处于运行状态,一旦出现故障我们必须要第一时间发现,要么是取代他要么是重启他。因此k8s提供了pod控制器来时刻监控pod状态。
2)、最早的控制器叫ReplicationController(副本控制器)
a)、时刻保持定义pod的副本数。
b)、还能实现滚动更新,有两个pod副本,先创建一个pod删掉一个老的pod然后再创建一个pod再删除一个老的pod。
3)、新版本后又是新版本控制器叫ReplicaSet(副本集控制器),他不直接使用,他有一个声明式更新的控制器Deployment来负责管理,Deployment控制器还支持二级控制器,叫HPA(HorizontalPodAutoscaler:水平pod自动伸缩控制器)。Deployment只能管理那些无状态的应用。
4)、有状态的应用需要使用新的控制器叫statefulSet(有状态副本集)。
5)、如果我们需要在每一个node上运行一个副本那么叫DaemonSet
6)、如果运行作业叫job
7)、周期化容器作业Ctonjob。
3、服务发现service(注册中心,zookeepr等都算)
a)、k8s为每一组提供同类服务的pod和客户端之间添加了一个中间层,这个中间层就叫service,service只要不删除那么他的名称和地址就是固定的。当访问某一个服务时,不用自动再去发现什么功能,他只需要在配置文件中写明这个服务的地址或者服务的名称就行。而这个服务不但能提供一个稳定的访问入口,并且还能起到调度器的功能,服务能将请求代理到后端的Pod上,一旦pod宕机了那么又会自动新建一个pod和service关联。service关联后端的pod不是通过ip地址或者主机名,而是通过lable,因此只要你创建的pod lable只要是固定的那么都能被service识别,当pod被关联进service后service才会探测pod的ip地址和主机名作为自己调度的后端可用服务器主机对象。在k8s中service不是应用程序也不是组件,而是iptable中的dnet规则。我们创建一个dnat规则说所有到达某地址的都统统被目标地址转换成某某某地址。当前iptables已经把负载均衡的功能交给ipvs来实现,因此如果service背后的同一组pod由很多dnat来实现那么调度效果上可能不尽人意,因此,1. 11版本中已经把iptables规则进一步改成了ipvs规则,也就意味着当创建一个service就相当于生成了一条nat 模型的ipvs规则。因此支持用户自己指定调度算法,因此lvs算是基础性服务。
b)、service作为k8s对象来讲,有service名称,而service的名称也相当于是这个服务的名称,可以被解析,可以把service名直接解析为service IP,名称解析靠dns,我们装完k8s集群后你会发现第一件事就是需要在k8s集群上部署一个dns pod以确保各dns被解析。因此dns pod是基础级的系统架构级的对象。因此他们也被称为集群的附件(AddOns)。
4、附件(AddOns)
a)、DNS。service作为k8s对象来讲,有service名称,而service的名称也相当于是这个服务的名称,可以被解析,可以把service名直接解析为service IP,名称解析靠dns,我们装完k8s集群后你会发现第一件事就是需要在k8s集群上部署一个dns pod以确保各dns被解析。因此dns pod是基础级的系统架构级的对象。因此他们也被称为集群的附件(AddOns)。DNS会动态更新解析记录,当集群中IP或名称有变动时DNS pod中的解析记录也会动态改变。
31分37秒
Kubernetes 学习2 k8s基础概念的更多相关文章
- Elasticserach学习笔记-01基础概念
本文系本人根据官方文档的翻译,能力有限.水平一般,如果对想学习Elasticsearch的朋友有帮助,将是本人的莫大荣幸. 原文出处:https://www.elastic.co/guide/en/e ...
- 【miscellaneous】 GStreamer应用开发手册学习笔记之基础概念介绍
第3章. 基础概念介绍 本章将介绍GStreamer的基本概念. 理解这些概念对于你后续的学习非常重要,因为后续深入的讲解我们都假定你已经完全理解了这些概念. 3.1. 元件(Elements) 元件 ...
- k8s 基础概念和术语
Master k8s里的master指的是集群控制节点,每个k8s集群里需要有一个Master节点来负责整个集群的管理和控制,基本k8s所有控制命令都发给它,它负责整个具体的执行过程,后面执行操作基本 ...
- k8s 基础概念
摘录自k8s中文社区https://www.kubernetes.org.cn/course kubernetes 源自希腊文,意为舵手,k与s之间是8个字母,所以也叫k8s, docker就像一个个 ...
- Docker:学习笔记(1)——基础概念
Docker:学习笔记(1)——基础概念 Docker是什么 软件开发后,我们需要在测试电脑.客户电脑.服务器安装运行,用户计算机的环境各不相同,所以需要进行各自的环境配置,耗时耗力.为了解决这个问题 ...
- OpenFlow Switch学习笔记(一)——基础概念
OpenFlow Switch v1.4.0规范是在2013年10月14号发布,规范涵盖了OpenFlow Switch各个组件的功能定义.Controller与Switch之间的通信协议Open F ...
- K8S基础概念
一.核心概念 1.Node Node作为集群中的工作节点,运行真正的应用程序,在Node上Kubernetes管理的最小运行单元是Pod.Node上运行着Kubernetes的Kubelet.kube ...
- Kubernetes学习之k8s
k8s是什么 云原生 越来越多的开发者不仅使用容器作为应用部署和运行的载体,还积极使用了与容器这个应用载体天生匹配的微服务的架构,并依靠容器调度编排引擎的帮助,以保持对外部的敏捷性,这种容器化的微服务 ...
- zookeeper,及k8s基础概念
1.描述zookeeper集群中leader,follower,observer几种角色 Zookeeper: 分布式系统:是一个硬件或软件组件分布在网络中的不同的计算机之上,彼此间仅通过消息传递进行 ...
随机推荐
- java四则运算----前缀、中缀、后缀表达式
接到一个新需求,需要实现可配置公式,然后按公式实现四则运算. 刚拿到需求,第一反应就是用正则匹配‘(’,‘)’,‘+’,‘-’,‘*’,‘/’,来实现四则运算,感觉不复杂. 然后开始coding.发现 ...
- lvarchar类型对表结构变更影响
informix中lvarchar类型设计用于存储中度长度的字符数据(短的常用varchar类型.特别长的字符可用text类型).其默认长度2048byte,最大长度32739byte,是一种可变长度 ...
- HTML标签类型
标签分类: 一.块标签:块标签是指本身属性为display:block;的元素. 1.默认占一行可以设置宽高, 2.在不设置宽度的情况下,块级元素的宽度是它父级元素内容的宽度 3.在不设置高度的情况下 ...
- git杂记-远程仓库的使用
查看远程仓库:克隆自己的仓库,如不命名则默认远程仓库名字为origin: $ git clone https://github.com/OuFeng/JF_WEB.git Cloning into ' ...
- 转 : Apache启动报错:could not bind to address [::]:443 解决办法
转:Apache启动报错:could not bind to address [::]:443 解决办法 安装Apache服务器的时候,报如下错误: Installing the 'apache' s ...
- Angular面试题二
十一.ng-repeat迭代数组的时候,如果数组中有相同值,会有什么问题,如何解决? 会提示 Duplicates in a repeater are not allowed. 加 track by ...
- 公司网络问题 & Caused by: org.gradle.internal.resource.transport.http.HttpRequestException
问题 公司网络问题,总是无法成功下载库,回到家就可以. Caused by: org.gradle.internal.resource.transport.http.HttpRequestExcept ...
- Idea 快捷键大全【转】
IntelliJ Idea 常用快捷键列表 Ctrl+Shift + Enter,语句完成“!”,否定完成,输入表达式时按 “!”键Ctrl+E,最近的文件Ctrl+Shift+E,最近更改的文件Sh ...
- ShareSDK分享和SMS的使用
使用的是第三方的Mob来实现分享和发送短信的Demo 如图是项目的结构,结合了分享,发送短信,读取短信内容的功能 代码地址:https://github.com/1825492258/MobShare ...
- Redis Windows环境启动
1.找到redis安装目录 2.cmd 目录 3.输入redis-server.exe redis.windows.conf 启动成功