<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Containerd on 我的博客</title><link>https://hugo.kkun.top/categories/containerd/</link><description>Recent content from 我的博客</description><generator>Hugo</generator><language>zh-cn</language><managingEditor>your@email.com (你的名字)</managingEditor><webMaster>your@email.com (你的名字)</webMaster><copyright>本博客所有文章除特别声明外，均采用 BY-NC-SA 许可协议。转载请注明出处！</copyright><lastBuildDate>Mon, 10 Apr 2023 14:38:51 +0000</lastBuildDate><atom:link href="https://hugo.kkun.top/categories/containerd/index.xml" rel="self" type="application/rss+xml"/><item><title>使用 Linux 网络虚拟化技术探究容器网络原理</title><link>https://hugo.kkun.top/post/%E4%BD%BF%E7%94%A8-linux-%E7%BD%91%E7%BB%9C%E8%99%9A%E6%8B%9F%E5%8C%96%E6%8A%80%E6%9C%AF%E6%8E%A2%E7%A9%B6%E5%AE%B9%E5%99%A8%E7%BD%91%E7%BB%9C%E5%8E%9F%E7%90%86/</link><pubDate>Mon, 10 Apr 2023 14:38:51 +0000</pubDate><author>your@email.com (你的名字)</author><guid>https://hugo.kkun.top/post/%E4%BD%BF%E7%94%A8-linux-%E7%BD%91%E7%BB%9C%E8%99%9A%E6%8B%9F%E5%8C%96%E6%8A%80%E6%9C%AF%E6%8E%A2%E7%A9%B6%E5%AE%B9%E5%99%A8%E7%BD%91%E7%BB%9C%E5%8E%9F%E7%90%86/</guid><description>
<![CDATA[<h1>使用 Linux 网络虚拟化技术探究容器网络原理</h1><p>作者：你的名字（your@email.com）</p>
        
          <p>在 <a href="https://blog.kkun.site/2023/04/10/%E4%BD%BF%E7%94%A8%20Go%20%E5%92%8C%20Linux%20Kernel%20%E6%8A%80%E6%9C%AF%E6%8E%A2%E7%A9%B6%E5%AE%B9%E5%99%A8%E5%8C%96%E5%8E%9F%E7%90%86/">使用 Go 和 Linux Kernel 技术探究容器化原理</a> 一文中，我们揭秘了容器的本质就是一个特殊的进程，特殊在为其创建了 NameSpace 隔离运行环境，并用 Cgroups 为其控制资源开销。</p>
<p>借助这两个底层技术，我们可以成功实现应用容器化，但如何让多个容器在网络环境不互相干扰的情况下还能互相通信，让容器可以访问外部网络，让外部网络可以访问特定容器等等的这些容器的<strong>网络问题</strong>还得再利用一些 <strong>Linux 网络虚拟化技术</strong>。</p>
        
        <hr><p>本文2023-04-10首发于<a href='https://hugo.kkun.top/'>我的博客</a>，最后修改于2023-04-10</p>]]></description><category>Linux</category><category>containerd</category></item><item><title>keepalived检测api心跳脚本</title><link>https://hugo.kkun.top/post/keepalived%E6%A3%80%E6%B5%8Bapi%E5%BF%83%E8%B7%B3%E8%84%9A%E6%9C%AC/</link><pubDate>Mon, 10 Apr 2023 14:38:51 +0000</pubDate><author>your@email.com (你的名字)</author><guid>https://hugo.kkun.top/post/keepalived%E6%A3%80%E6%B5%8Bapi%E5%BF%83%E8%B7%B3%E8%84%9A%E6%9C%AC/</guid><description>
