<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title>D day</title><subtitle>Thinking</subtitle><rights>© 2023</rights><updated>2026-04-16T23:40:41Z</updated><generator uri="https://here2say.com">Moonglade v12.8.0-preview</generator><entry><id>be570fdb-3810-48e7-a93c-38b97a183f65</id><title>在M2芯片的macOS下通过虚拟机安装windows并运行K8s</title><updated>2024-04-03T07:20:51Z</updated><published>2024-04-03T07:20:51Z</published><link href="https://here2say.com/post/2024/4/3/add-windows-vm-to-k8s-nodes" /><author><name>Hoyho</name><email>luohaihao@gmail.com</email></author><category term="Default" /><content>在macOS中添加Windows节点用于开发调试
 …</content></entry><entry><id>33e99eeb-ced0-4033-8982-93b3fd852061</id><title>minio 多版本实现解读</title><updated>2023-06-17T09:02:02Z</updated><published>2023-06-17T09:02:02Z</published><link href="https://here2say.com/post/2023/6/17/minio-multi-version" /><author><name>Hoyho</name><email>luohaihao@gmail.com</email></author><category term="Default" /><content>aws s3有多版本的接口，minio支持此特性，为了学习minio EC模式如何实现的多版本，本文稍做解读整理。
 …</content></entry><entry><id>ebf6740c-71ff-420f-a375-d1c5a0226efa</id><title>数据不完整公告</title><updated>2023-04-09T09:16:50Z</updated><published>2023-04-09T09:16:50Z</published><link href="https://here2say.com/post/2023/4/9/announcement-of-data-loss" /><author><name>Hoyho</name><email>luohaihao@gmail.com</email></author><category term="Default" /><content>本站由于某个时间段内未续费，停机一段时间，且数据未备份，导致部分数据缺失，如图片，特此告知
 …</content></entry><entry><id>02706df3-0b85-4998-95b6-4194a55678b2</id><title>Linux下利用strace调试docker的小技能</title><updated>2020-11-29T01:21:12Z</updated><published>2020-11-29T01:21:12Z</published><link href="https://here2say.com/post/2020/11/29/debug-docker-with-linux-strace" /><author><name>Hoyho</name><email>luohaihao@gmail.com</email></author><category term="Default" /><content>strace是Linux上内置的一个工具，能非常方便用来诊断问题以及调试程序等，因为它可记录和展示一条命令究竟是如何进行系统调用（system calls） 以及其中的信号处理情况。
 …</content></entry><entry><id>2730d11a-0f4a-4314-97e3-98b0c5eb59a5</id><title>如何优雅地结束Pod或容器进程</title><updated>2020-07-25T17:19:57Z</updated><published>2020-07-25T17:19:57Z</published><link href="https://here2say.com/post/2020/7/25/how-to-terminate-pod-gracefully" /><author><name>Hoyho</name><email>luohaihao@gmail.com</email></author><category term="Default" /><content>一般来说，我们使用的Linux系统或者Windows又或者macOS在关机的时候都不会直接拔电源，而是点关机按钮或者使用命令行
输入诸如shutdown now此类的命令优雅的关机。那是因为通常不应该直接强行退出应用程序，而是在退出之前通过信号机制给应用进程发送指定的信号.
应用收到信号后进行状态保存，资源回收等操作最后才安全地退出
 …</content></entry><entry><id>5ff93cb3-ec8c-4720-9b36-f7bb654ae0a6</id><title>rpm打包📦从入门🚪到放弃💨</title><updated>2020-07-11T01:18:05Z</updated><published>2020-07-11T01:18:05Z</published><link href="https://here2say.com/post/2020/7/11/learn-rpm-packaging" /><author><name>Hoyho</name><email>luohaihao@gmail.com</email></author><category term="Default" /><content>构建rpm包需要几要素
构建工具（rpmbuild/rpm)
构建环境
规格描述文件xxx.spec
 …</content></entry><entry><id>384f73b8-800f-4ece-8ca2-f9d4673c021a</id><title>kubernetes扩展基础之controller</title><updated>2020-02-11T01:15:27Z</updated><published>2020-02-11T01:15:27Z</published><link href="https://here2say.com/post/2020/2/11/extend-kubernetes-with-controller" /><author><name>Hoyho</name><email>luohaihao@gmail.com</email></author><category term="Default" /><content>controller是kubernetes中非常重要的角色，控制器负责协调不同的状态，相当于大脑的角色。在使用kubernetes的过程
