<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Linux on 蓝尾蜂鸟</title><link>https://clibing.com/tags/linux/</link><description>Recent content in Linux on 蓝尾蜂鸟</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><copyright>Copyright © 2011-2026 clibing. All Rights Reserved.</copyright><lastBuildDate>Mon, 29 Jun 2020 17:59:56 +0800</lastBuildDate><atom:link href="https://clibing.com/tags/linux/index.xml" rel="self" type="application/rss+xml"/><item><title>网络常用工具</title><link>https://clibing.com/posts/linux/tool/net-tools/</link><pubDate>Mon, 29 Jun 2020 17:59:56 +0800</pubDate><guid>https://clibing.com/posts/linux/tool/net-tools/</guid><description><![CDATA[<ul>
<li>网络配置相关：ifconfig、ip</li>
<li>路由相关：route、netstat、ip</li>
<li>查看端口工具：netstat、lsof、ss、nc、telnet</li>
<li>下载工具：curl、wget、axel</li>
<li>防火墙：iptables、ipset</li>
<li>流量相关：iftop、nethogs</li>
<li>连通性及响应速度：ping、traceroute、mtr、tracepath</li>
<li>域名相关：nslookup、dig、whois</li>
<li>web服务器：python、nginx</li>
<li>抓包相关：tcpdump</li>
<li>网桥相关：ip、brctl、ifconfig、ovs</li>
</ul>]]></description></item><item><title>Kubernetes ARM平台 安装</title><link>https://clibing.com/posts/linux/k8s%E5%AE%89%E8%A3%85/</link><pubDate>Wed, 17 Jun 2020 17:34:56 +0800</pubDate><guid>https://clibing.com/posts/linux/k8s%E5%AE%89%E8%A3%85/</guid><description><![CDATA[<h3 id="安装" data-numberify>安装<a class="anchor ms-1" href="#安装"></a></h3>
<p>环境
arm平台</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="ln"> 1</span><span class="cl">Kernel
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">Linux rock64 4.4.132-1075-rockchip-ayufan-ga83beded8524 <span class="c1">#1 SMP Thu Jul 26 08:22:22 UTC 2018 aarch64 aarch64 aarch64 GNU/Linux</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">System
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">No LSB modules are available.
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">Distributor ID: Ubuntu
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">Description:    Ubuntu 18.04.4 LTS
</span></span><span class="line"><span class="ln">10</span><span class="cl">Release:        18.04
</span></span><span class="line"><span class="ln">11</span><span class="cl">Codename:       bionic
</span></span><span class="line"><span class="ln">12</span><span class="cl">
</span></span><span class="line"><span class="ln">13</span><span class="cl">Memory
</span></span><span class="line"><span class="ln">14</span><span class="cl">              total        used        free      shared  buff/cache   available
</span></span><span class="line"><span class="ln">15</span><span class="cl">Mem:           <span class="m">3924</span>         <span class="m">198</span>         <span class="m">105</span>           <span class="m">3</span>        <span class="m">3619</span>        <span class="m">3692</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl">Swap:          <span class="m">1962</span>           <span class="m">0</span>        <span class="m">1961</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl">
</span></span><span class="line"><span class="ln">18</span><span class="cl">Network
</span></span><span class="line"><span class="ln">19</span><span class="cl">
</span></span><span class="line"><span class="ln">20</span><span class="cl">docker0: <span class="nv">flags</span><span class="o">=</span>4099&lt;UP,BROADCAST,MULTICAST&gt;  mtu <span class="m">1500</span>
</span></span><span class="line"><span class="ln">21</span><span class="cl">        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
</span></span><span class="line"><span class="ln">22</span><span class="cl">        ether 02:42:cf:ca:aa:ce  txqueuelen <span class="m">0</span>  <span class="o">(</span>Ethernet<span class="o">)</span>
</span></span><span class="line"><span class="ln">23</span><span class="cl">        RX packets <span class="m">43147</span>  bytes <span class="m">2477474</span> <span class="o">(</span>2.4 MB<span class="o">)</span>
</span></span><span class="line"><span class="ln">24</span><span class="cl">        RX errors <span class="m">0</span>  dropped <span class="m">0</span>  overruns <span class="m">0</span>  frame <span class="m">0</span>
</span></span><span class="line"><span class="ln">25</span><span class="cl">        TX packets <span class="m">43353</span>  bytes <span class="m">92327114</span> <span class="o">(</span>92.3 MB<span class="o">)</span>
</span></span><span class="line"><span class="ln">26</span><span class="cl">        TX errors <span class="m">0</span>  dropped <span class="m">0</span> overruns <span class="m">0</span>  carrier <span class="m">0</span>  collisions <span class="m">0</span>
</span></span><span class="line"><span class="ln">27</span><span class="cl">
</span></span><span class="line"><span class="ln">28</span><span class="cl">eth0: <span class="nv">flags</span><span class="o">=</span>4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  mtu <span class="m">1500</span>
</span></span><span class="line"><span class="ln">29</span><span class="cl">        inet 192.168.1.58  netmask 255.255.255.0  broadcast 192.168.1.255
</span></span><span class="line"><span class="ln">30</span><span class="cl">        ether 06:14:d5:2c:82:aa  txqueuelen <span class="m">1000</span>  <span class="o">(</span>Ethernet<span class="o">)</span>
</span></span><span class="line"><span class="ln">31</span><span class="cl">        RX packets <span class="m">2303981</span>  bytes <span class="m">1891341723</span> <span class="o">(</span>1.8 GB<span class="o">)</span>
</span></span><span class="line"><span class="ln">32</span><span class="cl">        RX errors <span class="m">0</span>  dropped <span class="m">0</span>  overruns <span class="m">0</span>  frame <span class="m">0</span>
</span></span><span class="line"><span class="ln">33</span><span class="cl">        TX packets <span class="m">1427379</span>  bytes <span class="m">369022653</span> <span class="o">(</span>369.0 MB<span class="o">)</span>
</span></span><span class="line"><span class="ln">34</span><span class="cl">        TX errors <span class="m">2</span>  dropped <span class="m">0</span> overruns <span class="m">2</span>  carrier <span class="m">0</span>  collisions <span class="m">0</span>
</span></span><span class="line"><span class="ln">35</span><span class="cl">        device interrupt <span class="m">40</span>
</span></span><span class="line"><span class="ln">36</span><span class="cl">
</span></span><span class="line"><span class="ln">37</span><span class="cl">lo: <span class="nv">flags</span><span class="o">=</span>73&lt;UP,LOOPBACK,RUNNING&gt;  mtu <span class="m">65536</span>
</span></span><span class="line"><span class="ln">38</span><span class="cl">        inet 127.0.0.1  netmask 255.0.0.0
</span></span><span class="line"><span class="ln">39</span><span class="cl">        loop  txqueuelen <span class="m">1</span>  <span class="o">(</span>Local Loopback<span class="o">)</span>
</span></span><span class="line"><span class="ln">40</span><span class="cl">        RX packets <span class="m">1514</span>  bytes <span class="m">138738</span> <span class="o">(</span>138.7 KB<span class="o">)</span>
</span></span><span class="line"><span class="ln">41</span><span class="cl">        RX errors <span class="m">0</span>  dropped <span class="m">0</span>  overruns <span class="m">0</span>  frame <span class="m">0</span>
</span></span><span class="line"><span class="ln">42</span><span class="cl">        TX packets <span class="m">1514</span>  bytes <span class="m">138738</span> <span class="o">(</span>138.7 KB<span class="o">)</span>
</span></span><span class="line"><span class="ln">43</span><span class="cl">        TX errors <span class="m">0</span>  dropped <span class="m">0</span> overruns <span class="m">0</span>  carrier <span class="m">0</span>  collisions <span class="m">0</span>
</span></span><span class="line"><span class="ln">44</span><span class="cl">
</span></span><span class="line"><span class="ln">45</span><span class="cl">Disk
</span></span><span class="line"><span class="ln">46</span><span class="cl">Filesystem      Size  Used Avail Use% Mounted on
</span></span><span class="line"><span class="ln">47</span><span class="cl">udev            2.0G     <span class="m">0</span>  2.0G   0% /dev
</span></span><span class="line"><span class="ln">48</span><span class="cl">tmpfs           393M  664K  392M   1% /run
</span></span><span class="line"><span class="ln">49</span><span class="cl">/dev/mmcblk1p7  118G   47G   66G  42% /
</span></span><span class="line"><span class="ln">50</span><span class="cl">.....
</span></span></code></pre></div>
<h3 id="禁用swap" data-numberify>禁用swap<a class="anchor ms-1" href="#禁用swap"></a></h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="ln">1</span><span class="cl">sudo apt install dphys-swapfile <span class="se">\
</span></span></span><span class="line"><span class="ln">2</span><span class="cl">sudo dphys-swapfile swapoff <span class="o">&amp;&amp;</span> <span class="se">\
</span></span></span><span class="line"><span class="ln">3</span><span class="cl">sudo dphys-swapfile uninstall <span class="o">&amp;&amp;</span> <span class="se">\
</span></span></span><span class="line"><span class="ln">4</span><span class="cl">sudo update-rc.d dphys-swapfile remove
</span></span></code></pre></div><p>检查交换禁用是否成功</p>]]></description></item><item><title>apt-get 常用命令</title><link>https://clibing.com/posts/linux/apt-get/</link><pubDate>Thu, 16 Apr 2020 17:18:56 +0800</pubDate><guid>https://clibing.com/posts/linux/apt-get/</guid><description><![CDATA[<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl">apt-cache search package             <span class="c1">#搜索包（相当于yum list | grep pkg）</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl">apt-cache show package               <span class="c1">#显示包的相关信息，如说明、大小、版本等</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl">apt-cache showpg package             <span class="c1">#显示包的相关信息，如Reverse Depends（反向依赖）、依赖等</span>
</span></span><span class="line"><span class="ln">4</span><span class="cl">apt-get install package              <span class="c1">#安装包</span>
</span></span><span class="line"><span class="ln">5</span><span class="cl">apt-get reinstall package            <span class="c1">#重新安装包</span>
</span></span><span class="line"><span class="ln">6</span><span class="cl">apt-get -f install package           <span class="c1">#强制安装</span>
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln"> 1</span><span class="cl">apt-get remove package               <span class="c1">#删除包（只是删掉数据和可执行文件，不删除配置文件）</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">apt-get remove --purge package       <span class="c1">#删除包，包括删除配置文件等</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">apt-get autoremove --purge package   <span class="c1">#删除包及其依赖的软件包+配置文件等</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">apt-get update                       <span class="c1">#更新源</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">apt-get upgrade                      <span class="c1">#更新已安装的包</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">apt-get dist-upgrade                 <span class="c1">#升级系统</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">apt-get dselect-upgrade              <span class="c1">#使用 dselect 升级</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">apt-cache depends package            <span class="c1">#了解使用依赖</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">apt-cache rdepends package           <span class="c1">#查看该包被哪些包依赖</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">apt-get build-dep package            <span class="c1">#安装相关的编译环境</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">apt-get <span class="nb">source</span> package               <span class="c1">#下载该包的源代码</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">apt-get clean <span class="o">&amp;&amp;</span> apt-get autoclean   <span class="c1">#清理下载文件的存档 &amp;&amp; 只清理过时的包</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">apt-get check                        <span class="c1">#检查是否有损坏的依赖</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl">dpkg -S filename                     <span class="c1">#查找filename属于哪个软件包</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">apt-file search filename             <span class="c1">#查找filename属于哪个软件包</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl">apt-file list packagename            <span class="c1">#列出软件包的内容</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl">apt-file update                      <span class="c1">#更新apt-file的数据库</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl">
</span></span><span class="line"><span class="ln">19</span><span class="cl">dpkg -l                              <span class="c1">#列出当前系统中所有的包.可以和参数less一起使用在分屏查看（类似于rpm -qa）</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl">dpkg -l <span class="p">|</span>grep -i <span class="s2">&#34;pkg&#34;</span>               <span class="c1">#查看系统中与&#34;pkg&#34;相关联的包（类似于rpm -qa | grep pkg）</span>
</span></span><span class="line"><span class="ln">21</span><span class="cl">dpkg -s pkg                          <span class="c1">#查询一个已安装的包的详细信息（类似于rpm -qi）</span>
</span></span><span class="line"><span class="ln">22</span><span class="cl">dpkg -L pkg                          <span class="c1">#查询一个已安装的软件包释放了哪些文件（类似于rpm -ql）</span>
</span></span><span class="line"><span class="ln">23</span><span class="cl">dpkg -S file                         <span class="c1">#查询系统中某个文件属于哪个软件包（类似于rpm -qf）</span>
</span></span><span class="line"><span class="ln">24</span><span class="cl">dpkg -c pkg.deb                      <span class="c1">#查询一个未安装的deb包将会释放哪些文件（类似于rpm -qpl）</span>
</span></span><span class="line"><span class="ln">25</span><span class="cl">dpkg -I pkg.deb                      <span class="c1">#查看一个未安装的deb包的详细信息（类似于rpm -qpi）</span>
</span></span><span class="line"><span class="ln">26</span><span class="cl">dpkg -i pkg.deb                      <span class="c1">#手动安装软件包（不能解决软依赖性问题，可以用apt-get -f install解决）</span>
</span></span><span class="line"><span class="ln">27</span><span class="cl">dpkg -r pkg                          <span class="c1">#卸载软件包（不是完全的卸载，它的配置文件还存在）</span>
</span></span><span class="line"><span class="ln">28</span><span class="cl">dpkg -P pkg                          <span class="c1">#全部卸载（不能解决依赖性的问题）</span>
</span></span><span class="line"><span class="ln">29</span><span class="cl">dpkg-reconfigure pkg                 <span class="c1">#重新配置</span>
</span></span><span class="line"><span class="ln">30</span><span class="cl">dpkg -x pkg.deb dir                  <span class="c1">#将一个deb包解开至dir目录</span>
</span></span><span class="line"><span class="ln">31</span><span class="cl">dpkg --pending --remove              <span class="c1">#移除多余的软件</span>
</span></span><span class="line"><span class="ln">32</span><span class="cl">
</span></span><span class="line"><span class="ln">33</span><span class="cl"><span class="c1"># 强制安装一个包(忽略依赖及其它问题)</span>
</span></span><span class="line"><span class="ln">34</span><span class="cl">dpkg --force-all -i pkg.deb          <span class="c1">#可以参考dpkg --force-help</span>
</span></span><span class="line"><span class="ln">35</span><span class="cl">
</span></span><span class="line"><span class="ln">36</span><span class="cl"><span class="c1"># 强制卸载一个包</span>
</span></span><span class="line"><span class="ln">37</span><span class="cl">dpkg --force-all -P pkg.deb
</span></span><span class="line"><span class="ln">38</span><span class="cl">
</span></span><span class="line"><span class="ln">39</span><span class="cl">aptitude update                      <span class="c1">#更新可用的包列表</span>
</span></span><span class="line"><span class="ln">40</span><span class="cl">aptitude upgrade                     <span class="c1">#升级可用的包</span>
</span></span><span class="line"><span class="ln">41</span><span class="cl">aptitude dist-upgrade                <span class="c1">#将系统升级到新的发行版</span>
</span></span><span class="line"><span class="ln">42</span><span class="cl">aptitude install pkgname             <span class="c1">#安装包</span>
</span></span><span class="line"><span class="ln">43</span><span class="cl">aptitude remove pkgname              <span class="c1">#删除包</span>
</span></span><span class="line"><span class="ln">44</span><span class="cl">aptitude purge pkgname               <span class="c1">#删除包及其配置文件</span>
</span></span><span class="line"><span class="ln">45</span><span class="cl">aptitude search string               <span class="c1">#搜索包（相当于yum list | grep pkg，重要）</span>
</span></span><span class="line"><span class="ln">46</span><span class="cl">aptitude show pkgname                <span class="c1">#显示包的详细信息 （相当于yum info pkg，重要）</span>
</span></span><span class="line"><span class="ln">47</span><span class="cl">aptitude clean                       <span class="c1">#删除下载的包文件</span>
</span></span><span class="line"><span class="ln">48</span><span class="cl">aptitude autoclean                   <span class="c1">#仅删除过期的包文件</span>
</span></span><span class="line"><span class="ln">49</span><span class="cl">
</span></span><span class="line"><span class="ln">50</span><span class="cl">apt-get install xrdp                 <span class="c1">#安装图形化</span>
</span></span></code></pre></div><p>转载请注明出处，本文采用 <a href="http://creativecommons.org/licenses/by-nc-nd/4.0/" target="_blank" rel="noopener noreferrer">CC4.0<i class="fas fa-external-link-square-alt ms-1"></i></a> 协议授权</p>]]></description></item><item><title>线上服务器资源排查</title><link>https://clibing.com/posts/linux/shell_memory_cpu/</link><pubDate>Thu, 16 Apr 2020 17:18:56 +0800</pubDate><guid>https://clibing.com/posts/linux/shell_memory_cpu/</guid><description>&lt;p>linux下获取占用CPU资源最多的10个进程，可以使用如下命令组合：
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head&lt;/p>
&lt;p>linux下获取占用内存资源最多的10个进程，可以使用如下命令组合：
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head&lt;/p></description></item><item><title>常用shell收集</title><link>https://clibing.com/posts/linux/shell/</link><pubDate>Thu, 16 Apr 2020 16:53:01 +0800</pubDate><guid>https://clibing.com/posts/linux/shell/</guid><description><![CDATA[<p>限制文件修改删除</p>

