- How to implement resource reclamation in Kubernetes VPA 如何使用 Kubernetes VPA 实现资源动态扩展和回收简述最近一段时间在研究和设计集群资源混合部署方案,以提高资源使用率。这其中一个重要的功能是资源动态扩展和回收。虽然方案是针对通用型集群管理软件,但由于 Kubernetes 目前是事实标准,所以先使用它来检验理论成果。资源动态扩展资源动态扩展按照类型分为两种:纵向和横向。纵向指的是对资源的配置进行扩展,比如增加或减少 CPU 个数和内存大小等。横向扩展则是增加资源的数量,比如服务器个数。笔者研究方案的目的是为了提升集群资源使用率,所以这里单讨论资源纵向扩展。
- Introduction for KataContainers AWS Firecracker 和 KataContainers 初探(二)KataContainers照例先贴官网简介: Kata Containers is an open source project and community working to build a standard implementation of lightweight Virtual Machines (VMs) that feel and perform like containers, but provide the workload isolation and security advantages of VMs.
- Introduction for AWS Firecracker AWS Firecracker 和 KataContainer 初探(一)AWS Firecracker首先贴两段官网对 Firecracker 的定义: Firecracker is an open source virtualization technology that is purpose-built for creating and managing secure, multi-tenant container and function-based services that provide serverless operational models. Firecracker runs workloads in lightweight virtual machines, called microVMs, which combine the security and isolation properties provided by hardware virtualization technology with the speed and flexibility of containers.
- Approach to Kubernetes Resource Sharing 最近在上海参加 Kubecon,通过交流和 session 使我对资源共享和混部有了些新的想法。先零散的记录下来,后续再整理成可行的方案和方法论。
- Thinking about Google Borg Google Borg 的一点思考我最近正在研究和设计公司内部的任务调度和管理系统,所以看了些相关的技术文档和论文,包括 Google Borg、Kubernetes、Firmament 和 Kubernetes Poseidon 等。尤其是这篇《Large-scale cluster management at Google with Borg》令我受益匪浅。下面我就个人对这篇文章的理解,结合实际生产遇到的问题,尝试做些分析与延展。
- Golang Memory Management Part I: Introduce Memory Golang 内存模型原理浅析:(一)内存简介何为内存?先看维基百科的定义: 随机存取存储器(英语:Random Access Memory,缩写:RAM),也叫主存,是与CPU直接交换数据的内部存储器。[1]它可以随时读写(刷新时除外,见下文),而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介。
- Simple Analysis of Go Channel Go Channels 原理浅析Go channels 是 Go 共享数据的首要方式。传统的线程模型,比如在 Java、C++ 或者 Python 中,线程间通信一般是通过共享内存。通常共享数据结构会受锁的保护,线程通过争抢锁来访问数据。但是 Go 提供了一种优雅而独特的方式 channel 来解决线程间的通信问题。
- Linux I/O Models and GO Network Model Part II: Go Netpoller Linux 的 I/O 模型以及 Go 的网络模型实现第二部分:Go netpoller 实现原理分析在 Go 中,所有的 I/O 都是阻塞的。Go 建议用户实现阻塞的 I/O 接口,并通过使用 goroutines 和 channel 实现并发。比如在 net/http 中的 HTTP server,每接受一个 connection,都会启动一个goroutines:
- Linux I/O Models and GO Network Model Part I: Linux I/O Models Linux 的 I/O 模型以及 Go 的网络模型实现第一部分:Linux 的 I/O 模型在 Linux 中有五种基本的 I/O 模型,它们分别是:
- How to View Network Namespace in Docker How to View Network Namespaces in DockerWhen we start a container in Docker: