05 2020 档案
摘要:监控线程是在runtime.main执行的时候在系统栈中创建的,监控线程与普通的工作线程区别在于,监控线程不需要绑定p来运行。 监控线程的创建与启动 简单的调用图 先给出个简单的调用图,好心里有数,逐个分析完后做个小结。 主体代码 以下会合并小篇幅且易懂的代码段,个人认为重点的会单独摘出来。 mai
阅读全文
摘要:Linux系统调用 概念:系统调用为用户态进程提供了硬件的抽象接口。并且是用户空间访问内核的唯一手段,除异常和陷入外,它们是内核唯一的合法入口。保证系统的安全和稳定。 调用号:在Linux中,每个系统调用被赋予一个独一无二的系统调用号。当用户空间的进程执行一个系统调用时,会使用调用号指明系统调用。
阅读全文
摘要:本文内容主要分为三部分: main goroutine 的调度运行 非 main goroutine 的退出流程 工作线程的执行流程与调度循环。 main goroutine 的调度运行 runtime·rt0_go中在调用完runtime.newproc创建main goroutine后,就调用了
阅读全文
摘要:概述 本文核心问题是:如何升级应用。 对于Pod的更新有两种策略: 一是删除全部旧Pod之后再创建新Pod。好处是,同一时间只会有一个版本的应用存在;缺点是,应用有一段时间不可用。 二是先创建新Pod,再删除旧Pod。可以一次性创建全部,再删除全部,也可以逐渐创建删除。好处是应用一直可用,缺点是要同
阅读全文
摘要:Downward API 我们已经了解到,使用ConfigMap和Secret向应用传递配置数据,这对于运行前预设的数据是可行的。但是对于那些不能预先知道的,就需要使用Downward API。 Downward API允许我们通过环境变量或者卷的方式向应用传递元数据。可传递的数据包括:Pod的IP
阅读全文
摘要:概述 本文的核心是:如何处理应用程序的数据配置。 配置应用程序可以使用以下几种途径: 向容器传递命令行参数 为每个容器配置环境变量 通过特殊的卷将配置文件挂载到容器中 向容器传递命令行参数 在Kubernetes中定义容器时,镜像的ENTRYPOINT和CMD都可以被覆盖(但是在Docker中,镜像
阅读全文
摘要:接上一篇继续分析一下runtime.newproc方法。 函数签名 newproc函数的签名为 newproc(siz int32, fn funcval) siz是传入的参数大小(不是个数); fn对应的是函数,但并不是函数指针,funcval.fn才是真正指向函数代码的指针。 关键字go 在go
阅读全文
摘要:简介 卷是Pod的一部分,与Pod共享生命周期。它不是独立的Kubernetes对象,因此不能单独创建。 卷提供的存储功能不但可以解决容器重启后数据丢失的问题,还可以使数据在容器间共享。 一些卷的类型: emptyDir:用于存储临时数据的空目录 hostPath:用于将目录从工作节点挂载到pod
阅读全文
摘要:本文所使用的Golang为1.14,dlv为1.4.0。 源代码 开始调试 可以看到最开始是从_rt0_amd64_linux执行,然后直接跳转到_rt0_amd64。执行si进入_rt0_amd64。 继续执行,runtime.rt0_go() /root/go/src/runtime/asm_a
阅读全文
摘要:服务介绍 服务是一种为一组相同功能的pod提供单一不变接入点的资源。当服务存在时,他的IP和端口不会改变。客户端通过IP和端口建立连接,这些连接会被路由到任何一个pod上。如此,客户端不需要知道每个单独提供服务的pod地址,这些pod也可以随时被创建、删除。 服务通过标签选择器决定选择哪些pod。
阅读全文
摘要:本文所使用的golang为1.14,gdb为8.1。 一直以来对于函数调用都仅限于函数调用栈这个概念上,但对于其中的详细结构却了解不多。所以用gdb调试一个简单的例子,一探究竟。 函数调用栈的结构(以下简称栈) 栈包含以下作用: 存储函数返回地址。 保存调用者的rbp。 保存局部变量。 为被调用函数
阅读全文
摘要:存活探针 Kubernetes可以通过存活探针(liveness probe)检查容器是否存活。如果探测失败,Kubernetes将定期执行探针并重新启动容器。 官方文档请见:https://kubernetes.io/docs/tasks/configure pod container/confi
阅读全文
摘要:pod与容器 一个pod是一组紧密相关的容器,它们总是一起运行在同一个节点上,以及同一个LInux命名空间中。 每个pod拥有自己的ip,包含若干个容器。pod分布在不同的节点上。 为什么需要pod 为什么需要pod,而不是直接使用容器: 因为容器被设计为只运行一个进程,由于不能够将多个进程聚集在一
阅读全文
摘要:Kubernetes是一个软件系统,允许你在其上很容易的部署和管理容器话的应用。 Kubernetes的核心功能是:开发者把一个应用列表提交给主节点,Kubernetes会将他们部署到工作节点。应用被部署在哪些节点不用开发者和管理者关心。 Kubernetes帮助开发者聚焦核心功能、帮助运维团队获得
阅读全文
摘要:Dockerfile指令 官方文档地址:https://docs.docker.com/engine/reference/builder/ Dockerfile是一个文本格式的配置文件,其内容包含众多指令,用户可以使用它快速的创建自定义镜像。 部分指令列表 指令|作用|备注 | | FROM|指定基
阅读全文
摘要:端口映射 使用docker run时,可以指定 P(大写)与 p(小写)参数映射端口。 docker run P P(大写)会随机映射一个端口到容器的内部端口 访问 http://127.0.0.1:32771/ 看到nginx欢迎页面。 docker run p p(小写)可以指定端口,可以有以下
阅读全文
摘要:核心概念 镜像:一个只读的模板,类似虚拟机的镜像。 容器:可以理解为镜像的一个运行实例。运行时类似于沙箱,多个容器互相独立。 仓库:存放镜像文件的地方。 镜像 命令表格 命令|解释|选项 | | docker pull NAME[:TAG\|@DIGEST]|拉取镜像 docker push NAM
阅读全文

浙公网安备 33010602011771号