当前位置:网站首页>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
边栏推荐
- ACM notes
- 7-1 understand everything
- golang gin框架进行分块传输
- Mysql8.0和Mysql5.0访问jdbc连接
- Uninstall and reinstall the latest version of MySQL database. The test is valid
- What is EC blower fan?
- Analyze 5 indicators of NFT project
- Jetpack - defects of livedata component and Countermeasures
- Alibaba cloud server creates snapshots and rolls back disks
- Design and practice of vivo sensitive word matching system
猜你喜欢

Modifying MySQL port number under Linux

Design and practice of vivo sensitive word matching system

Solving the longest palindrome substring by dynamic programming

ABAP 技能树

卸载重装最新版mysql数据库亲测有效

Leetcode+ 66 - 70 high precision, two sub topics

安全培训是员工最大的福利!2022新员工入职安全培训全员篇

SQL statement optimization steps (1)

Section VII starting principle and configuration of zynq

Modifying MySQL user name root under Linux
随机推荐
看似简单的光耦电路,实际使用中应该注意些什么?
HJ成绩排序
MMR rearrangement (similarity is calculated by editing distance and repeatability)
Ice - resources
Path alias specified in vite2.9
Recommended system series (Lecture 5): Optimization Practice of sorting model
Is it safe to open an account on Dongfang fortune
R 语言 ggmap 可视化集群
Source code analysis of kubernetes' process of deleting pod
同花顺网上开户安全吗
Resizing node of rediscluster cluster cluster mode
Self discipline challenge 30 days
kubernetes删除pod的流程的源码简析
Alibaba cloud server creates snapshots and rolls back disks
异或的应用。(提取出数字中最右侧的1,面试中经常用的到)
ES6 use of return in arrow function
Design and practice of vivo sensitive word matching system
推荐系统系列精讲(第五讲): 排序模型的调优实践
ACM笔记
XML序列化向后兼容