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

科技   科技   2024-01-10 09:00   江苏  
 点击上方"DevOps和k8s全栈技术"关注公众号

简介:

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.03)将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 alpineWORKDIR /appCOPY k8s-demo /appCMD ["/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/v1kind: Deploymentmetadata:  name: guess-gamespec:  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 -fdeployment.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-demoI'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


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


             点亮收藏,服务器10年不宕机

DevOps和k8s全栈技术
专注于DevOps,Kubernetes,Linux,Docker,istio,微服务,Spring Cloud,python,go,数据库,Nginx,Tomcat,云计算等技术分享~
 最新文章