云海的博客
首页
  • 接口
  • 数组
  • slice
  • map
  • 指针
  • 反射
  • Context
  • sync.map
  • 锁
  • 类型和类型指针分析
  • recover
  • 从零实现RPC框架
  • make和new区别
  • channel
  • sync.Once
  • sync.Pool
  • protobuf
  • MongoDB pkg源码-findone
  • MyBatis
  • Maven
  • 解析Laravel框架—路由处理
  • PHP(客户端)与 Golang(服务端)使用grpc+protobuf 通信
  • JAVA(客户端)与 Golang(服务端) 使用grpc+protobuf通信
  • Docker使用笔记-常用命令
  • Docker使用笔记-容器间通讯
  • Docker使用笔记-搭建Redis集群
  • Docker使用笔记-镜像多阶段构建
  • Kubernetes部署golang服务
  • Linux常用命令
  • Docker安装Prometheus与Grafana
  • Protobuf
  • TCP抓包
  • 概述-《TCP/IP详解》读书笔记
  • 索引
  • 事务隔离级别
  • 常识
  • 每日一题(1)
  • 每日一题(2)
  • 每日一题(3)
  • 每日一题(4)
关于
GitHub (opens new window)

云海

服务端研发
首页
  • 接口
  • 数组
  • slice
  • map
  • 指针
  • 反射
  • Context
  • sync.map
  • 锁
  • 类型和类型指针分析
  • recover
  • 从零实现RPC框架
  • make和new区别
  • channel
  • sync.Once
  • sync.Pool
  • protobuf
  • MongoDB pkg源码-findone
  • MyBatis
  • Maven
  • 解析Laravel框架—路由处理
  • PHP(客户端)与 Golang(服务端)使用grpc+protobuf 通信
  • JAVA(客户端)与 Golang(服务端) 使用grpc+protobuf通信
  • Docker使用笔记-常用命令
  • Docker使用笔记-容器间通讯
  • Docker使用笔记-搭建Redis集群
  • Docker使用笔记-镜像多阶段构建
  • Kubernetes部署golang服务
  • Linux常用命令
  • Docker安装Prometheus与Grafana
  • Protobuf
  • TCP抓包
  • 概述-《TCP/IP详解》读书笔记
  • 索引
  • 事务隔离级别
  • 常识
  • 每日一题(1)
  • 每日一题(2)
  • 每日一题(3)
  • 每日一题(4)
关于
GitHub (opens new window)
  • Docker使用笔记-常用命令
  • Docker使用笔记-镜像多阶段构建
  • Docker使用笔记-搭建Redis集群
  • Docker使用笔记-容器间通讯
  • Kubernetes部署golang服务
    • Linux命令
    • 网关浅析
    • Nginx配置
    • Protobuf
    • Docker安装Prometheus与Grafana
    • EFK日志收集系统单机版
    • 微服务
    云海
    2021-06-21
    目录

    Kubernetes部署golang服务

    # 前提

    • 需要在docker hub 注册一个账号,用于上传镜像使用

    # 创建web应用

    # web应用代码如下:
    package main
    
    import (
        "fmt"
        "net/http"
    )
    
    func index(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "hello world")
    }
    
    func main() {
        http.HandleFunc("/", index)
        fmt.Println("server start")
        http.ListenAndServe(":3000", nil)
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16

    # 创建docker 镜像

    # Dockerfile如下
    FROM golang:alpine
    RUN mkdir /app
    COPY . /app
    WORKDIR /app
    RUN go mod init app
    RUN go build -o main .
    CMD ["/app/main"]
    
    1
    2
    3
    4
    5
    6
    7
    # 构建这个镜像
    //calm2020 是我的docker hub账号
    docker build -t calm2020/go-app-img .
    
    1
    2
    # 运行
    docker run -d -p 3333:3000 --name go-app-container calm2020/go-app-img
    
    1
    # 镜像推送到docker hub镜像站
    # 1.本地使用docker login 命令登陆
    # 2.使用如下命令推送
    //calm2020 是我的docker hub账号
    docker push calm2020/go-app-img:latest 
    
    1
    2
    # k8s部署golang服务

    部署yaml文件如下

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: my-go-app
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: go-app
      template:
        metadata:
          labels:
            app: go-app
        spec:
          containers:
          - name: go-app-container
            image: calm2020/go-app-img
            resources:
              limits:
                memory: "128Mi"
                cpu: "500m"
            ports:
            - containerPort: 3000
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    # 执行部署命令
    kubectl create -f deployment.yaml
    
    1
    # 查看部署结果
    kubectl get deployments
    
    kubectl get pods
    
    1
    2
    3
    # 暴漏服务端口(exposing the go-app pod)
    kubectl expose deployment my-go-app --type=NodePort --name=go-app-svc --target-port=3000 
    
    1
    上次更新: 2023/01/11
    Docker使用笔记-容器间通讯
    Linux命令

    ← Docker使用笔记-容器间通讯 Linux命令→

    最近更新
    01
    函数
    04-11
    02
    面试题
    04-11
    03
    EFK日志收集系统单机版
    08-18
    更多文章>
    Theme by Vdoing | Copyright © 2022-2025 Evan Xu | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式