<h3 id="创建容器挂在需要的目录" data-numberify>创建容器挂在需要的目录<a class="anchor ms-1" href="#创建容器挂在需要的目录"></a></h3>
<p>启动目录并挂在文件</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="ln">1</span><span class="cl">docker run --rm --privileged -it -v /autoupd:/tt alpine sh
</span></span></code></pre></div>
<h3 id="安装所需命令" data-numberify>安装所需命令<a class="anchor ms-1" href="#安装所需命令"></a></h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="ln">1</span><span class="cl">apk add e2fsprogs-extra
</span></span><span class="line"><span class="ln">2</span><span class="cl">lsattr tt
</span></span><span class="line"><span class="ln">3</span><span class="cl">chattr +sia tt
</span></span><span class="line"><span class="ln">4</span><span class="cl">lsattr tt
</span></span><span class="line"><span class="ln">5</span><span class="cl">chattr -sia tt
</span></span></code></pre></div>
<h3 id="awk" data-numberify>awk<a class="anchor ms-1" href="#awk"></a></h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="ln">1</span><span class="cl"><span class="nb">echo</span> <span class="s2">&#34;11 22, 33 44, 55 55, 56 77, 89 99&#34;</span> <span class="p">|</span> awk -F <span class="s1">&#39;, &#39;</span> <span class="s1">&#39;{for(i=1;i&lt;=NF;i++){print $i}}&#39;</span>
</span></span></code></pre></div>
<h3 id="alpine-add-python3-pip3" data-numberify>alpine add python3 pip3<a class="anchor ms-1" href="#alpine-add-python3-pip3"></a></h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="ln">1</span><span class="cl">apk add python3 py3-pip
</span></span><span class="line"><span class="ln">2</span><span class="cl">ln -s /usr/bin/python3 /usr/bin/python
</span></span></code></pre></div>
<h3 id="去除文件属性--rwxr-xr-x-remove-" data-numberify>去除文件属性 -rwxr-xr-x@， remove ……@<a class="anchor ms-1" href="#去除文件属性--rwxr-xr-x-remove-"></a></h3>
<p>查看</p>]]></description></item><item><title>Proxmox Nat</title><link>https://clibing.com/posts/linux/proxmox/</link><pubDate>Mon, 13 Apr 2020 12:13:33 +0800</pubDate><guid>https://clibing.com/posts/linux/proxmox/</guid><description><![CDATA[<h4 id="因为环境需求只有一个ip只能做nat" data-numberify>因为环境需求，只有一个ip，只能做nat<a class="anchor ms-1" href="#因为环境需求只有一个ip只能做nat"></a></h4>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-perl" data-lang="perl"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="n">auto</span> <span class="n">lo</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="n">iface</span> <span class="n">lo</span> <span class="n">inet</span> <span class="n">loopback</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="n">auto</span> <span class="n">enp8s0</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="n">iface</span> <span class="n">enp8s0</span> <span class="n">inet</span> <span class="n">static</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">        <span class="n">address</span> <span class="mf">172.16.11.100</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">        <span class="n">netmask</span> <span class="mf">255.255.255.0</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">        <span class="n">gateway</span> <span class="mf">172.16.11.1</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">
</span></span><span class="line"><span class="ln">10</span><span class="cl"><span class="n">auto</span> <span class="n">vmbr0</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl"><span class="n">iface</span> <span class="n">vmbr0</span> <span class="n">inet</span> <span class="n">static</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">        <span class="n">address</span> <span class="mf">172.16.200.1</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">        <span class="n">netmask</span> <span class="mf">255.255.255.0</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl">        <span class="n">bridge_ports</span> <span class="n">none</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">        <span class="n">bridge_stp</span> <span class="n">off</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl">        <span class="n">bridge_fd</span> <span class="mi">0</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl">        <span class="c1"># 开启ip转发</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl">        <span class="n">post</span><span class="o">-</span><span class="n">up</span> <span class="n">echo</span> <span class="mi">1</span> <span class="o">&gt;</span> <span class="sr">/proc/s</span><span class="n">ys</span><span class="sr">/net/i</span><span class="n">pv4</span><span class="o">/</span><span class="n">ip_forward</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl">        <span class="c1"># 增加一条nat指令， 将请求来源172.16.200.0/24的数据从enp8s0发送出去</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl">        <span class="c1"># MASQUERADE(IP地址伪装)</span>
</span></span><span class="line"><span class="ln">21</span><span class="cl">        <span class="n">post</span><span class="o">-</span><span class="n">up</span> <span class="n">iptables</span> <span class="o">-</span><span class="n">t</span> <span class="n">nat</span> <span class="o">-</span><span class="n">A</span> <span class="n">POSTROUTING</span> <span class="o">-</span><span class="n">s</span> <span class="s">&#39;172.16.200.0/24&#39;</span> <span class="o">-</span><span class="n">o</span> <span class="n">enp8s0</span> <span class="o">-</span><span class="n">j</span> <span class="n">MASQUERADE</span>
</span></span><span class="line"><span class="ln">22</span><span class="cl">        <span class="n">post</span><span class="o">-</span><span class="n">down</span> <span class="n">iptables</span> <span class="o">-</span><span class="n">t</span> <span class="n">nat</span> <span class="o">-</span><span class="n">D</span> <span class="n">POSTROUTING</span> <span class="o">-</span><span class="n">s</span> <span class="s">&#39;172.16.200.0/24&#39;</span> <span class="o">-</span><span class="n">o</span> <span class="n">enp8s0</span> <span class="o">-</span><span class="n">j</span> <span class="n">MASQUERADE</span>
</span></span></code></pre></div><ul>
<li>enp8s0: 为当前主机出口网卡</li>
<li>vmbr0: 为虚拟出来的网卡，用于设置nat</li>
<li>设置nat转发：网卡启动<code>post-up</code>加入nat命令，<code>post-down</code>关闭网卡时删除nat命令</li>
</ul>

