问题背景

传统的 kubernetes apiserver 请求访问链路为客户端直连 apiserver,为了做 apiserver 高可用,通常我们会给 apiserver 前端再套一层4层或7层代理做多个 apiserver 实例的负载均衡。

在我们的场景下,使用了 istio 的 ingressgateway 作为 client -> apiserver 这条链路中的7层代理。链路变成了 client -> ingressgateway -> apiserver ,gateway 暴露 80 端口供客户端访问, 同时通过 istio virtualService + destinationRule 规则配置 gateway 能通过域名访问到 apiserver 6443 端口,从而实现流量路由。

阅读更多

本文引自这里

该文章刊登在《腾讯云容器团队》博客上,由于网站很久不更新,担心这些好文章之后会被下架,所以做下记录。

前言

本文主要通过深入学习k8s attach/detach controller源码,了解现网案例发现的attach/detach controller bug发生的原委,并给出解决方案。

看完本文你也将学习到:

  • attach/detach controller的主要数据结构有哪些,保存什么数据,数据从哪来,到哪去等等;
  • k8s attach/detach volume的详细流程,如何判断volume是否需要attach/detach,attach/detach controller和kubelet(volume manager)如何协同工作等等。

阅读更多

Linux 系统的一般的文件系统名称类似于 /dev/sda1/dev/hda1,但是今天在进行系统维护的时候,利用 df -h 命令敲出了 /dev/mapper/VolGroup-lv_root/dev/mapper/Volume-lv_home 两个文件系统名,不解,在网上查找资料后,在此浅谈 /dev/mapper 目录。

阅读更多

Istio 中的 CR 资源 VirtualServiceGateway 都存在 hosts 属性,而且 VirtualService.spec.http.route. destination.host 也存在 host 字段,这些字段容易让人混淆,特以此做一解释和区分。

VirtualService

hosts

VirtualService 定义了一系列针对指定服务的流量路由规则。每个路由规则都针对特定协议的匹配规则。如果流量符合这些特征,就会根据规则发送到服务注册表中的目标服务(或者目标服务的子集或版本)。

阅读更多

可以通过 mount --bind 命令来将两个目录连接起来,mount --bind 命令是将前一个目录挂载到后一个目录上,所有对后一个目录的访问其实都是对前一个目录的访问,如下所示:

阅读更多

目标

每当有新的 git tag 推送到 GitHub 时执行对应工作流; 工作流中构建 Docker 镜像并推送到 Docker Hub

Github Actions 介绍

Automate, customize, and execute your software development workflows right in your repository with GitHub Actions. You can discover, create, and share actions to perform any job you’d like, including CI/CD, and combine actions in a completely customized workflow.

通过 GitHub Actions 自动化执行自定义软件开发工作流. 可以在 Github Actions 市场 发现, 创建及共享任何你喜欢的Job.

阅读更多

什么是CPU上下文

Linux是一个多任务操作系统,它支持远大于CPU核心数的任务同时进行。当然,这些任务并不是真的同时在运行,而是因为系统在很短的时间内,将CPU轮流分配给它们,造成多任务同时运行的错觉。每个任务在运行前,CPU都需要知道任务从哪来加载,又从哪里开始运行,也就是说,需要事先帮它们设置好CPU寄存器和程序计数器( Program Counter,PC )。

CPU寄存器:是CPU内置的容量小、但速度快的内存,用来临时存放指令执行运行过程中的操作数和中间(最终)的操作结果。

程序计数器:是用来存储CPU正在运行的指令位置、或者即将执行的下一条指令位置。

CPU寄存器和程序计数器是CPU运行任何任务前,必须依赖的环境,也被称作CPU上下文。

阅读更多

Git 每次提交代码,都要写 Commit message(提交说明),否则就不允许提交。

1
$ git commit -m "hello world"

上面代码的-m参数,就是用来指定 commit mesage 的。

如果一行不够,可以只执行git commit,就会跳出文本编辑器,让你写多行。

1
$ git commit

阅读更多