走到这里我们应该做个东西出来,不然会显得枯燥无味
我们就用 2048 这款游戏 + 我的服务转发 + matellb 做一个小游戏转发吧

服务转发:https://github.com/elysia673/Aether/tree/Unified-acquisition-method

2048游戏:swr.cn-north-4.myhuaweicloud.com/firfe/2048-3:2025.08.14-arm64

这个服务转发还没有完全写完,等我写的差不多了,再完整的讲一下这个程序

1、2048部署


root@k8s-master-u2404-4-100-101:~# mkdir game
root@k8s-master-u2404-4-100-101:~# cd game/
root@k8s-master-u2404-4-100-101:~/game# vim 2048.yaml
root@k8s-master-u2404-4-100-101:~/game# cat 2048.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: game-2048-arm64
  labels:
    app: game-2048
spec:
  replicas: 1
  selector:
    matchLabels:
      app: game-2048
  template:
    metadata:
      labels:
        app: game-2048
    spec:
      nodeSelector:
        kubernetes.io/arch: arm64
      containers:
        - name: game-2048
          image: swr.cn-north-4.myhuaweicloud.com/firfe/2048-3:2025.08.14-arm64
          ports:
            - containerPort: 5132
              protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
  name: game-2048-svc
spec:
  type: LoadBalancer
  ports:
    - port: 80
      targetPort: 5132
      protocol: TCP
  selector:
    app: game-2048

root@k8s-master-u2404-4-100-101:~/game# kubectl apply -f 2048.yaml 
deployment.apps/game-2048-arm64 created
service/game-2048-svc created

root@k8s-master-u2404-4-100-101:~/game# kubectl get pod -A
NAMESPACE        NAME                                       READY   STATUS    RESTARTS      AGE
default          game-2048-arm64-89f4cd8fb-tkjcx            1/1     Running   0             12s
ingress-nginx    ingress-nginx-controller-856559d89-8s78b   1/1     Running   0             20h
ingress-nginx    ingress-nginx-controller-856559d89-mpq4h   1/1     Running   0             20h
ingress-nginx    ingress-nginx-controller-856559d89-r9v8b   1/1     Running   0             20h
kube-system      calico-kube-controllers-ddf655445-tj7p8    1/1     Running   0             21h
kube-system      calico-node-9k7v4                          1/1     Running   0             21h
kube-system      calico-node-b82vq                          1/1     Running   0             20h
kube-system      calico-node-g5bb7                          1/1     Running   0             20h
kube-system      coredns-66b4b89955-665qv                   1/1     Running   0             20h
metallb-system   controller-54d6798f4-m6fs9                 1/1     Running   7 (19h ago)   19h
metallb-system   speaker-2w7x4                              1/1     Running   0             19h
metallb-system   speaker-qvc2j                              1/1     Running   0             19h
metallb-system   speaker-vddkb                              1/1     Running   0             19h

root@k8s-master-u2404-4-100-101:~/game# kubectl get svc -A
NAMESPACE        NAME                                 TYPE           CLUSTER-IP   EXTERNAL-IP       PORT(S)                      AGE
default          game-2048-svc                        LoadBalancer   10.0.0.91    192.168.148.201   80:30283/TCP                 32s
default          kubernetes                           ClusterIP      10.0.0.1     <none>            443/TCP                      22h
ingress-nginx    ingress-nginx-controller             LoadBalancer   10.0.0.64    192.168.148.200   80:30655/TCP,443:32643/TCP   20h
ingress-nginx    ingress-nginx-controller-admission   ClusterIP      10.0.0.69    <none>            443/TCP                      20h
kube-system      kube-dns                             ClusterIP      10.0.0.2     <none>            53/UDP,53/TCP,9153/TCP       20h
metallb-system   metallb-webhook-service              ClusterIP      10.0.0.177   <none>            443/TCP                      19h

2、服务转发


