当前位置:网站首页>Kubernetes理论基础
Kubernetes理论基础
2022-06-28 07:36:00 【有勇气的牛排】
1 介绍
高可用集群副本数据最好是 >= 3 奇数个
2 组件介绍
k8s架构
2.1 核心组件
2.1.1 api server
所有服务访问统一入口
2.1.2 ControllerManager
维护副本的期望数
2.1.3 Scheduler
负责介绍任务,选择合适的节点进行分配任务
2.1.4 etcd
键值对数据库,存储K8S集群的所有重要信息(持久化)
- ETCD
etcd 的官方将它定位程一个可信赖的分布式键值存储服务,它能够为整个分布式集群存储一些关键服务数据,协助分布式集群的正藏运转。
架构图
AWL:日志
Store:持久化写入本地磁盘
2.1.5 Kubelet
直接跟容器交互实现容器的生命周期管理
2.1.6 Kube-proxy
负责写入规则至IPTABELS、IPVS,实现服务映射访问的
2.2. 其他插件
2.2.1 CoreDNS
可以为集群中的SVC创建一个域名、IP对应关系解析
2.2.2 dashboard
给K8S集群提供一个B/S结构的访问体系
2.2.3 Ingress Controller
官方只能实现四层代理,Ingress可以实现7层
2.2.4 fedetation
提供一个可以跨集群中心多K8S统一管理功能
2.2.5 prometheus
提供一个K8S集群监控能力
2.2.6 ELK
提供K8S集群日志统一分析介入平台
3 Pod
3.1 Pod概念
- 自主式Pod
- 控制器管理的Pod
注:官方不是安上面的分类的
3.1.1 Pod服务类型
HPA
Horizontal Pod Autoscaling仅适用于Deployment和ReplicaSet,在V1版本中仅支持根据Pod的CPU利用率扩缩容,在vlalpha版本中,支持根据内存和用户自定义的metric扩缩容。
StatefulSet
是为了解决有状态服务的问题(对应Deployments和ReplicaSets是为了无状态服务而假设),其场景包括:
- 稳定的持久化存储:即Pod重新调度后还是能访问到相同的持久化数据,基于PVC来实现。
- 稳定的网络标志,即Pod重新调度后其PodName和HostName不变,基于Headless Service(即没有Cluster Ip的Service)来实现。
- 有序部署,有序扩展,即Pod是有顺序的,在部署或者扩展的时候要依据定义的顺序依次进行(即从0到N-1,在下一个运行之前所有的Pod必须都是Running和Read状态),基于init containers来实现
- 有序收缩,有序删除(即从N-1到0)
DaemonSet
确保全部(或者一些)Node上运行一个Pod的副本。当有Node加入集群时,也会为他们新增一个Pod。当有Node从集群移除时,这些Pod也会被回收。删除DaemonSet将会删除它创建的所有Pod
使用DaemonSet的一些典型用法
- 运行集群存储daemon,例如在每个Node上运行glusterd、ceph
- 在每个Node上运行日志手机daemon,例如fluentd、logstash
- 在每个Node上运行监控daemon,例如Prometheus Node Exporter
Job
负责批处理任务,即执行一次任务,它保证批处理任务的一个或多个Pod成功结束
Cron Job
管理基于时间的Jod,即
- 在给定的时间点只运行一次
- 周期性地在给定的时间点运行
3.1.2 Pod 服务发现
4 网络通讯方式
Kubernetes的网络模型假定了所有的Pod都在一个可以直接连通的扁平的网络空间中,这在GCE(Google Comute Engine)里面是现成的网络模型,Kubernetes假定这个网络已经存在。而在私有云里面搭建Kubernetes集群,就不能假定这个网络已经存在了。我们需要自己实现这个网络假设,将不同节点上的Docker容器之间的互相访问先打通,然后运行Kubernetes。
- 同一个Pod内的多个容器之间:lo
- 各Pod之间的通讯:Overlay Network
- Pod与Service之间通讯:各节点的Iptables规则
Flannel是CoreOS团队针对Kubernetes设计的一个网络规划服务,简单来说,它的功能是让集群中的不同节点主机创建的Docker容器都具有全集群唯一的虚拟IP地址。而且它还能在这些IP地址之间建立一个覆盖网络(Overlay Network),通过这个覆盖网络,将数据包原封不动地传递到目标容器内。
etcd之Flannel提供说明
- 存储管理Flannel可分配的IP地址段资源
- 监控etcd中每个Pod的实际地址,并在内存中建立维护Pod节点路由表
学习地址:
https://www.bilibili.com/video/BV1w4411y7Go
边栏推荐
- R语言绘制 ggplot2 季节性图
- Redis one master multi slave cluster setup
- Is it safe to open an account on Dongfang fortune
- R language drawing ggplot2 seasonal graph
- Static resource compression reduces bandwidth pressure and increases access speed
- DBeaver 22.1.1 发布,可视化数据库管理平台
- Cloud native (to be updated)
- vite2.9 中指定路径别名
- NDK 交叉编译
- XML序列化向后兼容
猜你喜欢
What is EC blower fan?
What should I do if the version is incompatible with the jar package conflict?
Kubelet garbage collection (exiting containers and unused images) source code analysis
es6箭头函数中return的用法
看似简单的光耦电路,实际使用中应该注意些什么?
Static resource compression reduces bandwidth pressure and increases access speed
ACM笔记
Sentinel mechanism of redis cluster
ABAP skill tree
Section 5: zynq interrupt
随机推荐
R 和 rgl 绘制 3D 结
Rediscluster cluster mode capacity expansion node
HJ21 简单密码
Uninstall and reinstall the latest version of MySQL database. The test is valid
vite2.9 中指定路径别名
pip 更新到最新的版本
R 语言 ggmap 可视化集群
goland IDE和delve调试位于kubernetes集群中的go程序
Understanding of OPC protocol
扩展Prometheus的解决方案thanos的简介和几个月使用心得
Analyze 5 indicators of NFT project
R 语言 Hitters 数据分析
HJ成绩排序
R language hitters data analysis
linux下修改mysql用户名root
Implementation of commit message standardized control in large projects
kubernetes删除pod的流程的源码简析
Can okcc call centers work without computers?
Design and practice of vivo sensitive word matching system
Is it safe to open an account on Dongfang fortune