首页 > 其他分享 >使用minikube快速搭建一个简单的golang微服务访问

使用minikube快速搭建一个简单的golang微服务访问

时间:2024-11-21 11:45:10浏览次数:3  
标签:google mirrors golang minikube test sangfor com containers 搭建

先在宿主机的docker下载一下golang的最新镜像

docker pull golang:test

写个简单的服务器,监听7878端口,请求都返回hello, world

package main

import (
    "fmt"
    "net/http"
    "os"
)

func main() {
    fmt.Println("start main")
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "hello, world")
    })
    err := http.ListenAndServe(":7878", nil)
    if err != nil {
        panic(err)
    }
    os.Exit(0)
}

搞到docker里面制作镜像

# 先把容器起起来,-i保证不退出,-d后台启动
docker run -d -i --name test-con golang:latest
# 把文件拷贝进去
docker cp test.go test-con:/root/
# 提交镜像
docker commit test-con test-con:latest

这个时候查看docker的镜像里面就存在了我们制作的要发布的镜像

=> docker images
REPOSITORY                                                               TAG        IMAGE ID       CREATED          SIZE
test-con                                                                 latest     f6ee44e250ad   32 minutes ago   911MB
golang                                                                   latest     0457bb691895   12 days ago      838MB
mirrors.sangfor.com/google_containers/k8s-minikube/kicbase               v0.0.45    aeed0e1d4642   2 months ago     1.28GB
mirrors.sangfor.com/google_containers/kicbase                            v0.0.45    aeed0e1d4642   2 months ago     1.28GB
mirrors.sangfor.com/google_containers/coredns/coredns                    v1.11.1    cbb01a7bd410   15 months ago    59.8MB
mirrors.sangfor.com/google_containers/dashboard                          v2.7.0     07655ddf2eeb   2 years ago      246MB
mirrors.sangfor.com/google_containers/kubernetesui/dashboard             v2.7.0     07655ddf2eeb   2 years ago      246MB
mirrors.sangfor.com/google_containers/kubernetesui/metrics-scraper       v1.0.8     115053965e86   2 years ago      43.8MB
mirrors.sangfor.com/google_containers/metrics-scraper                    v1.0.8     115053965e86   2 years ago      43.8MB
mirrors.sangfor.com/google_containers/k8s-minikube/storage-provisioner   v5         6e38f40d628d   3 years ago      31.5MB
mirrors.sangfor.com/google_containers/storage-provisioner                v5         6e38f40d628d   3 years ago      31.5MB

注意,这里的镜像是宿主机的docker的,不是minikube里面的,minikube是个类似虚拟机的环境,里面还有一个docker。我们把这个镜像加载进去

minikube image load test-con:latest

然后就能看到这个这个镜像在minikube里面

=> minikube image ls
mirrors.sangfor.com/google_containers/pause:3.10
mirrors.sangfor.com/google_containers/kubernetesui/metrics-scraper:v1.0.8
mirrors.sangfor.com/google_containers/kubernetesui/dashboard:v2.7.0
mirrors.sangfor.com/google_containers/kube-scheduler:v1.31.0
mirrors.sangfor.com/google_containers/kube-proxy:v1.31.0
mirrors.sangfor.com/google_containers/kube-controller-manager:v1.31.0
mirrors.sangfor.com/google_containers/kube-apiserver:v1.31.0
mirrors.sangfor.com/google_containers/k8s-minikube/storage-provisioner:v5
mirrors.sangfor.com/google_containers/etcd:3.5.15-0
mirrors.sangfor.com/google_containers/coredns/coredns:v1.11.1
docker.io/library/test-con:latest

1) 使用pod启动镜像给外部访问

写一个yaml文件

apiVersion: v1			# 版本信息
kind: Pod				# 类型是pod
metadata:
  name: test-pod		# pod取名为test-pod
  labels:				# 添加标签,主要为了service暴露端口使用
    app: test
spec:					# 定义spec期望
  containers:
  - name: test					# 一个test镜像
    image: test-con:latest		# 使用test-con:latest镜像
    imagePullPolicy: Never		# 不允许从官方搜索,只找本地
    command: ["go"]				# 镜像启动后执行的命令
    args: ["run", "/root/test.go"]

启动一下看看效果

kubectl apply -f test.yaml

看一下pod情况

=> kubectl get pods
NAME       READY   STATUS    RESTARTS   AGE
test-pod   1/1     Running   0          38m

STATUS在Running状态就对了,但是现在还是访问不了,因为只是在pod里面监听了7878端口,但是外部还没有监听。前面讲了service是用来将pod里面的端口对外暴露使用的,那么定义一个service

apiVersion: v1
kind: Service			# 类型是service
metadata:
  name: test-service	# 起个名字
spec:
  type: NodePort		# 具体看后面解释
  selector:				# 选择器,此服务对应哪些pod
    app: test			# app为test的pod
  ports:
  - protocol: TCP
    port: 80			# 集群内部监听端口
    targetPort: 7878	# pod里面的端口
    # nodePort: 30001   # 外部监听的端口,不设置就是随机一个,设置就要取30000以上的

