将Go语言开发的Web程序部署到K8S

这篇具有很好参考价值的文章主要介绍了将Go语言开发的Web程序部署到K8S。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

搭建K8S基础环境

如果已经有K8S环境的同学可以跳过,如果没有,推荐你看看我的《Ubuntu22加Minikue搭建K8S环境》,课程目录如下:
将Go语言开发的Web程序部署到K8S,k8s,go,golang,kubernetes

Ubuntu22安装Vscode

下载:https://code.visualstudio.com/Download
将Go语言开发的Web程序部署到K8S,k8s,go,golang,kubernetes

安装命令:

sudo dpkg -i code_1.85.1-1702462158_amd64.deb

Ubuntu22搭建Golang开发环境

下载:https://studygolang.com/dl

将Go语言开发的Web程序部署到K8S,k8s,go,golang,kubernetes
将其上传到Downloads目录下。
解压:

tar -xzvf go1.21.5.linux-amd64.tar.gz

将其移动到特定目录:

mv go /usr/local/go1.21

配置环境变量:

vim ~/.bashrc

# 添加如下配置
export GOROOT=/usr/local/go1.21
export GOPATH=/home/zhangdapeng/go
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOROOT/bin
export PATH=$PATH:$GOPATH/bin
export GOPROXY=https://goproxy.io,direct

激活环境变量并测试:

source ~/.bashrc
go version

Vscode配置Golang环境

第一步:安装Go插件
将Go语言开发的Web程序部署到K8S,k8s,go,golang,kubernetes

第二步:安装Golang依赖

go install golang.org/x/tools/cmd/guru@latest
go install golang.org/x/tools/cmd/gorename@latest
go install golang.org/x/tools/cmd/fiximports@latest
go install golang.org/x/tools/cmd/gopls@latest
go install golang.org/x/tools/cmd/godex@latest

编写第一个Go程序

第一步:创建项目目录

mkdir -p ~/zdpgo/zdpgo_k8s

第二步:创建mod

cd ~/zdpgo/zdpgo_k8s
go mod init zdpgo_k8s

第三步:使用vscode打开目录

code .

第四步:创建main.go

package main

import "fmt"

func main(){
	fmt.Println("你好,张大鹏")
}

运行Go程序:

go run main.go

编写Golang HTTP应用

main.go

package main

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

func main() {
	http.HandleFunc("/", handleIndex)
	log.Fatal(http.ListenAndServe(":18888", nil))
}

func handleIndex(writer http.ResponseWriter, request *http.Request) {
	fmt.Fprintln(writer, "你好,张大鹏")
}

运行:

go run main.go

浏览器访问:http://localhost:18888/

使用Docker部署Web应用

创建Dockerfile

FROM golang:1.21-alpine AS build

# 第一次构建容器
WORKDIR /src/
COPY main.go go.* /src/
RUN export GOPROXY=https://goproxy.io && CGO_ENABLED=0 go build -o /bin/demo

# 第二次构建容器
FROM scratch
COPY --from=build /bin/demo /bin/demo
EXPOSE 18888
ENTRYPOINT ["/bin/demo"]

如果已经存在镜像,删除原来的镜像,否则可以跳过:

docker rmi myhello

构建镜像:

docker build -t myhello .

运行容器:

docker run --name myhello -p 9998:18888 -d myhello

浏览器访问:http://localhost:9998

使用K8S部署Docker镜像

登录Docker Hub

先注册一个Docker Hub的账号 ,然后执行下面的命令登录:

docker login

命名和推送镜像

# 给镜像命名
docker image tag myhello zhangdapeng520/myhello

# 将镜像推送到Docker Hub
docker image push zhangdapeng520/myhello

K8S部署镜像

如果之前的容器没有删除,则先删除之前的容器:

docker stop myhello
docker rm myhello

使用K8S部署myhello:

# 从远程拉取镜像并部署
kubectl run demo --image=zhangdapeng520/myhello --port 18888 --labels app=demo

# 部署本地镜像 imagePullPolicy: Never
kubectl run demo --image=zhangdapeng520/myhello --image-pull-policy=IfNotPresent --port 18888 --labels app=demo

查看K8S部署的容器状态

部署以后,通过以下命令,可以查看我们部署的容器的状态:

kubectl get pods --selector app=demo

启用K8S的端口转发

此时,我们访问 http://localhost:18888/ 是没有办法成功的。因为我们在使用Docker进行部署的时候,也需要做端口转发才能够正常访问,部署到K8S的时候,也需要进行端口转发才能够正常访问。

通过以下命令,可以实现K8S的端口转发:

kubectl port-forward pod/demo 9998:18888

这里的 pod/demo 是我们K8S部署的时候,指定的run demo。这里的9998:18888就和Docker的映射方式类似了,将宿主机的9998端口映射到K8S的18888端口。

端口转发以后,我们访问 http://localhost:9998/ 就可以成功了。

删除容器