<h4 id="openvz-设置17216200024段ip即可" data-numberify>OpenVZ 设置172.16.200.0/24段ip即可<a class="anchor ms-1" href="#openvz-设置17216200024段ip即可"></a></h4>]]></description></item><item><title>Kubernetes Deployment yml说明</title><link>https://clibing.com/posts/linux/k8s-deployment/</link><pubDate>Wed, 13 Jun 2018 14:38:56 +0800</pubDate><guid>https://clibing.com/posts/linux/k8s-deployment/</guid><description><![CDATA[<p>部署 调度</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yml" data-lang="yml"><span class="line"><span class="ln">  1</span><span class="cl"><span class="nt">apiVersion</span><span class="p">:</span><span class="w"> </span><span class="l">apps/v1</span><span class="w">
</span></span></span><span class="line"><span class="ln">  2</span><span class="cl"><span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l">Deployment</span><span class="w">
</span></span></span><span class="line"><span class="ln">  3</span><span class="cl"><span class="c"># 元数据</span><span class="w">
</span></span></span><span class="line"><span class="ln">  4</span><span class="cl"><span class="nt">metadata</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="ln">  5</span><span class="cl"><span class="w">  </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">linuxcrypt-web</span><span class="w">
</span></span></span><span class="line"><span class="ln">  6</span><span class="cl"><span class="w">  </span><span class="nt">labels</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="ln">  7</span><span class="cl"><span class="w">    </span><span class="nt">app</span><span class="p">:</span><span class="w"> </span><span class="l">linuxcrypt-web</span><span class="w">
</span></span></span><span class="line"><span class="ln">  8</span><span class="cl"><span class="c"># 属性</span><span class="w">
</span></span></span><span class="line"><span class="ln">  9</span><span class="cl"><span class="nt">spec</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 10</span><span class="cl"><span class="w">  </span><span class="c"># 副本数量</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 11</span><span class="cl"><span class="w">  </span><span class="nt">replicas</span><span class="p">:</span><span class="w"> </span><span class="m">3</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 12</span><span class="cl"><span class="w">  </span><span class="c"># 滚动升级时，容器准备就绪时间最少为30s</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 13</span><span class="cl"><span class="w">  </span><span class="nt">minReadySeconds</span><span class="p">:</span><span class="w"> </span><span class="m">30</span><span class="w"> 
</span></span></span><span class="line"><span class="ln"> 14</span><span class="cl"><span class="w">  </span><span class="c"># 选择器</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 15</span><span class="cl"><span class="w">  </span><span class="nt">selector</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 16</span><span class="cl"><span class="w">    </span><span class="c"># 匹配lables， 从metadata.labels中匹配</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 17</span><span class="cl"><span class="w">    </span><span class="nt">matchLabels</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 18</span><span class="cl"><span class="w">      </span><span class="c"># 匹配lables， 从metadata.labels.app中匹配</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 19</span><span class="cl"><span class="w">      </span><span class="nt">app</span><span class="p">:</span><span class="w"> </span><span class="l">linuxcrypt-web</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 20</span><span class="cl"><span class="w">  </span><span class="nt">strategy</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 21</span><span class="cl"><span class="w">    </span><span class="c"># 升级方式 recreate和rollingUpdate</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 22</span><span class="cl"><span class="w">    </span><span class="c"># recreate--删除所有已存在的pod，重新创建新的; recreate策略将会在升级过程中，停止服务，但会保证应用版本一致；</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 23</span><span class="cl"><span class="w">    </span><span class="c"># rollingUpdate--滚动升级，逐步替换的策略，同时滚动升级时，支持更多的附加参数，例如设置最大不可用pod数量，最小升级间隔时间等等。使用rollingUpdate不会中断服务，但会导致调用时出现应用版本不一致的情况，输出内容不一致。</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 24</span><span class="cl"><span class="w">    </span><span class="c">#</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 25</span><span class="cl"><span class="w">    </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l">RollingUpdate</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 26</span><span class="cl"><span class="w">    </span><span class="c"># 由于replicas为3个， 则整个升级，pod个数在2-4个之间</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 27</span><span class="cl"><span class="w">    </span><span class="nt">rollingUpdate</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 28</span><span class="cl"><span class="w">      </span><span class="c"># 滚动升级时会先启动1个pod</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 29</span><span class="cl"><span class="w">      </span><span class="nt">maxSurge</span><span class="p">:</span><span class="w"> </span><span class="m">1</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 30</span><span class="cl"><span class="w">      </span><span class="c"># 滚表示滚动升级时允许的最大Unavailable的pod个数。由于replicas为3,则整个升级,pod个数在2-4个之间</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 31</span><span class="cl"><span class="w">      </span><span class="nt">maxUnavailable</span><span class="p">:</span><span class="w"> </span><span class="m">0</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 32</span><span class="cl"><span class="w">  </span><span class="c"># 滚动升级时90s后认为该pod就绪 </span><span class="w">
</span></span></span><span class="line"><span class="ln"> 33</span><span class="cl"><span class="w">  </span><span class="nt">minReadySeconds</span><span class="p">:</span><span class="w"> </span><span class="m">90</span><span class="w"> 
</span></span></span><span class="line"><span class="ln"> 34</span><span class="cl"><span class="w">  </span><span class="nt">template</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 35</span><span class="cl"><span class="w">    </span><span class="nt">metadata</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 36</span><span class="cl"><span class="w">      </span><span class="nt">labels</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 37</span><span class="cl"><span class="w">        </span><span class="nt">app</span><span class="p">:</span><span class="w"> </span><span class="l">linuxcrypt-web</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 38</span><span class="cl"><span class="w">    </span><span class="nt">spec</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 39</span><span class="cl"><span class="w">      </span><span class="c"># k8s将会给应用发送SIGTERM信号，可以用来正确、优雅地关闭应用,默认为30秒</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 40</span><span class="cl"><span class="w">      </span><span class="c"># 如果需要更优雅地关闭，则可以使用k8s提供的pre-stop lifecycle hook 的配置声明，将会在发送SIGTERM之前执行</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 41</span><span class="cl"><span class="w">      </span><span class="nt">terminationGracePeriodSeconds</span><span class="p">:</span><span class="w"> </span><span class="m">60</span><span class="w"> 
</span></span></span><span class="line"><span class="ln"> 42</span><span class="cl"><span class="w">      </span><span class="nt">containers</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 43</span><span class="cl"><span class="w">      </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">linuxcrypt-web</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 44</span><span class="cl"><span class="w">        </span><span class="nt">image</span><span class="p">:</span><span class="w"> </span><span class="l">hub.docker.com/linuxcrypt-web:2.0.0-20180607.0749</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 45</span><span class="cl"><span class="w">        </span><span class="c">#command: [ &#34;sh&#34;, &#34;/etc/run.sh&#34;]</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 46</span><span class="cl"><span class="w">        </span><span class="nt">ports</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 47</span><span class="cl"><span class="w">        </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">linuxcrypt-web</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 48</span><span class="cl"><span class="w">          </span><span class="nt">containerPort</span><span class="p">:</span><span class="w"> </span><span class="m">8080</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 49</span><span class="cl"><span class="w">          </span><span class="nt">protocol</span><span class="p">:</span><span class="w"> </span><span class="l">TCP</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 50</span><span class="cl"><span class="w">        </span><span class="c"># 容器资源分配</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 51</span><span class="cl"><span class="w">        </span><span class="nt">resources</span><span class="p">:</span><span class="w"> 
</span></span></span><span class="line"><span class="ln"> 52</span><span class="cl"><span class="w">          </span><span class="c"># requests主要作为pod调度时的参考依据</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 53</span><span class="cl"><span class="w">          </span><span class="nt">requests</span><span class="p">:</span><span class="w"> 
</span></span></span><span class="line"><span class="ln"> 54</span><span class="cl"><span class="w">            </span><span class="c"># cpu 的频率 250m赫兹 进制1000</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 55</span><span class="cl"><span class="w">            </span><span class="nt">cpu</span><span class="p">:</span><span class="w"> </span><span class="l">250m</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 56</span><span class="cl"><span class="w">            </span><span class="c"># 最低要求16M 进制1024;</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 57</span><span class="cl"><span class="w">            </span><span class="nt">memory</span><span class="p">:</span><span class="w"> </span><span class="l">16Mi </span><span class="w">
</span></span></span><span class="line"><span class="ln"> 58</span><span class="cl"><span class="w">          </span><span class="c"># limits主要用来限制每个容器使用资源的最大值</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 59</span><span class="cl"><span class="w">          </span><span class="nt">limits</span><span class="p">:</span><span class="w"> 
</span></span></span><span class="line"><span class="ln"> 60</span><span class="cl"><span class="w">            </span><span class="c"># 最多使用1个核</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 61</span><span class="cl"><span class="w">            </span><span class="nt">cpu</span><span class="p">:</span><span class="w"> </span><span class="m">1</span><span class="w"> 
</span></span></span><span class="line"><span class="ln"> 62</span><span class="cl"><span class="w">            </span><span class="c"># 最多使用32M</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 63</span><span class="cl"><span class="w">            </span><span class="nt">memory</span><span class="p">:</span><span class="w"> </span><span class="l">32Mi</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 64</span><span class="cl"><span class="w">        </span><span class="c"># 表示container是否以及处于可接受service请求的状态了。如果ReadinessProbe失败，endpoints controller将会从service所匹配到的endpoint列表中移除关于这个container的IP地址。</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 65</span><span class="cl"><span class="w">        </span><span class="c"># 因此对于Service匹配到的endpoint的维护其核心是ReadinessProbe。默认Readiness的初始值是Failure，如果一个container没有提供Readiness则被认为是Success。</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 66</span><span class="cl"><span class="w">        </span><span class="c">#</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 67</span><span class="cl"><span class="w">        </span><span class="c"># readinessProbe是K8S认为该pod是启动成功的，这里根据每个应用的特性，自己去判断，可以执行command，也可以进行httpGet。</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 68</span><span class="cl"><span class="w">        </span><span class="nt">readinessProbe</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 69</span><span class="cl"><span class="w">          </span><span class="c"># exec:</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 70</span><span class="cl"><span class="w">          </span><span class="c">#   command: </span><span class="w">
</span></span></span><span class="line"><span class="ln"> 71</span><span class="cl"><span class="w">          </span><span class="c">#   - cat</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 72</span><span class="cl"><span class="w">          </span><span class="c">#   - /tmp/health</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 73</span><span class="cl"><span class="w">          </span><span class="nt">httpGet</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 74</span><span class="cl"><span class="w">            </span><span class="nt">path</span><span class="p">:</span><span class="w"> </span><span class="l">/health</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 75</span><span class="cl"><span class="w">            </span><span class="nt">port</span><span class="p">:</span><span class="w"> </span><span class="m">8080</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 76</span><span class="cl"><span class="w">            </span><span class="c"># host: www.linuxcrypt.cn</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 77</span><span class="cl"><span class="w">            </span><span class="c"># scheme: HTTP</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 78</span><span class="cl"><span class="w">          </span><span class="c"># 用来表示初始化延迟的时间，也就是告诉监测从多久之后开始运行，单位是秒</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 79</span><span class="cl"><span class="w">          </span><span class="nt">initialDelaySeconds</span><span class="p">:</span><span class="w"> </span><span class="m">60</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 80</span><span class="cl"><span class="w">          </span><span class="c"># 用来表示监测的超时时间，如果超过这个时长后，则认为监测失败</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 81</span><span class="cl"><span class="w">          </span><span class="nt">timeoutSeconds</span><span class="p">:</span><span class="w"> </span><span class="m">10</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 82</span><span class="cl"><span class="w">          </span><span class="c"># 告诉kubelet每5秒探测一次</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 83</span><span class="cl"><span class="w">          </span><span class="nt">periodSeconds</span><span class="p">:</span><span class="w"> </span><span class="m">5</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 84</span><span class="cl"><span class="w">          </span><span class="c"># 探测失败后成功1次就认为是成功的</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 85</span><span class="cl"><span class="w">          </span><span class="nt">successThreshold</span><span class="p">:</span><span class="w"> </span><span class="m">1</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 86</span><span class="cl"><span class="w">          </span><span class="c"># 探测失败阈值</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 87</span><span class="cl"><span class="w">          </span><span class="nt">failureThreshold</span><span class="p">:</span><span class="w"> </span><span class="m">3</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 88</span><span class="cl"><span class="w">        </span><span class="c"># 表示container是否处于live状态。如果LivenessProbe失败，LivenessProbe将会通知kubelet对应的container不健康了。</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 89</span><span class="cl"><span class="w">        </span><span class="c"># 随后kubelet将kill掉container，并根据RestarPolicy进行进一步的操作。</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 90</span><span class="cl"><span class="w">        </span><span class="c"># 默认情况下LivenessProbe在第一次检测之前初始化值为Success，如果container没有提供LivenessProbe，则也认为是Success；</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 91</span><span class="cl"><span class="w">        </span><span class="c"># </span><span class="w">
</span></span></span><span class="line"><span class="ln"> 92</span><span class="cl"><span class="w">        </span><span class="c"># livenessProbe是K8S认为该pod是存活的，不存在则需要kill掉，然后再新启动一个，以达到RS指定的个数。</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 93</span><span class="cl"><span class="w">        </span><span class="nt">livenessProbe</span><span class="p">:</span><span class="w">  
</span></span></span><span class="line"><span class="ln"> 94</span><span class="cl"><span class="w">          </span><span class="nt">httpGet</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 95</span><span class="cl"><span class="w">            </span><span class="nt">path</span><span class="p">:</span><span class="w"> </span><span class="l">/health</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 96</span><span class="cl"><span class="w">            </span><span class="nt">port</span><span class="p">:</span><span class="w"> </span><span class="m">8080</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 97</span><span class="cl"><span class="w">          </span><span class="c"># 用来表示初始化延迟的时间，也就是告诉监测从多久之后开始运行，单位是秒</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 98</span><span class="cl"><span class="w">          </span><span class="nt">initialDelaySeconds</span><span class="p">:</span><span class="w"> </span><span class="m">60</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 99</span><span class="cl"><span class="w">          </span><span class="c"># 告诉kubelet每5秒探测一次</span><span class="w">
</span></span></span><span class="line"><span class="ln">100</span><span class="cl"><span class="w">          </span><span class="nt">periodSeconds</span><span class="p">:</span><span class="w"> </span><span class="m">5</span><span class="w">
</span></span></span><span class="line"><span class="ln">101</span><span class="cl"><span class="w">          </span><span class="c"># 探测失败后成功1次就认为是成功的</span><span class="w">
</span></span></span><span class="line"><span class="ln">102</span><span class="cl"><span class="w">          </span><span class="nt">successThreshold</span><span class="p">:</span><span class="w"> </span><span class="m">1</span><span class="w">
</span></span></span><span class="line"><span class="ln">103</span><span class="cl"><span class="w">          </span><span class="c"># 探测失败阈值</span><span class="w">
</span></span></span><span class="line"><span class="ln">104</span><span class="cl"><span class="w">          </span><span class="nt">failureThreshold</span><span class="p">:</span><span class="w"> </span><span class="m">3</span><span class="w">
</span></span></span><span class="line"><span class="ln">105</span><span class="cl"><span class="w">          </span><span class="c"># 用来表示监测的超时时间，如果超过这个时长后，则认为监测失败</span><span class="w">
</span></span></span><span class="line"><span class="ln">106</span><span class="cl"><span class="w">          </span><span class="nt">timeoutSeconds</span><span class="p">:</span><span class="w"> </span><span class="m">10</span><span class="w">
</span></span></span></code></pre></div><p><code>livenessProbe、readinessProbe: 二者结合，通过健康监测，在滚动升级时会验证pod是否可用。如果不可用，在升级时会杀掉所有进程自动创建，然后自动检测时，如果不可用会根据策略自动处理，当前是重建</code></p>]]></description></item><item><title>Kibana统计nginx之报警</title><link>https://clibing.com/posts/linux/kibana-sentinl-alarms-email/</link><pubDate>Fri, 01 Jun 2018 14:38:56 +0800</pubDate><guid>https://clibing.com/posts/linux/kibana-sentinl-alarms-email/</guid><description><![CDATA[<blockquote>
<p>统计线上Nginx日志，将超时响应和&gt;=500状态的请求抓取并整理，发送到指定邮箱</p>
</blockquote>

