K8S知识地图
2024-02-06 11:04:44 1 举报
AI智能生成
登录查看完整内容
为你推荐
查看更多
K8S知识地图是一个全面、系统的学习Kubernetes的资源库。它包含了从基础知识到高级技巧的所有内容,包括Kubernetes的基本概念、架构、组件、部署和管理等。通过这个地图,用户可以快速掌握Kubernetes的核心技能,理解其工作原理,并能够熟练地使用Kubernetes进行应用的部署和管理。此外,K8S知识地图还提供了丰富的实践案例和最佳实践,帮助用户解决实际工作中遇到的问题。无论你是Kubernetes的初学者,还是有一定经验的开发者,都可以从K8S知识地图中获得有价值的信息和启示。
作者其他创作
大纲/内容
容器化
微服务
开发和运维不再是分开的两个团队,而是你中有我,我中有你的一个团队
devOps
在不影响用户使用服务的前提下频繁把新功能发布给用户使用,要做到这点非常难。我们现在两周一个版本,每次上线之后都会给不同的用户造成不同程度的影响
持续交付
让应用程序都运行在云上的解决方案
云原生
pod有独立IP地址,也有自己的hostname,利用namespace进行资源隔离,独立沙箱环境
pod内部封装的是容器,可以一个或多个
pod网络,pod有自己独立的ip地址,pod内部容器之间访问通过localhost
pod是虚拟的资源对象(进程),没有对应实体、物理机、物理网卡与之对应,无法直接对外提供服务访问
在物理机上开启端口,让这个端口和pod的端口进行映射,这样可以通过物理机进行数据包的转发
pod如何对外提供服务
内部是如何访问pod
pod是一个进程,有生命周期:宕机,老版本更新都会创建pod,ip地址发生变化,hostname发生变化,nginx做负载均衡不太合适
访问pod时如何实现负载均衡
pod在生产环境中的访问流程
pod ip:pod的ip地址
node ip:物理机的ip地址
cluster ip:虚拟ip,由k8s抽象出来的service对象,这个service对象为一个VIP资源对象
什么是service资源对象
访问物理机,然后把请求交给service
service和一组pod副本是通过标签选择器进行关联
监听所有pod,更新映射关系,etcd
通过kube-proxy
pod宕机,service如何发现
service和pod都是一个进程,service也不能对外提供服务
service和pod之间可以进行通信,他们的通信属于局域网通信
把请求交给service后,service使用iptalbes,ipvs做数据包的分发
如何负载均衡
Service
服务发现
自动化运维平台
充分利用服务器资源
服务无缝迁移
辅助工具
工作负载型资源 workload
pod
replicaSet
deployment
statefulset
DaemonSet
job
service
ingress
volume
csi容器存储接口
configMap
secret
downwardApi 把外部环境中的信息输出给容器
名称空间级别
namespace
role
集群级别
HPA
LimitRange
元数据型
k8s中的资源:k8s中所有的内容都抽象为资源,资源实例化后叫做对象
这里指的是k8s api的版本,目前基本是V1
apiVersion
这里指的是yaml文件定义的资源类型和橘色如 pod
kind
metadata
元数据对象的名字
metadata.name
元数据对象的命名空间
metadata.namespace
spec
定义容器的名字
spec.containers[].name
必须存在的属性
列子
yaml
资源清单
就是使用容器构建的一套服务集群网络,云由大量的容器构成,k8s就是用来管理云中的容器
云
租用(购买)主机--用户不需要考虑网络,DNS存储,硬件环境方面的问题
用户
提供网络,存储,DNS,这样服务就叫基础设施服务
运营商
iaas基础设施服务
paas平台服务
钉钉
财务管理软件
saas软件即服务
站在用户的角度考虑问题,用户只需要使用云服务器即可
serverless
云架构
整个系统的对外接口,供客户端和其它组件调用,相当于“”营业厅“”
api server
负责集群内容的资源调度,相当于“调度室”
scheduler
K8s通常不会直接创建pod,而是通过controller来管理pod
controller
用于存储所有资源对象的数据,性能大户
etcd
master节点
docker
pod是K8s最基本的操作单元,包含一个或多个紧密相关的容器
同一个pod里容器之间仅需通过localhost即可通信
一个pod中的应用容器共享同一组资源
为每个pod分配一个IP地址,使用pod名作为容器间通信的主机名
在每个node节点都存在一份,在node节点上的资源操作指令由kubelet来执行--有一个物理网卡的IP地址
负责本node节点上的pod创建、修改、监控、删除等全生命周期管理,同时kubelet定时“上报”本node的状态信息到API Server里
kubelet
代理服务,负载均衡
kube-proxy
日志收集服务
fluentd
worker节点
K8s的一种资源对象,能够根据某些指标对在statefulSet、replicaController、replicaSet等集合中的pod数量进行动态伸缩,使运行在上面的服务对指标的变化有一定的自适应能力
PA(Horizontal Pod Autoscaler)
K8s架构原理
pod的基本概念:k8s集群中最小的部署和管理单元
pod的作用:通常情况下,在服务部署的时候用pod来管理一组相关的服务,一个pod中要么部署一个服务,要么部署一组有关的服务
pod核心原理
单选
说到ReplicaSet对象,得先了解ReplicaitonController(简称RC),旧版本的k8s中只有ReplicaitonController对象
ReplicationController副本控制器
可以单选,复合选择
ReplicaSet副本控制器
控制pod副本的数量
replica=3表示创建3个副本,副本控制器将永远保证副本数量为3,当有pod服务宕机时,副本控制器将立马重新创建一个新的pod,始终保证副本数量为3
虽然ReplicaSet可以独立使用,但一般还是建议使用Deployment来自动管理ReplicaSet
什么是副本控制器
replicaSet副本控制器
ReplicaSet副本控制器控制pod副本数量,项目版本的变化如何做到服务更新,ReplicaSet对象不支持滚动更新,deployment对象支持滚动更新
滚动更新--通过deployment新建新的ReplicaSet来实现
服务部署结构模型
deployment部署对象
容器是有生命周期的,一旦宕机,数据即丢失
pod部署,pod有生命周期,操作不当数据会丢失
为了解决有状态服务使用容器化部署的一个问题
stablefulSet保证pod重新建立后,hostname不会发生变化,pod就可以通过hostname来关联数据
statefulSet部署有状态服务
K8s核心组件原理
同一个pod内部的多个容器之间--localhost
pod的地址是与docker0在同一个网段,但docker0网段与宿主机网卡是两个完全不同的ip网段,并且不同的node之间的通信只能通过宿主机的物理网卡进行。将pod的ip和所在node的ip关联起来,通过这个关联让pod可以互相访问。
pod1与pod2不在同一台主机
由docker0网桥直接转发请求至pod2,不需要经过flannel
pod1与pod2在同一台主机
各pod之间的通信
目前基于性能考虑,全部为iptables维护和转发
pod与service之间的通信
让集群中不通节点主机创建的docker容器都具有全局唯一的虚拟IP地址
存储管理flannel可分配的IP地址和资源
监控etcd中每个pod的实际地址,并在内存中建立维护pod节点路由表
etcd和flannel的交互
flannel
网络
K8S
0 条评论
回复 删除
下一页