<![CDATA[<h1>keepalived检测api心跳脚本</h1><p>作者：你的名字（your@email.com）</p>
        
          <h2 id="形式一">
<a class="header-anchor" href="#%e5%bd%a2%e5%bc%8f%e4%b8%80"></a>
形式一
</h2><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="cp">#!/bin/bash
</span></span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nv">err</span><span class="o">=</span><span class="m">0</span>
</span></span><span class="line"><span class="cl"><span class="k">for</span> k in <span class="k">$(</span>seq <span class="m">1</span> 3<span class="k">)</span>
</span></span><span class="line"><span class="cl"><span class="k">do</span>
</span></span><span class="line"><span class="cl">    <span class="nv">check_code</span><span class="o">=</span><span class="k">$(</span>pgrep haproxy<span class="k">)</span>
</span></span><span class="line"><span class="cl">    <span class="k">if</span> <span class="o">[[</span> <span class="nv">$check_code</span> <span class="o">==</span> <span class="s2">&#34;&#34;</span> <span class="o">]]</span><span class="p">;</span> <span class="k">then</span>
</span></span><span class="line"><span class="cl">        <span class="nv">err</span><span class="o">=</span><span class="k">$(</span>expr <span class="nv">$err</span> + 1<span class="k">)</span>
</span></span><span class="line"><span class="cl">        sleep <span class="m">1</span>
</span></span><span class="line"><span class="cl">        <span class="k">continue</span>
</span></span><span class="line"><span class="cl">    <span class="k">else</span>
</span></span><span class="line"><span class="cl">        <span class="nv">err</span><span class="o">=</span><span class="m">0</span>
</span></span><span class="line"><span class="cl">        <span class="nb">break</span>
</span></span><span class="line"><span class="cl">    <span class="k">fi</span>
</span></span><span class="line"><span class="cl"><span class="k">done</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">if</span> <span class="o">[[</span> <span class="nv">$err</span> !<span class="o">=</span> <span class="s2">&#34;0&#34;</span> <span class="o">]]</span><span class="p">;</span> <span class="k">then</span>
</span></span><span class="line"><span class="cl">    <span class="nb">echo</span> <span class="s2">&#34;systemctl stop keepalived&#34;</span>
</span></span><span class="line"><span class="cl">    /usr/bin/systemctl stop keepalived
</span></span><span class="line"><span class="cl">    <span class="nb">exit</span> <span class="m">1</span>
</span></span><span class="line"><span class="cl"><span class="k">else</span>
</span></span><span class="line"><span class="cl">    <span class="nb">exit</span> <span class="m">0</span>
</span></span><span class="line"><span class="cl"><span class="k">fi</span>
</span></span></code></pre></div><h2 id="形式二">
<a class="header-anchor" href="#%e5%bd%a2%e5%bc%8f%e4%ba%8c"></a>
形式二
</h2><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="cp">#!/bin/sh
</span></span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">errorExit<span class="o">()</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl"> <span class="nb">echo</span> <span class="s2">&#34;*** </span><span class="nv">$*</span><span class="s2">&#34;</span> 1&gt;<span class="p">&amp;</span><span class="m">2</span>
</span></span><span class="line"><span class="cl"> <span class="nb">exit</span> <span class="m">1</span>
</span></span><span class="line"><span class="cl"><span class="o">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">curl --silent --max-time <span class="m">2</span> --insecure https://localhost:<span class="si">${</span><span class="nv">APISERVER_DEST_PORT</span><span class="si">}</span>/ -o /dev/null <span class="o">||</span> errorExit <span class="s2">&#34;Error GET https://localhost:</span><span class="si">${</span><span class="nv">APISERVER_DEST_PORT</span><span class="si">}</span><span class="s2">/&#34;</span>
</span></span><span class="line"><span class="cl"><span class="k">if</span> ip addr <span class="p">|</span> grep -q <span class="si">${</span><span class="nv">APISERVER_VIP</span><span class="si">}</span><span class="p">;</span> <span class="k">then</span>
</span></span><span class="line"><span class="cl"> curl --silent --max-time <span class="m">2</span> --insecure https://<span class="si">${</span><span class="nv">APISERVER_VIP</span><span class="si">}</span>:<span class="si">${</span><span class="nv">APISERVER_DEST_PORT</span><span class="si">}</span>/ -o /dev/null <span class="o">||</span> errorExit <span class="s2">&#34;Error GET https://</span><span class="si">${</span><span class="nv">APISERVER_VIP</span><span class="si">}</span><span class="s2">:</span><span class="si">${</span><span class="nv">APISERVER_DEST_PORT</span><span class="si">}</span><span class="s2">/&#34;</span>
</span></span><span class="line"><span class="cl"><span class="k">fi</span>
</span></span><span class="line"><span class="cl">&lt;!-- 它也有一些基础变量需要填充:
</span></span><span class="line"><span class="cl">• <span class="si">${</span><span class="nv">APISERVER_VIP</span><span class="si">}</span> 是 keepalive 集群主机之间协商的虚拟IP地址。
</span></span><span class="line"><span class="cl">• <span class="si">${</span><span class="nv">APISERVER_DEST_PORT</span><span class="si">}</span> 是Kubernetes与API Server通信的端口。 --&gt;
</span></span></code></pre></div>
        
        <hr><p>本文2023-04-10首发于<a href='https://hugo.kkun.top/'>我的博客</a>，最后修改于2023-04-10</p>]]></description><category>Linux</category><category>containerd</category></item><item><title>使用 Go 和 Linux Kernel 技术探究容器化原理</title><link>https://hugo.kkun.top/post/%E4%BD%BF%E7%94%A8-go-%E5%92%8C-linux-kernel-%E6%8A%80%E6%9C%AF%E6%8E%A2%E7%A9%B6%E5%AE%B9%E5%99%A8%E5%8C%96%E5%8E%9F%E7%90%86/</link><pubDate>Mon, 10 Apr 2023 14:31:51 +0000</pubDate><author>your@email.com (你的名字)</author><guid>https://hugo.kkun.top/post/%E4%BD%BF%E7%94%A8-go-%E5%92%8C-linux-kernel-%E6%8A%80%E6%9C%AF%E6%8E%A2%E7%A9%B6%E5%AE%B9%E5%99%A8%E5%8C%96%E5%8E%9F%E7%90%86/</guid><description>
<![CDATA[<h1>使用 Go 和 Linux Kernel 技术探究容器化原理</h1><p>作者：你的名字（your@email.com）</p>
        
          <h2 id="容器的优势">
<a class="header-anchor" href="#%e5%ae%b9%e5%99%a8%e7%9a%84%e4%bc%98%e5%8a%bf"></a>
容器的优势
</h2><p><img src="https://gh-proxy.com/https://raw.githubusercontent.com/Ghostpanter/tuchuang/main/img/202304040931797.png" alt="图片"></p>
<p>传统模式的部署，直接将多个应用运行在物理服务器上，如果其中一个应用占用了大部分资源，可能会导致其他应用的性能下降。</p>
<p>虚拟化部署时代，可以在单个物理服务器的 CPU 上运行多个虚拟机（VM），每个 VM 是一台完整的计算机，在虚拟化硬件之上运行所有组件（包括了操作系统）。因此，可以让不同的应用在 VM 之间安全地隔离运行，更好地利用物理服务器上的资源。</p>
        
        <hr><p>本文2023-04-10首发于<a href='https://hugo.kkun.top/'>我的博客</a>，最后修改于2023-04-10</p>]]></description><category>Linux</category><category>containerd</category></item></channel></rss>