我的k8s集群下的第一个go程序

109 阅读2分钟

创建好你需要的go的代码

1.png

书写dockerfile文件

`FROM golang:1.16 as builder
ENV GOOS linux
ENV GOPROXY=https://goproxy.cn
WORKDIR $GOPATH/src/gin-demo
COPY . .
RUN go mod download
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o main .
FROM scratch
ENV GIN_MOD=release
WORKDIR /gin-demo
COPY --from=builder /go/src/gin-demo/main .
EXPOSE 9090
ENTRYPOINT [“./main”]

这里暴露的9090端口需要和你在go中程序暴露的端口是一致的

将镜像上传到私域或者是dockerHub里面

登录你的dockerhub账户,进行镜像上传

docker tag gin-demo:latest 843665303/gin-demo:v1.0
docker push 843665303/gin-demo:v1.0

搭建k8s集群

新建文件namespace.yaml文件

2.png `kubectl apply -f namespace.yaml
kubectl get ns //查看存在的命名空间
kubectl delete namespaces hello // 删除命令

生成命名空间,如果后面的service和deployment都是命名空间,则参数需要增加 -n参数表达式`

生成deployment.yaml文件

3.png

生成deployment,注意apiversion上面的apps不要忘记了
containerPort: 9090 这里暴露的是containers端口,就是访问containers端口从而能够访问到容器指定的端口
kubectl apply -f deployment.yamlkubectl get deployment -n hello//查看deployment,-n表示获取具体的命名空间下kubectl delete deployment hello-world-app -n hello # 删除

部署service

4.png

kubectl apply -f service.yamlkubectl get svc -n hello //查看servicekubectl get pods -n gin-demo //获取命名空间下一共有多少个pods的在使用
通过访问url:http://127.0.0.1:30001/hello直接访问到服务
犯错记录
1、COPY --from=builde 来自上面的第一个FROM,当时没有注意到
2、gin里面启动带有地址进行启动了,导致一直容器外面访问不到容器内部的http服务。gin.RUN(“localhost:9090”)这样进行启动了3、windows里面的docker启动kubernates比较久可能是网络超时的原因可以通过采用如下是访问如下的链接地址

至此完结。

github地址

欢迎关注我的公众号:程序员技术成长之路

教你更多的BAT知识