启动看看效果

kubectl apply -f test-service.yaml

查看service情况

=> kubectl get services
NAME           TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
kubernetes     ClusterIP   10.96.0.1       <none>        443/TCP        37d
test-service   NodePort    10.99.198.195   <none>        80:30449/TCP   57m

可以看到集群节点内部监听了80,外部暴露了一个随机端口30449,想要访问这个端口需要使用minikube对外暴露的ip。

=> minikube ip
192.168.49.2
=> curl 192.168.49.2:30449
hello, world%

到这里,自己启动的pod给外部访问成功了


使用deployment将此pod管理起来

标签:google,mirrors,golang,minikube,test,sangfor,com,containers,搭建
From: https://blog.csdn.net/qq_26124425/article/details/143891010

相关文章

  • 如何搭建一个本地化知识库问答系统,支持 PDF、Word 等自由检索,并能够实现实时对话查询?
    背景搭建一个本地知识库有许多好处。首先,它可以帮助我们集中存储和管理信息,使得查找和访问知识变得更加高效。其次,本地知识库可以提高工作效率,因为我们不必每次都依赖于互联网搜索。此外,它还有助于保护隐私,因为我们可以在本地存储敏感信息而不必上传到外部服务器。‍项目......
  • 边缘计算服务,kubeedge+kserver搭建,【AI模型推理】
    生产运行环境推荐k8s版本1.29、Istio1.21、knative1.13.1单节点k8s:最少6C6G,30g存储多节点k8s:每节点最少2c4g,20g存储注意:部署中所属文件都将分别放置于kubeedge和kserver文件夹之中1)安装istio方法1istioctlinstall-y方法2mkdir-pkservercd!$#镜像名替换脚本......
  • 从0-1逐步搭建一个前端脚手架工具并发布到npm
    前言vue-cli和create-react-app等cli脚手架工具用于快速搭建应用,无需手动配置复杂的构建环境。本文介绍如何使用rollup搭建一个脚手架工具。脚手架工具的工作流程简言为:提供远端仓库各种模版=>用户通过命令选择模版=>拉取仓库代码分别对应如下几个重要模块:......
  • 低配置硬件搭建家庭监控系统
    背景需求:某位同志曾经说过:中国人愿意用隐私换取便利。如今监控系统还是很成熟的,功能也很多,网上买个摄像头就可以实现网页也好,手机端也好的视频直播和监控录像回放,还有各种各样功能;但是作为一个家庭监控来说,这些功能太智能了,而且连接到的是厂商的大数据服务器中心,应该会用于各种......
  • VirtualBox 搭建Ubuntu系统 环境配置
    一、准备工作1.开发环境:Windows112.软件版本:VirtualBox-7.1.43.虚拟机软件:VirtualBox官方网站,直接下载最新版本即可4.Ubuntu镜像:参考文章Ubuntu最全的国内镜像下载地址(我下载的是浙江大学的,下载速度比较快)二、安装和配置VirtualBox1.安装VirtualBox打开下载的VirtualBo......
  • 前端工程化,搭建项目(eslint + preitter + husky + lint-staged + commitlint + com...)
    基本介绍本文主要描述手动搭建vite项目,并且通过eslint、preitter、husky、lint-staged、commitlint、commitizen来进行项目约束规范。创建项目首先创建项目文件夹,并初始化package.json#初始化项目,添加package.jsonnpminit#手动安装vitenpmivite-D并在根目......
  • SpringBoot项目框架搭建日志相关容易被忽视的细节
    问题项目A、B,都基于SpringBoot技术栈开发。发现其中项目A在本地IDE启动时控制台会打印spring-webmvc里@Controller的mapping映射信息,其中一行如下:2024-11-2021:10:12[main:76835]-[INFO]org.springframework.web.servlet.handler.AbstractHandlerMethodMapping$Mappi......
  • #渗透测试#SRC漏洞挖掘#红蓝攻防#地址池搭建之Zmap安装使用
    免责声明本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停止本文章阅读。                            ......
  • 【知识库搭建】提高企业知识管理和服务效率
    在当今信息爆炸的时代,企业知识管理的重要性日益凸显。有效的知识管理不仅能够促进内部信息共享,提升团队协作效率,还能增强企业的核心竞争力。本文将探讨如何通过搭建知识库系统,特别是利用HelpLook工具,优化企业知识管理和服务流程,从而提高企业运营效率。一、知识库搭建的必要性知......
  • 【知识库搭建】提高智慧医疗服务效率与质量
    随着医疗技术的不断进步和患者需求的日益增长,智慧医疗已成为医疗服务的重要发展趋势。智慧医疗通过运用信息技术,优化医疗资源配置,提升医疗服务效率和质量。本文将探讨如何通过搭建智慧医疗知识库,特别是利用HelpLook工具,提高医疗服务效率和质量。一、智慧医疗知识库的重要性智慧......