使用以下命令,可以删除部署到K8S的容器:文章来源地址https://www.toymoban.com/news/detail-776548.html

kubectl delete pod demo

到了这里,关于将Go语言开发的Web程序部署到K8S的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用脚本把springboot程序部署到k8s上

    一般我们部署写4个文件就行了 首先分别写 Dockerfile 1package.sh 2build.sh docker_push.sh Dockerfile springboot打包 1package.sh 从github上拉下来,打成jar包 2build.sh docker_push.sh 将docker镜像推送到k8s tips 最后生成的文件

    2024年02月01日
    浏览(34)
  • Python应用程序部署至K8s——循序渐进版

    (1)Pod处于一直Pending状态 解决方法参考:0/1 nodes are available: 1 node(s) had taint {node-role.kubernetes.io/master: }, that the pod didn‘t-CSDN博客 (2)Pod处于CrashLoopBackOff状态 原因:python不能够常驻,只能运行一次,且是后台运行情况,则会出错。 解决方法:将程序设置成能够常驻的,并且

    2024年03月22日
    浏览(73)
  • K8S单机部署-01.单机部署K8S

    转载请注明出处 K8S单机部署-00.旧版本卸载 K8S单机部署-01.单机部署K8S K8S单机部署-02.Kuboard面板部署 K8S单机部署-03.验证K8S的第一个Deployment K8S单机部署-04.NFS服务器搭建 K8S单机部署-05.静态持久化之PV、PVC(基于NFS) K8S单机部署-06.动态持久化StorageClass(基于NFS) K8S单机部署-07.调整

    2024年04月24日
    浏览(31)
  • 开源项目ChatGPT-Next-Web的容器化部署(四)-- k8s容器部署使用configmap配置

    本文的内容是在k8s容器中,如何使用configmap对.env文件进行挂载,实现环境的差异化配置。 项目ChatGPT-Next-Web使用了.env文件来配置不同环境下的值: 所以,我们同理新增两个配置文件,见下: 生产环境的.env文件对应生产环境的数据库连接等信息,不可能写在上面的源码中。

    2024年04月12日
    浏览(41)
  • k8s入门:裸机部署 k8s 集群

    系列文章 第一章:✨ k8s入门:裸机部署 k8s 集群 第二章:✨ k8s入门:部署应用到 k8s 集群 第三章:✨ k8s入门:service 简单使用 第四章:✨ k8s入门:StatefulSet 简单使用 第五章:✨ k8s入门:存储(storage) 第六章:✨ K8S 配置 storageclass 使用 nfs 动态申领本地磁盘空间 第七章:

    2023年04月20日
    浏览(38)
  • K8s进阶之路-安装部署K8s

    参考:(部署过程参考的下面红色字体文档链接就可以,步骤很详细,重点部分在下面做了标注)  安装部署K8S集群文档: 使用kubeadm方式搭建K8S集群 · GitBook 本机: master:10.0.0.13 master            node1: 10.0.0.11 node1            node2: 10.0.0.12 node2 #systemctl stop firewalldsy

    2024年02月22日
    浏览(39)
  • K8S:K8S部署常见错误及解决方法

    目录 1、node节点kubelet服务起不来 2、安装cni网络插件时 kubectl get node master和node一直noready①有延时,需要等待10分钟左右,超过15分钟则有问题 3、部署报错kubectl get nodes No resources found 4、k8s部署报错error:kubectl get csr No resources found 问题:node节点kublet起不来服务器内存资源不足

    2024年02月09日
    浏览(35)
  • k8s 入门到实战--部署应用到 k8s

    k8s 入门到实战 01.png 本文提供视频版: 最近这这段时间更新了一些 k8s 相关的博客和视频,也收到了一些反馈;大概分为这几类: 公司已经经历过服务化改造了,但还未接触过云原生。 公司部分应用进行了云原生改造,但大部分工作是由基础架构和运维部门推动的,自己只

    2024年02月09日
    浏览(31)
  • [k8s] arm64架构下k8s部署的坑

    本次测试在华为kunpeng-920机器上,cpu配置如下: 操作系统是中标麒麟 麒麟自带仓库里面的k8s版本最高是1.15,比较低了。所以配置了k8s官方源(基于el7,dddd) 本次安装1.23(写这篇文章时候,最新的是1.27。但是安装1.27有点问题,就选了1.23) 利用kubeadm部署,利用 kubeadm confi

    2024年02月11日
    浏览(42)
  • K8s 部署 CNI 网络组件+k8s 多master集群部署+负载均衡

    ------------------------------ 部署 CNI 网络组件 ------------------------------ ---------- 部署 flannel ---------- K8S 中 Pod 网络通信: ●Pod 内容器与容器之间的通信 在同一个 Pod 内的容器(Pod 内的容器是不会跨宿主机的)共享同一个网络命名空间,相当于它们在同一台机器上一样,可以用 lo

    2024年02月08日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包