(base) ailixiya@HUAWEI-MateBook-X-Pro ~ % aether-cli create hd_k8s_arm_n1 -remote 17335 -local 80 -bind 0.0.0.0 -local-ip 192.168.148.201
代理创建成功
公网地址: elysia.media:17335
(base) ailixiya@HUAWEI-MateBook-X-Pro ~ % 

3、双向验证


k8s端验证

root@k8s-master-u2404-4-100-101:~# kubectl get svc -A
NAMESPACE        NAME                                 TYPE           CLUSTER-IP   EXTERNAL-IP       PORT(S)                      AGE
default          game-2048-svc                        LoadBalancer   10.0.0.91    192.168.148.201   80:30283/TCP                 2d19h
default          kubernetes                           ClusterIP      10.0.0.1     <none>            443/TCP                      3d17h
ingress-nginx    ingress-nginx-controller             LoadBalancer   10.0.0.64    192.168.148.200   80:30655/TCP,443:32643/TCP   3d15h
ingress-nginx    ingress-nginx-controller-admission   ClusterIP      10.0.0.69    <none>            443/TCP                      3d15h
kube-system      kube-dns                             ClusterIP      10.0.0.2     <none>            53/UDP,53/TCP,9153/TCP       3d15h
metallb-system   metallb-webhook-service              ClusterIP      10.0.0.177   <none>            443/TCP                      3d15h
root@k8s-master-u2404-4-100-101:~# curl 192.168.148.201:80
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=0">
        <title>海拥 | 2048</title>
        <!-- <meta name="keywords" content="游戏" />
        <meta name="description" content="游戏 | 2048小游戏;立志打造一个拥有100个小游戏的摸鱼网站。Made By Haiyong,技术支持——海拥" /> 
        <meta name="author" content="海拥(http://haiyong.site/game)" />
        <meta name="copyright" content="海拥(http://haiyong.site/game)" />
        <link rel="icon" href="http://haiyong.site/wp-content/uploads/2021/07/cropped-59255587-1-192x192.jpg" sizes="192x192" /> -->
        <link rel="stylesheet" href="css/style.css"/>
    </head>

    <body>

        <header>
            <div class="container">
                <h1><span>2</span><span>0</span><span>4</span><span>8</span></h1>
                <p class="inspired">by the 原2048的灵感</p>
            </div>
        </header>

        <div class="container">
            <div class="directions">
                <p id="haiyong" class="haiyong"><strong>如何玩:</strong> 使用鼠标方向键键移动数字方块。相邻的两个方块数字相同,它们可合并成一个!</p>
            </div>
            <div class="scores">
                <div class="score-container best-score">
                    历史最高
                    <div class="score">
                        <div id="bestScore">0</div>
                    </div>
                </div>
                <div class="score-container">
                    分数:
                    <div class="score">
                        <div id="score">0</div>
                        <div class="add" id="add"></div>
                    </div>
                </div>
            </div>
            <div class="game">
                <div id="tile-container" class="tile-container"></div>
                <div class="end" id="end">游戏结束<div class="monkey">🙈</div><button class="btn not-recommended__item js-restart-btn"
                     id="try-again">再试一次</button></div>
            </div>

            <div class="not-recommended">
                <button class="btn not-recommended__item js-restart-btn" id="restart">重新启动游戏</button>
                <span class="not-recommended__annotation"></span>
            </div>
            <footer>
              <!-- <span class="author">Created by <a href="http://haiyong.site/index">Haiyong</a></span>

              <span class="center">2048</span>

              <span class="opposite">友链:<a href="https://www.captainai.net/haiyong">人工智能学习</a></span> -->
                <a href="https://github.com/wanghao221/moyu" target="_blank" style="border-bottom: none;">原项目仓库</a>
                <a href="https://github.com/Firfr/2048-3" target="_blank" style="border-bottom: none;">镜像制作仓库</a>
            </footer>

        </div>

        <script src="js/script.js"></script>
    </body>
</html>
浏览器验证

www.elysia.media:17335

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注