基于K8S运行一个猜字游戏程序:包含完整步骤|附带Go开发贪吃蛇小游戏

▲ 点击上方"DevOps和k8s全栈技术"关注公众号

韩先超简介:

36af61b94d06814c467a5fe8798bbd38.png

Kubernetes简写成K8s,K8s是可移植、可扩展、开源的容器管理平台,可以对容器自动化部署、自动化扩缩容、跨主机管理等,可以对代码进行灰度发布、金丝雀发布、蓝绿发布、滚动更新等,具有完整的监控系统和日志收集平台,具有故障自恢复的能力。

以下是将开发写好的代码部署到K8s集群的完整流程,大家可以仔细阅读哦~

1、把开发写好的代码跑在k8s里具体步骤:

1)编写Dockerfile:使用Dockerfile构建一个Docker镜像,其中包含应用程序和相关的依赖项。
2)构建Docker镜像:使用docker build命令构建Docker镜像。例如,docker build -t my-image:1.0 .将构建一个名为my-image的镜像,并将版本号设置为1.0
3)将Docker镜像推送到镜像仓库:可以使用docker push命令将Docker镜像推送到Docker镜像仓库中,以便在Kubernetes集群中使用。例如,docker push my-image:1.0将镜像推送到Docker Hub中。
4)编写Kubernetes清单文件:编写Kubernetes清单文件,其中包含Deployment、Service、ConfigMap等资源的定义,以便将应用程序部署到Kubernetes集群中。在清单文件中,需要指定镜像名称和版本,容器端口等信息。
5)应用Kubernetes清单文件:使用kubectl apply命令将Kubernetes清单文件应用到Kubernetes集群中。例如,kubectl apply -f my-app.yaml将应用名为my-app的清单文件。
6)查看应用状态:可以使用kubectl命令查看应用程序在Kubernetes中的状态。例如,kubectl get pods将列出所有正在运行的Pod。
7)访问应用程序:使用Service的IP地址和端口号可以访问应用程序。根据Service类型的不同,访问方式也有所不同。


2、基于go代码写一个猜字小游戏

1)写代码

[root@xianchaomaster1~]# mkdir caizi
[root@xianchaomaster1~]# cd caizi/
[root@xianchaomaster1caizi]# cat main.go
package main


import (
  "fmt"
  "math/rand"
  "time"
)


const maxGuesses = 10


func main() {
  rand.Seed(time.Now().UnixNano())
  number := rand.Intn(100) + 1


  fmt.Println("I'm thinking of a number between 1 and 100.")
  fmt.Printf("You have %d guesses.\n", maxGuesses)


  for guesses := 1; guesses <= maxGuesses; guesses++ {
    fmt.Printf("Guess #%d: ", guesses)
    var guess int
    _, err := fmt.Scanln(&guess)
    if err != nil {
      fmt.Println("Invalid input. Please enter an integer.")
      continue
    }
    if guess < 1 || guess > 100 {
      fmt.Println("Invalid input. Please enter a number between 1 and 100.")
      continue
    }
    if guess < number {
      fmt.Println("Too low.")
    } else if guess > number {
      fmt.Println("Too high.")
    } else {
      fmt.Printf("Correct! You guessed the number in %d guesses.\n", guesses)
      return
    }
  }


  fmt.Printf("Sorry, you did not guess the number. It was %d.\n", number)
}

#初始化项目

[root@xianchaomaster1caizi]# go mod init test

#设置代理

[root@xianchaomaster1caizi]# go env -w GOPROXY=https://goproxy.cn,direct

#拉取依赖包

[root@xianchaomaster1caizi]# go mod tidy

#构建源码

[root@xianchaomaster1caizi]# CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o k8s-demo main.go

2)基于dockerfile做镜像

#写dockerfile文件

[root@xianchaomaster1 caizi]# cat dockerfile

FROM alpine
WORKDIR /app
COPY k8s-demo /app
CMD ["/bin/sh","-c","./k8s-demo"]

#基于dockerfile文件制作镜像

[root@xianchaomaster1 caizi]# docker build -t docker.io/library/k8sgame:v1 .
[root@xianchaomaster1 caizi]# docker save -o k8sgame.tar.gz docker.io/library/k8sgame:v1
[root@xianchaomaster1 caizi]# scp k8sgame.tar.gz xianchaonode1:/root/
[root@xianchaomaster1 caizi]# scp k8sgame.tar.gz xianchaonode2:/root/
[root@xianchaonode1 ~]# ctr -n=k8s.io images import k8sgame.tar.gz
[root@xianchaonode2 ~]# ctr -n=k8s.io images import k8sgame.tar.gz

3)创建pod

[root@xianchaomaster1 caizi]# cat deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: guess-game
spec:
  replicas: 1
  selector:
    matchLabels:
      app: guess-game
  template:
    metadata:
      labels:
        app: guess-game
    spec:
      containers:
        - name: guess-game
          image: docker.io/library/k8sgame:v1
          imagePullPolicy: IfNotPresent
          command: ["/bin/sh","-c","sleep 3600"]

#基于yaml文件创建pod

[root@xianchaomaster1 caizi]# kubectl apply -f
deployment.yaml

#查看pod

[root@xianchaomaster1 caizi]# kubectl get pods -owide

显示如下:

NAME                        READY   STATUS   RESTARTS      IP                      
guess-game-6c9b4df786-892ds 1/1      Running   0          10.244.121.35

进到pod里

[root@xianchaomaster1 caizi]# kubectl exec -it guess-game-6c9b4df786-892ds
-- /bin/sh
/app # ./k8s-demo
I'm thinking of a number between 1 and 100.
You have 10 guesses.
Guess #1:

本周精彩文章推荐

2、现代化战机之路:美国空军U-2侦察机基于Jenkins和k8s的CI/CD架构演进

3、干掉99%传统运维:基于Jenkins和K8S构建DevOps流水线

4、合肥电信/Kubernetes技术培训

5、安全实践:保障 Kubernetes 生产环境的安全性

6、Kubernetes 1.29 发布:新增特性一览

作者微信:luckylucky421302

5666a39af389583c027175331879ce78.png

加微信,可以进学习交流群。

             点亮收藏,服务器10年不宕机751173c7be7a0730a9e48a3ec87cafb1.gif

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

韩先超

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值