<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Kubernetes on yafeiaa Blogs</title>
    <link>https://yafeiaa.github.io/tags/kubernetes/</link>
    <description>Recent content in Kubernetes on yafeiaa Blogs</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Wed, 14 Jan 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://yafeiaa.github.io/tags/kubernetes/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Agones SDK-Server 与 Allocator</title>
      <link>https://yafeiaa.github.io/posts/agones%E4%BD%93%E9%AA%8C/</link>
      <pubDate>Wed, 14 Jan 2026 00:00:00 +0000</pubDate>
      <guid>https://yafeiaa.github.io/posts/agones%E4%BD%93%E9%AA%8C/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;&#xA;&lt;p&gt;Agones 通过 SDK-Server 让 GameServer 自己管理生命周期状态。每个 GameServer 启动时会连接本地的 SDK Server，通过 gRPC API 同步状态。&lt;/p&gt;&#xA;&lt;p&gt;在实际部署时，sdk-server 会作为一个 sidecar 容器，和 gameserver 容器共享 network namespace，所以 gmaeserver 可以直接以 localhost 访问 sdk-server 的 api。&lt;/p&gt;&#xA;&lt;p&gt;sdk-server 作为 agones 和 gameserver 之间的状态同步器，负责将 gameserver 的状态同步给 agones，以及将 agones 的分配请求同步给 gameserver。&lt;/p&gt;&#xA;&lt;h2 id=&#34;allocator-service&#34;&gt;Allocator Service&lt;/h2&gt;&#xA;&lt;p&gt;Allocator 是 Agones 提供的 gRPC 服务，用于分配 GameServer。它监听集群中所有 Ready 状态的 GameServer，当收到分配请求时，选择一个合适的 GameServer 并将其状态改为 Allocated。&lt;/p&gt;&#xA;&lt;p&gt;Allocator 提供了两种分配方式：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;gRPC Service&lt;/strong&gt; - 直接调用 gRPC API（适合高性能、安全性要求高的场景，通过mtls认证）&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Allocation API&lt;/strong&gt; - 通过 Kubernetes CRD &lt;code&gt;GameServerAllocation&lt;/code&gt;（更简单，通过k8s api调用）&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;核心-api&#34;&gt;核心 API&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Ready()&lt;/strong&gt; - 标记就绪，可以被分配&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Health()&lt;/strong&gt; - 发送心跳，保持健康状态&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Shutdown()&lt;/strong&gt; - 通知关闭&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;SetAnnotation()&lt;/strong&gt; - 设置自定义信息（如 自定义的对外访问地址）&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;WatchGameServer()&lt;/strong&gt; - 监听状态变化&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;状态流转&#34;&gt;状态流转&lt;/h2&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Port -&amp;gt; Ready -&amp;gt; Allocated -&amp;gt; Shutdown&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;Port&lt;/strong&gt; - 刚启动，等待 Ready&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Ready&lt;/strong&gt; - 调用 &lt;code&gt;Ready()&lt;/code&gt; 后进入，等待分配&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Allocated&lt;/strong&gt; - 被 match-maker 分配后进入，开始游戏逻辑&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Shutdown&lt;/strong&gt; - 调用 &lt;code&gt;Shutdown()&lt;/code&gt; 或收到关闭信号后进入&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;一个dedicate-server和-match-maker通过-sdk-server-和-allocator-交互的例子&#34;&gt;一个dedicate-server和 match-maker通过 sdk-server 和 allocator 交互的例子&lt;/h2&gt;&#xA;&lt;h3 id=&#34;dedicate-server&#34;&gt;dedicate-server&lt;/h3&gt;&#xA;&lt;p&gt;启动流程：&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
