程序员延寿指南
1. 术语 ACM: All-Cause Mortality / 全因死亡率 2. 目标 稳健的活得更久 花更少时间工作:见MetaGPT 3. 关键结果 降低66.67%全因死亡率 增加~20年预期寿命 维持多巴胺于中轴 4. 分析 主要参考:对ACM的学术文献相对较多,可以作为主要参考 增加寿命与ACM关系非线性:显然增加寿命与ACM关系是非线性函数,这里假设 ΔLifeSpan=(1/(1+ΔACM)-1)*10(ΔACM为ACM变化值;公式欢迎优化) 变量无法简单叠加:显然各个变量之间并不符合独立同分布假设,变量之间的实际影响也并不明确 存在矛盾观点:所有的证据都有文献/研究对应,但注意到:有些文献之间有显著矛盾的观点(如对于碳水摄入比例的矛盾);有些文献存在较大争议(如认为22点前睡觉会提升43%全因死亡率) 研究仅表达相关:所有文献表明的更多是相关而非因果,在阅读时要考虑文献是否充分证明了因果 ——...
Kubernetes(k8s)7、健康检查详解
一、概述 Kubernetes中的健康检查主要使用 就绪性探针(readinessProbes)和 存活性探针(livenessProbes) 来实现,service即为负载均衡,k8s保证 service 后面的 pod 都可用,是k8s中自愈能力的主要手段,主要基于这两种探测机制,可以实现如下需求: 异常实例自动剔除,并重启新实例 多种类型探针检测,保证异常pod不接入流量 不停机部署,更安全的滚动升级 官方文档:https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/ 1)k8s中的探针种类1、就绪检查(readinessProbe,就绪探针) readiness probes准备就绪检查,通过readiness是否准备接受流量,准备完毕加入到Endpoint,否则剔除。如果容器不提供就绪探针,则默认状态为 Success。 2、存活检查(livenessProbe,存活探针) liveness...
Kubernetes(k8s)6、kube-proxy、Service详解
一、kube-proxy简介 kube-proxy负责为Service提供cluster内部的服务发现和负载均衡,它运行在每个Node计算节点上,负责Pod网络代理, 它会定时从etcd服务获取到service信息来做相应的策略,维护网络规则和四层负载均衡工作。在K8s集群中微服务的负载均衡是由Kube-proxy实现的,它是K8s集群内部的负载均衡器,也是一个分布式代理服务器,在K8s的每个节点上都有一个,这一设计体现了它的伸缩性优势,需要访问服务的节点越多,提供负载均衡能力的Kube-proxy就越多,高可用节点也随之增多。 service是一组pod的服务抽象,相当于一组pod的LB,负责将请求分发给对应的pod。service会为这个LB提供一个IP,一般称为cluster IP。kube-proxy的作用主要是负责service的实现,具体来说,就是实现了内部从pod到service和外部的从node...
Kubernetes(k8s)5、工作负载-Deployment
在 kubernetes 的世界里,Pod 是运行应用的载体。 Pod 是由多个容器组成、是 kubernetes 的最小调度单元、Pod 共享底层资源、由 kubernetes 来管理生命周期。 一般情况下,我们并不直接创建 Pod,而是通过 Deployment 来创建 Pod,由 Deployment 来负责创建、更新、维护其所管理的所有 Pods。 这里注意并不直接管理pod, 而是通过管理replicaset来间接管理pod,即:deployment管理replicaset,replicaset管理pod。所以deployment比replicaset的功能更强大。 一、Deployment介绍与工作原理1.介绍Deployment是一种更高阶的工作负载资源。其可以视作为对RS的再一次升级。其不仅可以部署应用还可以通过声明的方式升级应用。具体地,Deployment被创建后,其内部先创建相应的RS资源。再利用该RS资源创建相应的Pod 2.工作流程图片来源书籍: kubernetes in action 客户端将创建 Deployment 的请求发送给...
Kubernetes(k8s)4、工作负载
参考: Kubernetes 文档 / 工作负载 一、kubernetes中的工作负载1、k8s中的工作负载Kubernetes中内建了很多controller(控制器),这些相当于一个状态机,用来控制Pod的具体状态和行为 Deployment:适合无状态的服务部署 ReplicaSet : 通俗讲副本的管理, 实际应用中建议使用 Deployment 而不是直接使用 ReplicaSet StatefullSet:用来管理有状态应用的工作负载 API 对象。 DaemonSet:一次部署,所有的node节点都会部署,例如一些典型的应用场景:运行集群存储 daemon,例如在每个Node上运行 glusterd、ceph 在每个Node上运行日志收集 daemon,例如 fluentd、 logstash 在每个Node上运行监控 daemon,例如 Prometheus Node Exporter Job:一次性的执行任务 Cronjob:周期性的执行任务 ReplicationController 确保在任何时候都有特定数量的 Pod...
Kubernetes(k8s)3、Pod详解
https://kubernetes.io/zh-cn/docs/concepts/workloads/pods/pod-lifecycle/ 一、简介 在Kubernetes集群中,Pod是所有业务类型的基础,也是K8S管理的最小单位级,它是一个或多个容器的组合。这些容器共享存储、网络和命名空间,以及如何运行的规范。在Pod中,所有容器都被统一安排和调度,并运行在共享的上下文中。对于具体应用而言,Pod是它们的逻辑主机,Pod包含业务相关的多个应用容器。 二、Pod实现机制与设计模式 每个Pod都有一个特殊的被称为”根容器”的Pause 容器(Pause容器,又叫Infrastructure容器)。 Pause容器对应的镜像属于Kubernetes平台的一部分,除了Pause容器,每个Pod还包含一个或者多个紧密相关的用户业务容器。 众所周知,容器之间是通过Namespace隔离的,Pod要想解决上述应用场景,那么就要让Pod里的容器之间高效共享。具体分为两个部分:网络和存储 共享网络 kubernetes的解法是这样的:会在每个Pod里先启动一个infra...
Kubernetes(k8s)2、集群搭建(containerd)
集群搭建参考: Kubernetes 文档 / 入门 / 生产环境 / 使用部署工具安装 Kubernetes / 使用 kubeadm 引导集群 / 安装 kubeadm 流程图 准备开始 一台兼容的 Linux 主机。Kubernetes 项目为基于 Debian 和 Red Hat 的 Linux 发行版以及一些不提供包管理器的发行版提供通用的指令 每台机器 2 GB 或更多的 RAM (如果少于这个数字将会影响你应用的运行内存) 2 CPU 核或更多 集群中的所有机器的网络彼此均能相互连接(公网和内网都可以) 节点之中不可以有重复的主机名、MAC 地址或 product_uuid。请参见这里了解更多详细信息。 开启机器上的某些端口。请参见这里 了解更多详细信息。 禁用交换分区。为了保证 kubelet 正常工作,你 必须 禁用交换分区。 U. 确保每个节点上 MAC 地址和 product_uuid 的唯一性 你可以使用命令 ip link 或 ifconfig -a 来获取网络接口的 MAC...
Kubernetes(k8s)1、基本介绍和功能架构
参考: Kubernetes 文档 / 入门 / K8s架构 1、kubernetes 概述kubernetes,简称 K8s,是用 8 代替 8 个字符“ubernete”而成的缩写。是一个开源 的,用于管理云平台中多个主机上的容器化的应用,Kubernetes 的目标是让部署容器化的 应用简单并且高效(powerful),Kubernetes 提供了应用部署,规划,更新,维护的一种 机制。 传统的应用部署方式是通过插件或脚本来安装应用。这样做的缺点是应用的运行、配 置、管理、所有生存周期将与当前操作系统绑定,这样做并不利于应用的升级更新/回滚等 操作,当然也可以通过创建虚拟机的方式来实现某些功能,但是虚拟机非常重,并不利于 可移植性。 新的方式是通过部署容器方式实现,每个容器之间互相隔离,每个容器有自己的文件 系统 ,容器之间进程不会相互影响,能区分计算资源。相对于虚拟机,容器能快速部署, 由于容器与底层设施、机器文件系统解耦的,所以它能在不同云、不同版本操作系统间进...
Containerd ctr 和 crictl 客户端命令介绍与实战操作(nerdctl )
一、概述 作为接替Docker运行时的Containerd在早在Kubernetes1.7时就能直接与Kubelet集成使用,只是大部分时候我们因熟悉Docker,在部署集群时采用了默认的dockershim。在V1.24起的版本的kubelet就彻底移除了dockershim,改为默认使用Containerd了,当然也可以使用 cri-dockerd 适配器来将 Docker Engine 与 Kubernetes 集成。可以参考官方文档。 二、Containerd 常见命令操作 更换Containerd后,以往我们常用的docker命令也不再使用,取而代之的分别是 crictl 和 ctr 两个命令客户端。 crictl 是遵循CRI接口规范的一个命令行工具,通常用它来检查和管理kubelet节点上的容器运行时和镜像。 ctr 是 containerd 的一个客户端工具。 ctr -v 输出的是 containerd 的版本,crictl -v 输出的是当前 k8s 的版本,从结果显而易见你可以认为 crictl 是用于 k8s 的。 一般来说你某个主机安装了...
Containerd 入门到尝试
Kubernetes v1.24 之前的版本直接集成了 Docker Engine 的一个组件,名为 dockershim [用于调用Docker]。 这种特殊的直接整合不再是 Kubernetes 的一部分 (这次删除被作为 v1.20 发行版本的一部分宣布)。 这意味Kubernetes从版本1.24开始就弃用Docker作为容器运行时,取而代之的是更加轻量级的Containerd。 containerd可用作 Linux 和 Windows...