首先编写监听8080端口的Golang应用,接着构建镜像并推送到仓库,然后创建Deployment部署应用,再根据访问需求选择ClusterIP、NodePort或LoadBalancer类型Service暴露服务,最后通过kubectl应用配置并验证服务可达性。

在使用 Golang 开发的应用部署到 Kubernetes 时,如果希望外部或其他服务能够访问该应用,需要通过 Kubernetes Service 来暴露它。Service 是一种抽象,用于定义一组 Pod 的访问策略以及如何对外提供服务。
1. 编写 Golang 应用并启用 HTTP 服务
确保你的 Golang 应用监听一个端口(例如 8080),并提供 HTTP 接口:
package mainimport ("fmt""net/http")
func hello(w http.ResponseWriter, r *http.Request) {fmt.Fprintf(w, "Hello from Go app!")}
func main() {http.HandleFunc("/", hello)fmt.Println("Server starting on port 8080...")http.ListenAndServe(":8080", nil)}
这个程序会在 8080 端口启动一个简单的 Web 服务。
2. 构建镜像并推送到镜像仓库
创建 Dockerfile:
立即学习“go语言免费学习笔记(深入)”;
FROM golang:alpine AS builderWORKDIR /appCOPY . .RUN go build -o main .FROM alpineRUN apk --no-cache add ca-certificatesWORKDIR /root/COPY --from=builder /app/main .CMD ["./main"]
构建并推送镜像:
docker build -t your-registry/go-app:v1 .docker push your-registry/go-app:v1
3. 创建 Deployment 部署 Golang 应用
编写 deployment.yaml 定义 Pod 部署:
apiVersion: apps/v1kind: Deploymentmetadata: name: go-app-deploymentspec: replicas: 2 selector: matchLabels: app: go-app template: metadata: labels: app: go-app spec: containers: - name: go-app image: your-registry/go-app:v1 ports: - containerPort: 8080
4. 创建 Service 暴露应用
根据访问需求选择合适的 Service 类型。常用类型包括 ClusterIP、NodePort 和 LoadBalancer。
ClusterIP(集群内部访问)
Android编程之Bundle及Server、布局等教程 PDF版
内容:使用Bundle在Activity间传递数据、Log与DDMS(查看Log等信息)、Activity生命周期、Android应用开发4使用Service、如何使用服务、服务生命周期、进程生命周期、使用服务进行音乐播放、AndroidUI布局等……
0 查看详情
apiVersion: v1kind: Servicemetadata: name: go-app-servicespec: selector: app: go-app ports: - protocol: TCP port: 80 targetPort: 8080 type: ClusterIP
该方式只能在集群内通过服务名或 ClusterIP 访问,适用于内部微服务调用。
NodePort(节点端口,供外部测试)
apiVersion: v1kind: Servicemetadata: name: go-app-servicespec: selector: app: go-app ports: - protocol: TCP port: 80 targetPort: 8080 nodePort: 30080 type: NodePort
外部可通过任意节点 IP 加端口 30080 访问服务(如 http://:30080)。
LoadBalancer(云平台负载均衡器)
apiVersion: v1kind: Servicemetadata: name: go-app-servicespec: selector: app: go-app ports: - protocol: TCP port: 80 targetPort: 8080 type: LoadBalancer
在 AWS、GCP 或阿里云等环境中,Kubernetes 会自动创建一个外部负载均衡器,并分配公网 IP。
5. 应用配置并验证服务
使用 kubectl 部署:
kubectl apply -f deployment.yamlkubectl apply -f service.yamlkubectl get services 查看服务状态和外部 IP浏览器或 curl 访问对应地址进行测试
基本上就这些。只要你的 Golang 服务正常运行,Pod 正确打上标签,Service 能通过 selector 找到它们,服务就能被成功暴露。关键是匹配 label 和端口设置。不复杂但容易忽略细节。
以上就是Golang如何使用Kubernetes Service暴露应用的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1111602.html
微信扫一扫
支付宝扫一扫