<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>kubeadm offline installer | 伪架构师</title>
    <link>/tags/kubeadm-offline-installer/</link>
      <atom:link href="/tags/kubeadm-offline-installer/index.xml" rel="self" type="application/rss+xml" />
    <description>kubeadm offline installer</description>
    <generator>Source Themes Academic (https://sourcethemes.com/academic/)</generator><language>zh</language><lastBuildDate>Mon, 02 Apr 2018 05:30:37 +0800</lastBuildDate>
    <image>
      <url>/img/logo-wide.png</url>
      <title>kubeadm offline installer</title>
      <link>/tags/kubeadm-offline-installer/</link>
    </image>
    
    <item>
      <title>Kubeadm 离线安装器 1.10</title>
      <link>/post/kubeadm-offline-installer/</link>
      <pubDate>Mon, 02 Apr 2018 05:30:37 +0800</pubDate>
      <guid>/post/kubeadm-offline-installer/</guid>
      <description>

&lt;h2 id=&#34;项目地址-https-github-com-fleeto-kubeadm-offline-installer&#34;&gt;项目地址：&lt;a href=&#34;https://github.com/fleeto/kubeadm-offline-installer&#34; target=&#34;_blank&#34;&gt;https://github.com/fleeto/kubeadm-offline-installer&lt;/a&gt;&lt;/h2&gt;

&lt;h2 id=&#34;更新内容&#34;&gt;更新内容&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;升级到了 Kubernetes 1.10。&lt;/li&gt;
&lt;li&gt;使用 CoreDNS 代替了原来的 KubeDNS。&lt;/li&gt;
&lt;li&gt;升级 Calico 网络插件为 3.0.4 版。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;仅在 centos 7 minimal 测试通过。&lt;/p&gt;

&lt;h2 id=&#34;使用方法&#34;&gt;使用方法：&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;需要 2.4.0 以上版本的 ansible。&lt;/li&gt;
&lt;li&gt;从 &lt;a href=&#34;https://github.com/fleeto/kubeadm-offline-installer/releases&#34; target=&#34;_blank&#34;&gt;Releases 页&lt;/a&gt; 下载和解压所需版本。&lt;/li&gt;
&lt;li&gt;编写 Host 文件，分组方式可以参考 &lt;code&gt;hosts/hosts.sample&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;group_vars/all&lt;/code&gt; 中有部分可以修改的变量。&lt;/li&gt;
&lt;li&gt;运行脚本。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/usr/local/bin&lt;/code&gt; 目录下会生成初始化和加入集群的脚本。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/etc/kubernetes&lt;/code&gt; 目录中包含证书和配置文件。&lt;/li&gt;
&lt;/ol&gt;
</description>
    </item>
    
    <item>
      <title>Kubeadm offline installer 升级到 1.7.0 版本</title>
      <link>/post/kubeadm-offline-installer-1.7.0/</link>
      <pubDate>Thu, 06 Jul 2017 23:19:51 +0800</pubDate>
      <guid>/post/kubeadm-offline-installer-1.7.0/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://github.com/fleeto/kubeadm-offline-installer/releases&#34; target=&#34;_blank&#34;&gt;仓库地址&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;本来做这玩意的初衷就是，Kubeadm 和 Kubernetes 是一家人，升级比较方便跟得住。未曾想第一次大版本升级，就遇到了个不大不小的坑，导致安装无法完成。这个 Issue 会在 1.7.1 修补，下面介绍一下曲线救国的安装方式。&lt;/p&gt;

&lt;p&gt;这一问题的似乎是 kubeadm 的更新破坏了 TLS 自动授权过程造成的，具体症状是：主节点的 &lt;code&gt;kubeadm init&lt;/code&gt; 完成之后，在其他节点上使用 &lt;code&gt;kubeadm join --token=xxxx host_ip:host_port&lt;/code&gt; 命令加入集群时，集群会反复输出错误信息，大意是 &lt;code&gt;kube-public&lt;/code&gt; 命名空间中名为 &lt;code&gt;cluster-info&lt;/code&gt; 的 ConfigMap 中没有对应 token 的签署记录。&lt;/p&gt;

&lt;p&gt;使用 kubectl 查看该 ConfigMap，和 1.6.6 的集群作对照（是的，安装的够快，想要什么版本都容易），发现 1.7.0 里面这个 ConfigMap 的元素列表确缺少这一块内容。&lt;/p&gt;

&lt;p&gt;既然如此，看样子手工签署也是要不少工夫，干脆转头使用上一版本（1.6.6）的 kubeadm，使用指定版本的方式来安装 1.7.0 的集群。&lt;/p&gt;

&lt;p&gt;&lt;code&gt;kubeadm init&lt;/code&gt; 过程会顺利完成，然而在 &lt;code&gt;kubeadm join&lt;/code&gt; 过程中，会卡在 &lt;code&gt;CSR&lt;/code&gt; 阶段，经过翻查文档，1.7.0 的自动授权方式有变化，废弃了原有的根据 Group 自动通过的开关，一不做二不休，在 Playbook 的 Master Role 中新建一个 Cron Job，每分钟执行一次如下命令：&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;#!/bin/sh
TOKEN=`kubectl get csr | grep csr | grep -i pending | cut -f1 -d &amp;quot; &amp;quot; | head -n 1`
if [[ -n &amp;quot;$TOKEN&amp;quot; ]]; then
  kubectl certificate approve $TOKEN
  echo &amp;quot;CSR: $TOKEN had been approved.&amp;quot; &amp;gt;&amp;gt; /var/log/auto_approval.log
else
  echo &amp;quot;CSR not found.&amp;quot; &amp;gt;&amp;gt; /var/log/auto_approval.log
fi
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;简单说就是获取在途的 CSR，进行 Approve。
这样在后面的节点进行加入的时候，主节点会每分钟进行一次 Approve，在所有节点成功加入之后，调用 Cleanup 角色，禁用这一功能即可。&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;最后，Github 不建议在版本库中存放二进制文件，这里我将所有二进制文件集中到了根目录的 &lt;code&gt;files&lt;/code&gt; 目录下，要顺利使用这一脚本，一定要在 Release 页面中下载相应的压缩包来使用。&lt;/p&gt;
&lt;/blockquote&gt;
</description>
    </item>
    
  </channel>
</rss>
