<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
        <title>容器编排 - 标签 - lihuu — 系统工程、AI 工具链与 Rust 开发博客</title>
        <link>https://silentstormic.top/tags/%E5%AE%B9%E5%99%A8%E7%BC%96%E6%8E%92/</link>
        <description>容器编排 - 标签 - lihuu — 系统工程、AI 工具链与 Rust 开发博客</description>
        <generator>Hugo -- gohugo.io</generator><language>zh-CN</language><lastBuildDate>Thu, 22 May 2025 13:35:24 &#43;0800</lastBuildDate><atom:link href="https://silentstormic.top/tags/%E5%AE%B9%E5%99%A8%E7%BC%96%E6%8E%92/" rel="self" type="application/rss+xml" /><item>
    <title>Kubernetes 二进制部署：从零搭建单 Master 集群</title>
    <link>https://silentstormic.top/post/k8s-binary-install/</link>
    <pubDate>Thu, 22 May 2025 13:35:24 &#43;0800</pubDate>
    <author>lihuu</author>
    <guid>https://silentstormic.top/post/k8s-binary-install/</guid>
    <description><![CDATA[<p>使用 kubeadm 部署 Kubernetes 集群很方便，但它隐藏了底层细节。通过二进制方式手动部署，可以深入理解每个组件的作用和协作方式。</p>
<p>本文在 <a href="/post/etcd/" rel="">etcd 集群</a> 已部署的基础上，搭建单 Master 节点的 Kubernetes 集群。</p>
<h2 id="架构概览">架构概览</h2>
<p>单 Master 架构中，Master 节点运行控制平面组件，Worker 节点运行工作负载：</p>
<p></p>
<h3 id="核心组件">核心组件</h3>
<table>
  <thead>
      <tr>
          <th>组件</th>
          <th>运行位置</th>
          <th>作用</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><strong>kube-apiserver</strong></td>
          <td>Master</td>
          <td>集群入口，所有操作的统一接口</td>
      </tr>
      <tr>
          <td><strong>etcd</strong></td>
          <td>Master</td>
          <td>分布式键值存储，保存集群状态</td>
      </tr>
      <tr>
          <td><strong>kube-controller-manager</strong></td>
          <td>Master</td>
          <td>控制循环，确保实际状态匹配期望状态</td>
      </tr>
      <tr>
          <td><strong>kube-scheduler</strong></td>
          <td>Master</td>
          <td>将 Pod 调度到合适的 Node</td>
      </tr>
      <tr>
          <td><strong>kubelet</strong></td>
          <td>Worker</td>
          <td>管理 Pod 生命周期，汇报节点状态</td>
      </tr>
      <tr>
          <td><strong>kube-proxy</strong></td>
          <td>Worker</td>
          <td>实现 Service 网络代理和负载均衡</td>
      </tr>
  </tbody>
</table>
<h3 id="组件协作流程">组件协作流程</h3>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-text">
        <span class="code-title"><i class="arrow fas fa-angle-right fa-fw" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h fa-fw" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy fa-fw" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">kubectl create deployment nginx --image=nginx
</span></span><span class="line"><span class="cl">        │
</span></span><span class="line"><span class="cl">        ▼
</span></span><span class="line"><span class="cl">  kube-apiserver ──→ etcd（存储期望状态）
</span></span><span class="line"><span class="cl">        │
</span></span><span class="line"><span class="cl">        ▼
</span></span><span class="line"><span class="cl">  controller-manager（创建 ReplicaSet → 创建 Pod）
</span></span><span class="line"><span class="cl">        │
</span></span><span class="line"><span class="cl">        ▼
</span></span><span class="line"><span class="cl">  scheduler（选定 Node，写入 Pod.Spec.NodeName）
</span></span><span class="line"><span class="cl">        │
</span></span><span class="line"><span class="cl">        ▼
</span></span><span class="line"><span class="cl">  kubelet（watch 到分配给自己的 Pod，拉起容器）
</span></span><span class="line"><span class="cl">        │
</span></span><span class="line"><span class="cl">        ▼
</span></span><span class="line"><span class="cl">  kube-proxy（配置 iptables/IPVS 规则，实现 Service 访问）</span></span></code></pre></div></div>
<h2 id="前置条件">前置条件</h2>
<table>
  <thead>
      <tr>
          <th>条件</th>
          <th>说明</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>etcd 集群</td>
          <td>已部署，参考 <a href="/post/etcd/" rel="">etcd 集群部署</a></td>
      </tr>
      <tr>
          <td>操作系统</td>
          <td>Linux（本文以 Ubuntu 为例）</td>
      </tr>
      <tr>
          <td>容器运行时</td>
          <td>containerd 或 Docker 已安装，参考 <a href="/post/docker%e5%85%a5%e9%97%a8/" rel="">Docker 入门</a></td>
      </tr>
      <tr>
          <td>网络</td>
          <td>节点间互通，关闭 swap</td>
      </tr>
  </tbody>
</table>
<h3 id="关闭-swap">关闭 swap</h3>
<p>Kubernetes 默认要求关闭 swap：</p>]]></description>
</item>
</channel>
</rss>
