Kubernetes(K8s)
2021-07-21 15:08:05 2 举报
AI智能生成
k8s清单
作者其他创作
大纲/内容
pause容器(共享容器)
共享网络和存储
pod中容器通过localhost和127.0.0.1访问
创建pod后立马创建pause容器,pause容器先于业务相关容器创建
pod中所有的容器相互之间访问,只需要使用localhost
其他组件
CoreDNS
Dashboard
ingress controller
七层代理
Federatrion
跨集群管理
Prometheus
rook
ELK
核心资源清单
RC控制器(replication controller) 副本控制器
创建与预期设定的副本数量相同的pod副本,且永远保持和预期设定的数量一致
relicas=3
pod宕机后,会创建一个新的pod
保证服务的高可用性,自动化运维
replicaset (rs) 副本控制器 取代RC
保持设置一致,和rc一样
区别:选择器的功能不一样
RC只支持单选,RS既支持单选,也支持多选
不支持滚动更新(deployment),通常一起使用
deployment 资源对象--部署对象
层级关系deployment->replicaset->pod
通常用来部署无状态服务
HAP(horizontalPodAutoScale)
支持pod自动扩容
Statefullset组件
解决有状态服务的部署
串行化进行
DaemonSet
保证每个node都有一个pod(除非有污点)
Volume
数据卷挂载
Label
ServiceVIP
虚拟ip
kube-proxy
每个节点都有一个pod
监控pod,一旦pod变化,及时更新service对应的pod的ip地址
负载均衡的实现策略
userspace
kube-proxy做的工作比较多,更新service、监控pod、负载均衡
iptables
linux防火墙
kube-proxy只要做服务的发现,通过iptable实现数据包的转发
ipvs
类似于iptables,区别在于ipvs的策略更加丰富,性能更加优秀
k8s架构(容器化应用)
k8s master 维护集群状态
scheduler(调度器,把请求、指令调度到某个node节点上面,属于资源调度器.调度程序会考虑容器集的资源需求(例如 CPU 或内存)以及集群的运行状况。随后,它会将容器集安排到适当的计算节点)
调度算法
预选调度 遍历所有node,筛选符合要求的
最优调度 采用优选策略
controllers(负责维护管理资源对象.控制器用于查询调度程序,并确保有正确数量的容器集在运行。如果有容器集停止运行,另一个控制器会发现并做出响应。控制器会将服务连接至容器集,以便让请求前往正确的端点。还有一些控制器用于创建帐户和 API 访问令牌。)
replication controller 副本控制器 控制pod的数量,保持和预期的数量一致
node controller 节点控制器 监控,检查node节点的状态
namespace controller 定期清理无效的namespace
service controller 提供负载均衡的代理服务控制器
endpoints controller 维系pod和service的关系
service account controller 安全相关 secret等
persistent volume controller 数据卷控制器
daemon set controller 负责创建维护daemon pod的控制器
deployment controller 管理kind deplyment资源对象
Job controller 一次性任务
Pod Autoscaler controller 扩容
api server (Kubernetes 控制平面的前端,用于处理内部和外部请求。API 服务器会确定请求是否有效,如果有效,则对其进行处理。您可以通过 REST 调用、kubectl 命令行界面或其他命令行工具(例如 kubeadm)来访问 API。)
etcd (配置数据以及有关集群状态的信息位于 etcd(一个键值存储数据库)中)
k8s worker 用来部署服务的节点
kubelet 接收请求指令
kubelet 默认监听四个端口
10250(kubelet API)
10248 健康检查入口
4194 cAdvisor 监听
10255 redonly API
kube-proxy 代理组件-实现pod服务负载均衡的组件,本质上模拟的是反向代理 。
ipvs
iptables
网络插件 插件负责为接口配置和管理IP地址,并且通常提供与IP管理、每个容器的IP分配、以及多主机连接相关的功能
cillium 基于 eBPF 和 XDP 的高性能容器网络方案,提供了 CNI 和 CNM 插件。
calico 基于 BGP 的纯三层的数据中心网络方案(不需要 Overlay),并且与 OpenStack、Kubernetes、AWS、GCE 等 IaaS 和容器平台都有良好的集成。
flannel 基于 Linux TUN/TAP,使用 UDP 封装 IP 包来创建 overlay 网络,并借助 etcd 维护网络的分配情况
Fluented 日志组件
coredns 服务发现,解析域名
pod
用来部署服务的容器,是一个逻辑分组,有自己的ip和主机名
pod是一个进程
一个pod只能在一个物理机上运行
组成
PID进程识别号
IPC进程通信的命名空间,用于进程通讯隔离
UTS命令空间
docker k8s管理容器
k8s集群架构
一个master 多个worker
多个master 多个worker
k8s主要功能
服务编排
负载均衡
弹性伸缩
根据设定指标自动缩放pod副本数量,例如cpu利用率
数据卷 pod间数据共享
服务发现
应用程序健康检查
复制应用程序
滚动更新
资源监控
认证和授权
ABAC
RBAC
收藏
0 条评论
下一页