或者在扩展kubernetes做其他开发中基本上都会用到。因此在这里记录下。
很不幸，本站因未及时续费关站一段时间，导致数据丢失，部分图片为找到。。。
 …</content></entry><entry><id>d0a063ac-365f-4eb1-8137-c70d977c0aae</id><title>kubernetes扩容存储卷预研.md</title><updated>2019-09-03T00:17:02Z</updated><published>2019-09-03T00:17:02Z</published><link href="https://here2say.com/post/2019/9/3/investigation-of-volume-expansion" /><author><name>Hoyho</name><email>luohaihao@gmail.com</email></author><category term="Default" /><content>随着越来越来的容器开始跑有状态服务，因此容器存储的需求日渐增加 因此在这里预研容器扩容存储的场景 卷扩容功能现在还是beta状态，但是也可以在在csi driver中实现具体的接口进行实验性使用。
 …</content></entry><entry><id>0ec81abb-fe77-49a4-a75d-818abcbe282f</id><title>Kubernetes存储原理源码剖析-Attach/Detach Controller</title><updated>2019-07-19T16:14:39Z</updated><published>2019-07-19T16:14:39Z</published><link href="https://here2say.com/post/2019/7/19/deep-dive-in-k8s-adcontroller" /><author><name>Hoyho</name><email>luohaihao@gmail.com</email></author><category term="Default" /><content>在上文中，已经通过例子和大量图解解释k8s编排系统中存储资源的调度，数据流等细节。
但是上次的文章主要都是从原理上进行解释，包括in tree volume plugin，external provisioner以及最新的CSI。
他们原理上是相通的，这也是本次要深入挖掘的代码环节。
 …</content></entry><entry><id>496768fa-5bf4-4964-9164-d9d66a2b4a6c</id><title>图解Raft算法和分布式系统网络分区问题</title><updated>2019-05-14T00:13:10Z</updated><published>2019-05-14T00:13:10Z</published><link href="https://here2say.com/post/2019/5/14/understand-raft-by-gif" /><author><name>Hoyho</name><email>luohaihao@gmail.com</email></author><category term="Default" /><content>Raft是分布式系统中常用的基于Paxos的Consensus算法。相比于Paxos，Raft设计采用了较少的状态，并且是一种更简单、更易于理解的算法
 …</content></entry><entry><id>a72e3b20-2960-4e31-9205-228b38eea6aa</id><title>深入了解kubernetes存储细节以及流程解析</title><updated>2019-05-12T00:10:46Z</updated><published>2019-05-12T00:10:46Z</published><link href="https://here2say.com/post/2019/5/12/deep-dive-of-kubernetes-storage" /><author><name>Hoyho</name><email>luohaihao@gmail.com</email></author><category term="Default" /><content>这是Kubernetes存储系列的第二篇文章。上一篇花了一些篇幅解释了Kubernetes中的一些存储概念，最终带出了关键的一点-----动态供应。在编排系统中，存储资源也应该像Pod一样，可以动态规划的，这种方式又称之为动态供应（dynamic provision）。为了实现这个目标，k8s社区提出了好几种方案，今天在此进行探索一番。
 …</content></entry><entry><id>865b9b0d-ba45-40c3-9a9b-9d65ecbc1d2f</id><title>Kubernetes中存储持久化方案--全览基础篇</title><updated>2019-05-06T00:09:10Z</updated><published>2019-05-06T00:09:10Z</published><link href="https://here2say.com/post/2019/5/6/storage-for-kubernetes-overview" /><author><name>Hoyho</name><email>luohaihao@gmail.com</email></author><category term="Default" /><content>很早就想写这篇文章，毕竟已经基于Kubernetes开发有一段时间了，需要做一个阶段性总结。
