<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>lework (lework)</title>
    <link>https://ruby-china.org/lework</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>升级到 3-7-latest 出现登录不上？</title>
      <description>&lt;p&gt;通过 homeland-docker 方式更新的&lt;/p&gt;

&lt;p&gt;想进入 console 界面进行&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;irb&amp;gt; Setting.where&lt;span class="o"&gt;(&lt;/span&gt;thing_type: &lt;span class="s2"&gt;"User"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
irb&amp;gt; Setting.where&lt;span class="o"&gt;(&lt;/span&gt;thing_type: &lt;span class="s2"&gt;"User"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;.delete_all
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;出现了以下错误&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;root@cde983b7f9cc:/home/app/homeland# bundle &lt;span class="nb"&gt;exec &lt;/span&gt;rails console
Traceback &lt;span class="o"&gt;(&lt;/span&gt;most recent call last&lt;span class="o"&gt;)&lt;/span&gt;:
        38: from bin/rails:4:in &lt;span class="sb"&gt;`&lt;/span&gt;&amp;lt;main&amp;gt;&lt;span class="s1"&gt;'
        37: from /home/app/homeland/vendor/bundle/ruby/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/dependencies.rb:324:in `require'&lt;/span&gt;
        36: from /home/app/homeland/vendor/bundle/ruby/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/dependencies.rb:291:in &lt;span class="sb"&gt;`&lt;/span&gt;load_dependency&lt;span class="s1"&gt;'
        35: from /home/app/homeland/vendor/bundle/ruby/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/dependencies.rb:324:in `block in require'&lt;/span&gt;
        34: from /home/app/homeland/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in &lt;span class="sb"&gt;`&lt;/span&gt;require&lt;span class="s1"&gt;'
        33: from /home/app/homeland/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi'&lt;/span&gt;
        32: from /home/app/homeland/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in &lt;span class="sb"&gt;`&lt;/span&gt;register&lt;span class="s1"&gt;'
        31: from /home/app/homeland/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi'&lt;/span&gt;
        30: from /home/app/homeland/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in &lt;span class="sb"&gt;`&lt;/span&gt;require&lt;span class="s1"&gt;'
        29: from /home/app/homeland/vendor/bundle/ruby/2.7.0/gems/railties-6.0.3.3/lib/rails/commands.rb:18:in `&amp;lt;main&amp;gt;'&lt;/span&gt;
        28: from /home/app/homeland/vendor/bundle/ruby/2.7.0/gems/railties-6.0.3.3/lib/rails/command.rb:44:in &lt;span class="sb"&gt;`&lt;/span&gt;invoke&lt;span class="s1"&gt;'
        27: from /home/app/homeland/vendor/bundle/ruby/2.7.0/gems/railties-6.0.3.3/lib/rails/command.rb:70:in `find_by_namespace'&lt;/span&gt;
        26: from /home/app/homeland/vendor/bundle/ruby/2.7.0/gems/railties-6.0.3.3/lib/rails/command/behavior.rb:39:in &lt;span class="sb"&gt;`&lt;/span&gt;lookup&lt;span class="s1"&gt;'
        25: from /home/app/homeland/vendor/bundle/ruby/2.7.0/gems/railties-6.0.3.3/lib/rails/command/behavior.rb:39:in `each'&lt;/span&gt;
        24: from /home/app/homeland/vendor/bundle/ruby/2.7.0/gems/railties-6.0.3.3/lib/rails/command/behavior.rb:40:in &lt;span class="sb"&gt;`&lt;/span&gt;block &lt;span class="k"&gt;in &lt;/span&gt;lookup&lt;span class="s1"&gt;'
        23: from /home/app/homeland/vendor/bundle/ruby/2.7.0/gems/railties-6.0.3.3/lib/rails/command/behavior.rb:40:in `each'&lt;/span&gt;
        22: from /home/app/homeland/vendor/bundle/ruby/2.7.0/gems/railties-6.0.3.3/lib/rails/command/behavior.rb:44:in &lt;span class="sb"&gt;`&lt;/span&gt;block &lt;span class="o"&gt;(&lt;/span&gt;2 levels&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="k"&gt;in &lt;/span&gt;lookup&lt;span class="s1"&gt;'
        21: from /home/app/homeland/vendor/bundle/ruby/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/dependencies.rb:324:in `require'&lt;/span&gt;
        20: from /home/app/homeland/vendor/bundle/ruby/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/dependencies.rb:291:in &lt;span class="sb"&gt;`&lt;/span&gt;load_dependency&lt;span class="s1"&gt;'
        19: from /home/app/homeland/vendor/bundle/ruby/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/dependencies.rb:324:in `block in require'&lt;/span&gt;
        18: from /home/app/homeland/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in &lt;span class="sb"&gt;`&lt;/span&gt;require&lt;span class="s1"&gt;'
        17: from /home/app/homeland/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi'&lt;/span&gt;
        16: from /home/app/homeland/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in &lt;span class="sb"&gt;`&lt;/span&gt;register&lt;span class="s1"&gt;'
        15: from /home/app/homeland/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi'&lt;/span&gt;
        14: from /home/app/homeland/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in &lt;span class="sb"&gt;`&lt;/span&gt;require&lt;span class="s1"&gt;'
        13: from /home/app/homeland/vendor/bundle/ruby/2.7.0/gems/railties-6.0.3.3/lib/rails/commands/console/console_command.rb:3:in `&amp;lt;main&amp;gt;'&lt;/span&gt;
        12: from /home/app/homeland/vendor/bundle/ruby/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/dependencies.rb:324:in &lt;span class="sb"&gt;`&lt;/span&gt;require&lt;span class="s1"&gt;'
        11: from /home/app/homeland/vendor/bundle/ruby/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/dependencies.rb:291:in `load_dependency'&lt;/span&gt;
        10: from /home/app/homeland/vendor/bundle/ruby/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/dependencies.rb:324:in &lt;span class="sb"&gt;`&lt;/span&gt;block &lt;span class="k"&gt;in &lt;/span&gt;require&lt;span class="s1"&gt;'
         9: from /home/app/homeland/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in `require'&lt;/span&gt;
         8: from /home/app/homeland/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in &lt;span class="sb"&gt;`&lt;/span&gt;require_with_bootsnap_lfi&lt;span class="s1"&gt;'
         7: from /home/app/homeland/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'&lt;/span&gt;
         6: from /home/app/homeland/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in &lt;span class="sb"&gt;`&lt;/span&gt;block &lt;span class="k"&gt;in &lt;/span&gt;require_with_bootsnap_lfi&lt;span class="s1"&gt;'
         5: from /home/app/homeland/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require'&lt;/span&gt;
         4: from /usr/local/lib/ruby/2.7.0/irb.rb:24:in &lt;span class="sb"&gt;`&lt;/span&gt;&amp;lt;main&amp;gt;&lt;span class="s1"&gt;'
         3: from /home/app/homeland/vendor/bundle/ruby/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/dependencies.rb:324:in `require'&lt;/span&gt;
         2: from /home/app/homeland/vendor/bundle/ruby/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/dependencies.rb:291:in &lt;span class="sb"&gt;`&lt;/span&gt;load_dependency&lt;span class="s1"&gt;'
         1: from /home/app/homeland/vendor/bundle/ruby/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/dependencies.rb:324:in `block in require'&lt;/span&gt;
/home/app/homeland/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:34:in &lt;span class="sb"&gt;`&lt;/span&gt;require&lt;span class="s1"&gt;': cannot load such file -- irb/easter-egg (LoadError)
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;</description>
      <author>lework</author>
      <pubDate>Thu, 12 Nov 2020 16:47:54 +0800</pubDate>
      <link>https://ruby-china.org/topics/40573</link>
      <guid>https://ruby-china.org/topics/40573</guid>
    </item>
    <item>
      <title> 推荐一个工具：使用 kainstall 工具一键部署 kubernetes (k8s) 高可用集群</title>
      <description>&lt;h2 id="介绍"&gt;介绍&lt;/h2&gt;
&lt;p&gt;kainstall = kubeadm install kubernetes&lt;/p&gt;

&lt;p&gt;使用 shell 脚本，基于 kubeadm 一键部署 kubernetes HA 集群，轻松帮您打造一个可在 &lt;strong&gt;生产环境&lt;/strong&gt; 下使用的健壮集群。&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/lework/kainstall" rel="nofollow" target="_blank"&gt;https://github.com/lework/kainstall&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="为什么？"&gt;为什么？&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;为什么要搞这个？Ansible PlayBook 不好么？&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;因为懒&lt;/strong&gt;，Ansible PlayBook 编排是非常给力的，不过需要安装 Python 和 Ansible, 且需要下载多个 yaml 文件。&lt;strong&gt;因为懒&lt;/strong&gt;，我想要个更简单的方式来&lt;strong&gt;快速部署&lt;/strong&gt;一个分布式的 &lt;strong&gt;Kubernetes HA&lt;/strong&gt; 集群，使用 &lt;strong&gt;shell&lt;/strong&gt; 脚本可以不借助外力直接在服务器上运行，省时省力。并且 shell 脚本只有一个文件，文件大小&lt;strong&gt;100 KB&lt;/strong&gt; 左右，非常小巧，可以实现一条命令安装集群的超快体验，而且配合&lt;strong&gt;离线安装包&lt;/strong&gt;，可以在不联网的环境下安装集群，这体验真的&lt;strong&gt;非常爽&lt;/strong&gt;啊。&lt;/p&gt;
&lt;h2 id="功能"&gt;功能&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;服务器初始化。

&lt;ul&gt;
&lt;li&gt;关闭 &lt;code&gt;selinux&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;关闭 &lt;code&gt;swap&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;关闭 &lt;code&gt;firewalld&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;关闭大内存页&lt;/li&gt;
&lt;li&gt;配置 &lt;code&gt;epel&lt;/code&gt; 源&lt;/li&gt;
&lt;li&gt;修改 &lt;code&gt;limits&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;配置内核参数&lt;/li&gt;
&lt;li&gt;配置 &lt;code&gt;history&lt;/code&gt; 记录&lt;/li&gt;
&lt;li&gt;配置 &lt;code&gt;journal&lt;/code&gt; 日志&lt;/li&gt;
&lt;li&gt;配置 &lt;code&gt;chrony&lt;/code&gt; 时间同步&lt;/li&gt;
&lt;li&gt;添加 &lt;code&gt;ssh-login-info&lt;/code&gt; 信息&lt;/li&gt;
&lt;li&gt;配置 &lt;code&gt;audit&lt;/code&gt; 审计&lt;/li&gt;
&lt;li&gt;安装 &lt;code&gt;ipvs&lt;/code&gt; 模块&lt;/li&gt;
&lt;li&gt;更新内核&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;安装&lt;code&gt;docker&lt;/code&gt;, &lt;code&gt;kube&lt;/code&gt;组件。&lt;/li&gt;
&lt;li&gt;初始化&lt;code&gt;kubernetes&lt;/code&gt;集群，以及增加或删除节点。&lt;/li&gt;
&lt;li&gt;安装&lt;code&gt;ingress&lt;/code&gt;组件，可选&lt;code&gt;nginx&lt;/code&gt;，&lt;code&gt;traefik&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;安装&lt;code&gt;network&lt;/code&gt;组件，可选&lt;code&gt;flannel&lt;/code&gt;，&lt;code&gt;calico&lt;/code&gt;，需在初始化时指定。&lt;/li&gt;
&lt;li&gt;安装&lt;code&gt;monitor&lt;/code&gt;组件，可选&lt;code&gt;prometheus&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;安装&lt;code&gt;log&lt;/code&gt;组件，可选&lt;code&gt;elasticsearch&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;安装&lt;code&gt;storage&lt;/code&gt;组件，可选&lt;code&gt;rook&lt;/code&gt;，&lt;code&gt;longhorn&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;安装&lt;code&gt;web ui&lt;/code&gt;组件，可选&lt;code&gt;dashboard&lt;/code&gt;, &lt;code&gt;kubesphere&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;安装&lt;code&gt;addon&lt;/code&gt;组件，可选&lt;code&gt;metrics-server&lt;/code&gt;, &lt;code&gt;nodelocaldns&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;升级到&lt;code&gt;kubernetes&lt;/code&gt;指定版本。&lt;/li&gt;
&lt;li&gt;更新集群证书。&lt;/li&gt;
&lt;li&gt;添加运维操作，如备份 etcd 快照。&lt;/li&gt;
&lt;li&gt;支持&lt;strong&gt;离线部署&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;支持&lt;strong&gt;sudo 特权&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;支持&lt;strong&gt;10 年证书期限&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;支持&lt;strong&gt;v1.15+&lt;/strong&gt;的 kubernetes。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="一键初始化"&gt;一键初始化&lt;/h2&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;bash &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;curl &lt;span class="nt"&gt;-sSL&lt;/span&gt; https://cdn.jsdelivr.net/gh/lework/kainstall/kainstall.sh&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;  &lt;span class="se"&gt;\&lt;/span&gt;
  - init &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--master&lt;/span&gt; 192.168.77.130,192.168.77.131,192.168.77.132 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--worker&lt;/span&gt; 192.168.77.133,192.168.77.134 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--user&lt;/span&gt; root &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--password&lt;/span&gt; 123456 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--port&lt;/span&gt; 22 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--version&lt;/span&gt; 1.19.3
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;更多操作见： &lt;a href="https://github.com/lework/kainstall" rel="nofollow" target="_blank" title=""&gt;kainstall&lt;/a&gt; 仓库&lt;/p&gt;
&lt;h2 id="离线部署"&gt;离线部署&lt;/h2&gt;
&lt;p&gt;wget &lt;a href="http://kainstall.oss-cn-shanghai.aliyuncs.com/1.19.3/centos7.tgz" rel="nofollow" target="_blank"&gt;http://kainstall.oss-cn-shanghai.aliyuncs.com/1.19.3/centos7.tgz&lt;/a&gt;&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bash &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;curl &lt;span class="nt"&gt;-sSL&lt;/span&gt; https://cdn.jsdelivr.net/gh/lework/kainstall/kainstall.sh&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;  &lt;span class="se"&gt;\&lt;/span&gt;
  - init &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--master&lt;/span&gt; 192.168.77.130,192.168.77.131,192.168.77.132 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--worker&lt;/span&gt; 192.168.77.133,192.168.77.134 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--user&lt;/span&gt; root &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--password&lt;/span&gt; 123456 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--port&lt;/span&gt; 22 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--version&lt;/span&gt; 1.19.3 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--offline-file&lt;/span&gt; centos7.tgz 
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;更多离线包： &lt;a href="https://github.com/lework/kainstall-offline" rel="nofollow" target="_blank" title=""&gt;kainstall-offline&lt;/a&gt; 仓库&lt;/p&gt;
&lt;h2 id="联系"&gt;联系&lt;/h2&gt;
&lt;p&gt;创建了一个 &lt;a href="https://qm.qq.com/cgi-bin/qm/qr?k=HwpkLUcmroLKNv37TlrHY-D3SXuLKMOd&amp;amp;jump_from=webapi" rel="nofollow" target="_blank" title=""&gt;QQ 群&lt;/a&gt; 467645743 大家有问题的可以加进来。&lt;/p&gt;</description>
      <author>lework</author>
      <pubDate>Thu, 12 Nov 2020 15:45:24 +0800</pubDate>
      <link>https://ruby-china.org/topics/40572</link>
      <guid>https://ruby-china.org/topics/40572</guid>
    </item>
  </channel>
</rss>