<h3 id="需求" data-numberify>需求<a class="anchor ms-1" href="#需求"></a></h3>
<p>对线上的Nginx入口的日志进行统计与报警，</p>]]></description></item><item><title>iostat 笔记</title><link>https://clibing.com/posts/linux/tool/iostat/</link><pubDate>Tue, 06 Feb 2018 14:38:56 +0800</pubDate><guid>https://clibing.com/posts/linux/tool/iostat/</guid><description><![CDATA[<h5 id="iostat-说明" data-numberify>iostat 说明<a class="anchor ms-1" href="#iostat-说明"></a></h5>
<p>iostat用于输出CPU和磁盘I/O相关的统计信息</p>

<h5 id="参数" data-numberify>参数<a class="anchor ms-1" href="#参数"></a></h5>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="ln">1</span><span class="cl">-c 仅显示CPU统计信息.与-d选项互斥.
</span></span><span class="line"><span class="ln">2</span><span class="cl">-d 仅显示磁盘统计信息.与-c选项互斥.
</span></span><span class="line"><span class="ln">3</span><span class="cl">-k 以K为单位显示每秒的磁盘请求数,默认单位块.
</span></span><span class="line"><span class="ln">4</span><span class="cl">-p device <span class="p">|</span> ALL 与-x选项互斥,用于显示块设备及系统分区的统计信息.也可以在-p后指定一个设备名,如: <span class="c1"># iostat -p hda 或显示所有设备 # iostat -p ALL</span>
</span></span><span class="line"><span class="ln">5</span><span class="cl">-t    在输出数据时,打印搜集数据的时间.
</span></span><span class="line"><span class="ln">6</span><span class="cl">-V    打印版本号和帮助信息.
</span></span><span class="line"><span class="ln">7</span><span class="cl">-x    输出扩展信息.
</span></span></code></pre></div>
<h5 id="执行" data-numberify>执行<a class="anchor ms-1" href="#执行"></a></h5>
<ul>
<li>使用</li>
</ul>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="ln">1</span><span class="cl">iostat -x -d -k <span class="m">2</span>
</span></span></code></pre></div><ul>
<li>结果</li>
</ul>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="ln">1</span><span class="cl">Device            r/s     w/s     rkB/s     wkB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
</span></span><span class="line"><span class="ln">2</span><span class="cl">sda            183.26   22.89  10844.72    340.91     2.36    19.68   1.27  46.24    2.61    6.24   0.62    59.18    14.90   1.15  23.68
</span></span><span class="line"><span class="ln">3</span><span class="cl">sdb              1.34   13.01      5.70   9033.99     0.00     0.78   0.01   5.65   47.09  823.92  10.78     4.24   694.65   6.66   9.56
</span></span><span class="line"><span class="ln">4</span><span class="cl">dm-0             3.78   18.61     15.29     74.43     0.00     0.00   0.00   0.00    5.45    7.45   0.16     4.04     4.00   0.93   2.08
</span></span><span class="line"><span class="ln">5</span><span class="cl">dm-1             1.35    2.66     27.18     15.82     0.00     0.00   0.00   0.00   10.94    7.86   0.04    20.07     5.95   4.52   1.81
</span></span><span class="line"><span class="ln">6</span><span class="cl">dm-2             0.61    0.52      2.46      1.74     0.00     0.00   0.00   0.00   21.19   15.98   0.02     4.00     3.34   8.87   1.01
</span></span><span class="line"><span class="ln">7</span><span class="cl">dm-3           175.51   20.50  10783.37    248.88     0.00     0.00   0.00   0.00    2.86   11.25   0.73    61.44    12.14   1.12  21.89
</span></span></code></pre></div><ul>
<li>rrqm/s：每秒这个设备相关的读取请求有多少被Merge了（当系统调用需要读取数据的时候，VFS将请求发到各个FS，如果FS发现不同的读取请求读取的是相同Block的数据，FS会将这个请求合并Merge）；</li>
<li>wrqm/s：每秒这个设备相关的写入请求有多少被Merge了。</li>
<li>rsec/s：每秒读取的扇区数；</li>
<li>wsec/s：每秒写入的扇区数。</li>
<li>avgrq-sz:平均请求扇区的大小</li>
<li>avgqu-sz:是平均请求队列的长度。<code>毫无疑问，队列长度越短越好。</code></li>
<li>r/s:
<ul>
<li>The number (after merges) of read requests completed per second for the device.</li>
<li>设备每秒完成的读取请求数（合并后）。</li>
</ul>
</li>
<li>w/s:
<ul>
<li>he number (after merges) of write requests completed per second for the device.</li>
<li>设备的每秒完成的写入请求数（合并后）。</li>
</ul>
</li>
<li>sec/s (kB/s, MB/s)
<ul>
<li>The number of sectors (kilobytes, megabytes) read from or written to the device per second.</li>
<li>每秒读取或写入设备的扇区数（千字节，兆字节）。</li>
</ul>
</li>
<li>rsec/s (rkB/s, rMB/s)
<ul>
<li>The number of sectors (kilobytes, megabytes) read from the device per second.</li>
<li>每秒从设备读取的扇区数（千字节，兆字节）。</li>
</ul>
</li>
<li>wsec/s (wkB/s, wMB/s)
<ul>
<li>The number of sectors (kilobytes, megabytes) written to the device per second.</li>
<li>每秒写入设备的扇区数（千字节，兆字节）。</li>
</ul>
</li>
<li>rqm/s
<ul>
<li>The number of I/O requests merged per second that were queued to the device.</li>
<li>排队到设备的每秒合并的I/O请求数。</li>
</ul>
</li>
<li>rrqm/s
<ul>
<li>The number of read requests merged per second that were queued to the device.</li>
<li>被排队到设备的每秒合并的读取请求的数量。</li>
</ul>
</li>
<li>wrqm/s
<ul>
<li>The number of write requests merged per second that were queued to the device.</li>
<li>被排队到设备的每秒合并的写入请求数。</li>
</ul>
</li>
<li>%rrqm
<ul>
<li>The percentage of read requests merged together before being sent to the device.</li>
<li>读取请求的百分比在发送到设备之前合并在一起。</li>
</ul>
</li>
<li>%wrqm
<ul>
<li>The percentage of write requests merged together before being sent to the device.</li>
<li>写入请求的百分比在发送到设备之前合并在一起。</li>
</ul>
</li>
<li>areq-sz
<ul>
<li>The average size (in kilobytes) of the requests that were issued to the device.</li>
<li>Note: In previous versions, this field was known as avgrq-sz and was expressed in sectors.</li>
<li>向设备发出的请求的平均大小（以千字节计）。</li>
<li>注意：在以前的版本中，这个字段被称为AVGRQ SZ，并用扇区表示。</li>
</ul>
</li>
<li>rareq-sz
<ul>
<li>The average size (in kilobytes) of the read requests that were issued to the device.</li>
<li>向设备发出的读取请求的平均大小（以千字节计）。</li>
</ul>
</li>
<li>wareq-sz
<ul>
<li>The average size (in kilobytes) of the write requests that were issued to the device.</li>
<li>向设备发出的写入请求的平均大小（以千字节计）。</li>
</ul>
</li>
<li>await
<ul>
<li>The average time (in milliseconds) for I/O requests issued to the device to be served. This includes the time spent by the requests in queue and the time spent servicing them.</li>
<li>发出给设备的I/O请求的平均时间（毫秒）。这包括队列中请求所花费的时间和服务它们所花费的时间。</li>
<li><code>(r_await read, w_await write)每一个IO请求的处理的平均时间（单位是微秒毫秒）。这里可以理解为IO的响应时间，一般地系统IO响应时间应该低于5ms，如果大于10ms就比较大了。 这个时间包括了队列时间和服务时间，也就是说，一般情况下，await大于svctm，它们的差值越小，则说明队列时间越短，反之差值越大，队列时间越长，说明系统出了问题。</code></li>
</ul>
</li>
<li>r_await
<ul>
<li>The average time (in milliseconds) for read requests issued to the device to be served. This includes the time spent by the requests in queue and the time spent servicing them.</li>
<li>发送给要服务的设备的读取请求的平均时间（毫秒）。这包括队列中请求所花费的时间和服务它们所花费的时间。</li>
</ul>
</li>
<li>w_await
<ul>
<li>The average time (in milliseconds) for write requests issued to the device to be served. This includes the time spent by the requests in queue and the time spent servicing them.</li>
<li>发送给要服务的设备的写入请求的平均时间（毫秒）。这包括队列中请求所花费的时间和服务它们所花费的时间。</li>
</ul>
</li>
<li>aqu-sz
<ul>
<li>The average queue length of the requests that were issued to the device.</li>
<li>Note: In previous versions, this field was known as avgqu-sz.</li>
<li>发出给设备的请求的平均队列长度。</li>
<li>注意：在以前的版本中，这个字段被称为AVGQU SZ。</li>
</ul>
</li>
<li>svctm
<ul>
<li>The average service time (in milliseconds) for I/O requests that were issued to the device. Warning! Do not trust this field any more. This field will be removed in a future sysstat version.</li>
<li>对设备发出的I/O请求的平均服务时间（毫秒）。警告！不要再相信这个领域了。该字段将在未来的SysStAT版本中删除。</li>
<li>表示平均每次设备I/O操作的服务时间（以毫秒为单位）。如果svctm的值与await很接近，表示几乎没有I/O等待，磁盘性能很好，如果await的值远高于svctm的值，则表示I/O队列等待太长，系统上运行的应用程序将变慢。</li>
</ul>
</li>
<li>%util
<ul>
<li>Percentage of elapsed time during which I/O requests were issued to the device (bandwidth utilization for the device). Device saturation occurs when this value is close to 100% for devices serving requests serially. But for devices serving requests in parallel, such as RAID arrays and modern SSDs, this number does not reflect their performance limits.</li>
<li>向设备发出I/O请求所需的时间百分比（设备的带宽利用率）。当连续请求服务的设备的值接近100%时，设备饱和发生。但是对于并行请求服务的设备，例如RAID阵列和现代SSD，这个数目并不反映它们的性能极限。</li>
<li>在统计时间内所有处理IO时间，除以总共统计时间。例如，如果统计间隔1秒，该设备有0.8秒在处理IO，而0.2秒闲置，那么该设备的%util = 0.8/1 = 80%，所以该参数暗示了设备的繁忙程度。一般地，如果该参数是100%表示设备已经接近满负荷运行了（当然如果是多磁盘，即使%util是100%，因为磁盘的并发能力，所以磁盘使用未必就到了瓶颈）。</li>
</ul>
</li>
</ul>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="ln">1</span><span class="cl">iostat -d -k <span class="m">2</span>
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="ln">1</span><span class="cl">Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
</span></span><span class="line"><span class="ln">2</span><span class="cl">sda              13.50         2.00        90.00          <span class="m">4</span>        <span class="m">180</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl">sdb               0.00         0.00         0.00          <span class="m">0</span>          <span class="m">0</span>
</span></span><span class="line"><span class="ln">4</span><span class="cl">dm-0              0.50         2.00         0.00          <span class="m">4</span>          <span class="m">0</span>
</span></span></code></pre></div><ul>
<li>tps：该设备每秒的传输次数（Indicate the number of transfers per second that were issued to the device.）。&ldquo;一次传输&quot;意思是&quot;一次I/O请求&rdquo;。多个逻辑请求可能会被合并为&quot;一次I/O请求&quot;。&ldquo;一次传输&quot;请求的大小是未知的。</li>
<li>kB_read/s：每秒从设备（drive expressed）读取的数据量；</li>
<li>kB_wrtn/s：每秒向设备（drive expressed）写入的数据量；</li>
<li>kB_read：读取的总数据量；</li>
<li>kB_wrtn：写入的总数量数据量；这些单位都为Kilobytes。</li>
</ul>]]></description></item></channel></rss>