按照大纲，将会有三篇，
其中第一篇为基础篇章，主要讲解kubernetes中的存储概念以及基本使用
第二遍为中级篇章，只要结合源码讲解kubernetes存储细节以及流程
第三篇为深入csi，手把手教学任意存储厂商编写驱动教程
本篇作为基础会把kubernetes涉及的存储概念交待清楚并配以实战
 …</content></entry><entry><id>e2ecc321-64dc-4d49-9f32-cc263166b004</id><title>使用golang理解Linux namespace（七）-UTS</title><updated>2019-05-05T00:06:33Z</updated><published>2019-05-05T00:06:33Z</published><link href="https://here2say.com/post/2019/5/5/go-and-namespace-part7-uts" /><author><name>Hoyho</name><email>luohaihao@gmail.com</email></author><category term="Default" /><content>上文我们使用了Network这个namespace写了个demo演示了网络空间，把veth一端塞进容器里头，并解决了容器网络问题。目前为止，这个go写的简单容器已经演示了好几个Linux的命名空间的使用。今天的主题是使用UTS namespace。
 …</content></entry><entry><id>4c275dff-3543-4049-a809-f8dd2fd680b0</id><title>使用golang理解Linux namespace（六）-Network</title><updated>2019-05-04T00:05:05Z</updated><published>2019-05-04T00:05:05Z</published><link href="https://here2say.com/post/2019/5/4/go-and-namespace-part6-network" /><author><name>Hoyho</name><email>luohaihao@gmail.com</email></author><category term="Default" /><content>上一回合使用了Mount命名空间，并下载了一个很小的linux文件系统alpline作为镜像，然后整体运行起来之后就是一个简单的linux容器。但是实际操作起来会发现，这个容器的网络并没有设置好。因此这里要介绍下和网络相关的命名空间Network
 …</content></entry><entry><id>15f39ac7-bbdd-46fe-8405-e0b407619dc9</id><title>使用golang理解Linux namespace（五）-Mount</title><updated>2019-04-28T00:02:57Z</updated><published>2019-04-28T00:02:57Z</published><link href="https://here2say.com/post/2019/4/28/go-and-namespace-part5-mount" /><author><name>Hoyho</name><email>luohaihao@gmail.com</email></author><category term="Default" /><content>众所周知，在Linux上使用容器有个天大的好处，就是可以把不同的系统打包运行，虽然你的宿主机可能就是CentOS，但是如果使用了容器技术，你可以同时运行alpline，Debian，Ubuntu等其他的你喜欢的发行版，关键是这些容器共享宿主的资源，因此，每个容器是非常轻量级的，不同虚拟机，这是如何做到的
 …</content></entry><entry><id>63b49113-0d0a-477a-a177-262991208254</id><title>使用golang理解Linux namespace（四）-clone前的初始化</title><updated>2019-04-27T00:01:10Z</updated><published>2019-04-27T00:01:10Z</published><link href="https://here2say.com/post/2019/4/27/go-and-namespace-part4-pre-clone" /><author><name>Hoyho</name><email>luohaihao@gmail.com</email></author><category term="Default" /><content>上回通过uid和gid的映射解决了容器内用户权限问题，使之更像一个容器进程。这次要更进一步，通过理解docker的reexec包解决一种容器中常遇到的一种场景。
 …</content></entry><entry><id>820b4ff1-c834-49cb-a70d-12e1018f84f1</id><title>使用golang理解Linux namespace（三）- User</title><updated>2019-04-25T23:59:39Z</updated><published>2019-04-25T23:59:39Z</published><link href="https://here2say.com/post/2019/4/25/go-and-namespace-part3-user" /><author><name>Hoyho</name><email>luohaihao@gmail.com</email></author><category term="Default" /><content>上一篇讲到，我们同时使用了不同命名空间，包括
Mount, UTS, IPC, PID, Network还有User命名空间。然而，其实还遗留下很多东西，比如缺少初始化，配置等操作。这次会详细讲解其中的问题。
 …</content></entry><entry><id>697bb7ab-d555-43aa-a0ad-ac09ac456760</id><title>使用golang理解Linux namespace（二）- clone()</title><updated>2019-04-24T23:57:38Z</updated><published>2019-04-24T23:57:38Z</published><link href="https://here2say.com/post/2019/4/24/go-and-namespace-part2-clone" /><author><name>Hoyho</name><email>luohaihao@gmail.com</email></author><category term="Default" /><content>unshare只是个简单和namespace有关的的例子，如果要深入了解容器,这就有点不够用了。
因为我们可能还需要更近一步的控制。因此我们会从程序语言层面来探索namespace，而不只是命令，本系列采用golang
 …</content></entry><entry><id>6761e85d-ae16-4504-8569-1d1178c6459c</id><title>使用golang理解Linux namespace（一）- 基础</title><updated>2019-04-22T23:54:00Z</updated><published>2019-04-22T23:54:00Z</published><link href="https://here2say.com/post/2019/4/22/go-and-namespace-part1-basic" /><author><name>Hoyho</name><email>luohaihao@gmail.com</email></author><category term="Default" /><content>在展开学习命名空间发现，大多数教程都基于C语言讲解，其实也很合理，毕竟Linux的历史由来就这样，但是为了结合技术栈更方便理解，这里采用golang来进行讲解
 …</content></entry><entry><id>4dd0c92d-436d-496b-b3d7-8cd9742f52c6</id><title>为Kubernetes贡献的正确姿势</title><updated>2019-03-26T23:51:16Z</updated><published>2019-03-26T23:51:16Z</published><link href="https://here2say.com/post/2019/3/26/how-to-make-contribution-to-kubernetes" /><author><name>Hoyho</name><email>luohaihao@gmail.com</email></author><category term="Default" /><content>Kubernetes是一个大型的项目，其代码全部开源，在github上都可以访问，理论上所有人都可以参与其中。不少人也是有过这样的疑问🤔️我是Kubernetes新手，但也想做贡献。那么该如何入手
 …</content></entry></feed>