k8s(一)入门

2022-09-22 12:12:53 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

k8s

  • 学习导图
  • Borg架构图
  • 重要插件
  • Pod概念
  • 网络通讯方式

学习导图

Borg架构图

Borg是k8s的前身 Borg架构图

BorgMaster:负责请求分发,整个集群的大脑 BorgLet:真正运行的节点,提供计算 sheduler:调度器,将数据写入到Paxos(键值对数据库)BorgLet监听Paxos数据库,如果发现有自己的请求则处理相应的任务

k8s架构图

api sever:一切服务的访问入口 包括scheduler RC etcd kubectl kubelet等等 scheduler:调度器:负责介绍任务,选择合适的节点进行分配任务 把任务分发到api server,api server负责把数据写入到etcd repliaction controller:副本控制器 维持副本的期望数 node:k8s节点 类似于工人 执行相应的任务 etcd:类似于Berg中的Paxos.可信赖分布式的键值数据库,保存化整个k8s分布式集群中的信息(持久化),一旦重启后分布式集群可以从etcd恢复工作

kubelet:直接跟容器引擎交互实现容器的生命周期 kube proxy:负责写入规则至firewall | IPVS 实现服务映射访问 如pob和pob之间的访问需要通过和负载均衡等等需要通过Kube proxy实现

重要插件

CoreDNS:可以为集群中的SVC创建一个域名ip对应的映射关系,实现负载均衡的一项功能 Dashboard:为k8s提供BS访问功能 INCRESS CONTROLLER:官方只能实现四层代理, INCRESS可以实现7层代理 可以通过主机名 域名进行负载均衡 FEDERATTON:提供一个可以跨集群中心多k8s同一管理功能 PROMETHEUS:提供一个k8s监控能力 ELK:提供k8s 集群日志统一分析介入平台

k8s中的组件都是以port形式运行

Pod概念

  • 自主pod 没有管理器管理,一旦死亡就彻底死亡了没有管理器再去重新船舰
  • 控制器管理的pod 有控制器管理 一旦被删除后 控制器会迅速创建另一个pod 控制器是根绝label select 定位pod

pod 和 container 关系

同一个pod中共享ip和存储 你卷,每个container的端口不能一样 因为端口也共享 同一个pod中的容器可以直接ping通

ReplicationController & ReplicaSet & Deployment

doployment 创建 RC RC 创建 pod HPA 根据Pod的CPU利用率扩容

StatefullSet

pod每一次重启都会被重新分配一个ip ,statefullSet可以保证ip不变 并且statefullset还支持有序的部署pod DaemonSet

job

service

外部可以通过service访问Pod 此时service管理的Pod必须有相关性,比如是同一组label service有自己的ip 和 port 客户端可以直接访问service 从而访问到Pod

网络通讯方式

k8s中Pod相互之间如何通信?以及Pod与外部如何通信? Flannel

通过Flannel可以实现不通主机内

同一个主机内的Pod可以直接ping通(同一个网段)通过Docker0(lo) 不同主机内的Pod需要通过Flannel才能ping通(overlay netowork)

所以同一个集群内的Pod之间是可以ping通的

ETCD之Flannel提供说明 存储管理Flannel可分配的IP地址段资源 (ETCD中记录着那个节点是那个网段 避免集群中ip冲突) 监控ETCD中每个Pod的实际地址 并在内存中简历维护Pod节点路由表 (如找到别放Pod对应的主机ip 这些信息都存储在ETCD中)

Pod网络小结

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/168534.html原文链接:https://javaforall.cn

0 人点赞