04. GraphQL in Chaos Mesh 2.0 - 李晨曦提供对 Pod 或者具体容器的错误注入, 包括网络、系统 IO、内核以及一些应用层注入 chaos-mesh.org github.com/chaos-mesh Chaos Mesh 是什么 我们的目标 ● 建立一个完全闭环的云原生混沌工程平台 ● 让混沌工程变得更易用 问题与解决方案 集群中的状态 Chaos Mesh 本身的运行和注入的故障会 给各组件以及目标 Pod 带来各种状态。 XXXChaos PodXXXChaos Status Event Target Pods Status Logs Event k8s 不可直接查询的状态 Chaos Mesh 注入的故障给目标 Pod 带来状态不可通过 k8s API 直接查询。 cluster status Target Pods Mounts Processes ipset iptables Pid Command json path 使用样例 状态查询的障碍2 对于不可通过 kubernetes API 直接查询的状态,往往要通过创建 pod/exec 子资源,运行自定义命 令来获取。它存在的主要问题是查询客户端所需权限过高。 pod/exec 使用样例:列出 daemon pod 上正在运行的进程。 状态查询的障碍3 对于所有的状态查询都存在的一大问题是,各级状态之间很难进行关联查询。 人脑关联查询示例:0 码力 | 30 页 | 1.29 MB | 1 年前3
05. OpenKruise镜像预热实践_王思宇、哈啰出行 • Lyft、Bringg、Arkane Systems、Spectro Cloud、Linkedin OpenKruise 能做什么 为什么说人人都需要镜像预热 第二部分 Pod创建过程 用户的期望: • 极致弹性 • 秒级扩容 • 弹出即可用 实际创建过程: create schedule attach/mount volume cni allotate pull start sidecar pull image for app start app Pod的创建过程,能否继续优化? 默认:重建升级 进阶:原地升级 优势: • 节省了调度的耗时,Pod 的位置、资源都不发生 变化 • 节省了分配网络的耗时,Pod 还使用原有的 IP • 节省了分配、挂载远程盘的耗时,Pod 还使用原 有的 PV(且都是已经在 Node 上挂载好的) • 节省了大部分拉取镜像的耗时,因为 经存在了应用的旧镜像,当拉取新版本镜像时只 需要下载少数的几层 layer • 原地升级 Pod 中某个容器时,其他容器保持正 常运行,网络、存储均不受影响 对极致效率的追求 create schedule attach/mount volume cni allotate start sidecar pull image for app start app Pod原地升级,能否进一步优化? in-place update0 码力 | 28 页 | 5.78 MB | 1 年前3
Golang大规模云原生应用管理实践K8s及云原生生态给 开发者提供的是机制 开发者直接使用K8s的失败故事 • 认知成本高:K8s功能强大却没有统一的使用方式,不得不学习复杂的声明字段和各种奇怪的Annotation; • 稳定性不足:没有设置Pod的QoS等级,导致频繁被驱逐,没有设置反亲和性策略,导致节点流量不均; • 扩展效率低:需要负责安装,升级丰富的云原生插件,无法解决插件的依赖,冲突和资源浪费问题; • 运维成本高:Apiserver rsList, err := dc.getReplicaSetsForDeployment(d) if err != nil { return err } // �������Deployment�Pod podMap, err := dc.getPodMapForDeployment(d, rsList) if err != nil { return err } // rolloutRolling�����Deployment // do nothing } else { Reconcile(rsvc) } } • 声明式资源设计不合理; • Expect state变化导致大范围Pod重启; • Reconcile逻辑混乱不堪,不可测试; • 外部交互模式不匹配; • 声明式资源设计(要什么) • Static • Measurable • Relevant • Attainable0 码力 | 23 页 | 7.70 MB | 1 年前3
3.云原生边云协同AI框架实践}) jc.jobLister = jobInformer.Lister() jc.jobStoreSynced = jobInformer.Informer().HasSynced // 绑定Pod对应的增删改对应事件的回调函数。 podInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{ AddFunc: i++ { go wait.Until(c.worker, time.Second, stopCh) } <-stopCh } 先会通过WaitForNamedCacheSync去等 待Pod和LifelongLearningJob资源对象是 否已经同步到Informer中。 如果已经同步,则会启动指定数量的 worker对LifelongLearningJob进行处理。 【9】Controller核心处理逻辑 error will re-enqueue LifelongLearningJob after the backoff period return forget, fmt.Errorf("failed pod(s) detected for lifelonglearningjob key %q", key) } forget = true } return forget, err } syn0 码力 | 37 页 | 2.36 MB | 1 年前3
02. Service Mesh落地之后_为sidecar注入灵魂 - 周群力找上门 B 云也很好,你通过我的服务可以无缝 使用 A 云和 B 云 • 被 C 锁定 POD container App container container Dapr • 缺失 Service Mesh 能力 • 运维成本飙升 • 稳定性有待验证 • 稳定性更难保证 MOSN POD container App container container Dapr0 码力 | 63 页 | 880.85 KB | 1 年前3
微服务容灾治理⾃动伸缩的时候,Kubernetes默认会在4 个连续的15秒探测周期探测到CPU使⽤率超标(有0.9-1.1的容忍幅度)时,启动增加pod来应对 系统容量不⾜,但这需要分钟级扩容,且当系统资源不够或者pod数达到最⼤设置时不⽣效。此时, 过载保护可以在Kubernetes未来得及扩容或者集群容量不⾜时保护我们的系统不被打到卡死。 但这⾥有个点需要注意,0 码力 | 13 页 | 1.68 MB | 1 年前3
2.1.1 Golang主动式内存缓存的优化探索之路依赖方不可用时,提供有损服务 心得感悟 极致的性能 01. 请求到响应只需要内存中的操作即可完成,因此具备极高的性能 用户请求 请求 内存检索 逻辑处理 快速响应 响应 1000万业务数据,10个pod,4核心16G内存,QPS均值12W 最小的依赖 02. 最小化依赖故障时,对业务服务造成的影响 核心业务数据都缓存在本机内存中 依赖出现故障,我们的服务依然坚挺 框架优势 03.0 码力 | 48 页 | 6.06 MB | 1 年前3
1.6 resource scheduling & container technology for financial service_yujunKubernetes 仅仅是实现了一个极其简单的调度器。鼓励开发者编写自己的调度器注册进框架 ② 调度策略分为两大类:Predicates和Priorities,其中Predicates判断是否将pod调度到特定 minion(host)上运行,而Priorities则是在Predicates的计算基础上,通过积分Score方式,决定调 度量。 ③ Predicates包括:PodFit0 码力 | 21 页 | 27.20 MB | 1 年前3
Casdoor · An Open Source UI-first Identity Access Management (IAM) / Single-Sign-On (SSO) platform supporting OAuth 2.0, OIDC, SAML and CAScom:casdoor/casdoor-react-native-example.git cd casdoor-react-native-example yarn install cd ios/ pod install cd casdoor-react-native-example react-native start react-native run-ios Make sure to turn0 码力 | 825 页 | 58.31 MB | 1 年前3
共 9 条
- 1













