K8s部署发布Golang应用程序的实现方法


Posted in Golang onJuly 16, 2021

创建dockerfile

FROM golang:1.14-alpine
ENV GOPROXY=https://goproxy.cn
WORKDIR /build
COPY . .
EXPOSE 8088
RUN mkdir /app
RUN  go mod tidy
RUN go build -o /app/alertGo alertGo.go
WORKDIR /app
CMD ["/app/alertGo"]

打包并且推送

docker build -t 10.206.16.4/k8s-go/alert.sentsss.com:v2 .
docker push 10.206.16.4/k8s-go/alert.sentsss.com:v2

创建namespace

apiVersion: v1
kind: Namespace
metadata:
  name: k8s-go

创建deployment

apiVersion: apps/v1
kind: Deployment
metadata:
  name: alertgo
  namespace: k8s-go
spec:
  selector:
    matchLabels:
      app: alertgo
  replicas: 2
  template:
    metadata:
      labels:
        app: alertgo
    spec:
      imagePullSecrets:
      - name: registry-pull-secret
      containers:
        - name: alertgo
          image: 10.206.16.4/k8s-go/alert.sentsss.com:v2
          ports:
            - containerPort: 8088
          livenessProbe:
            httpGet:
              path: /
              port: 8088
            initialDelaySeconds: 30
            periodSeconds: 10
            successThreshold: 1
            failureThreshold: 3
            timeoutSeconds: 1
          readinessProbe:
            httpGet:
              path: /
              port: 8088
            initialDelaySeconds: 30
            periodSeconds: 10
            successThreshold: 1
            failureThreshold: 3
            timeoutSeconds: 1
          lifecycle:
            preStop:
              exec:
                command: ["/bin/bash","-c","sleep 20"]
          resources:
            limits:
              cpu: 20m
              memory: 20Mi
            requests:
       cpu: 10m
              memory: 10Mi

创建service

apiVersion: v1
kind: Service
metadata:
  name: alertgo
  namespace: k8s-go
spec:
  selector:
    app: alertgo
  ports:
    - port: 80
      targetPort: 8088

创建ingress

kind: Ingress # 对象类型
apiVersion: networking.k8s.io/v1beta1
metadata:
  name: alertgo
  namespace: k8s-go
spec:
  rules:
    - host: alertgo.xxx.com
      http:
        paths:
        - path: /
          backend:
            serviceName: alertgo 
            servicePort: 80

创建hpa

kind: HorizontalPodAutoscaler # 对象类型,简称 hpa,水平自动伸缩
apiVersion: autoscaling/v2beta2 # autoscaling/v2beta2 与 autoscaling/v1 的 API 有很大的不同,注意识别两者的差异
metadata:
  name: alertgo
  namespace: fronted
spec:
  scaleTargetRef: # 伸缩的目标对象
    apiVersion: apps/v1 # 对象版本
    kind: Deployment # 目标对象的类型
    name: alertgo # 目标对象的名称
  minReplicas: 3 # 最小副本数
  maxReplicas: 6 # 最大副本数
  metrics: # 指标
    - type: Resource # 类型:资源
      resource:
        name: memory # 内存
        target:
          type: Utilization
          averageUtilization: 70 # 1% 这个值是为了实验,具体值请参考业务方实际情况而定

    - type: Resource
      resource:
        name: cpu
        target:
          type: Utilization
          averageUtilization: 70

结果查看

[root@k8s-master-01 alertGo]# kubectl get pods,svc,ingress,hpa -n k8s-go
NAME                           READY   STATUS              RESTARTS   AGE
pod/alertgo-5bc79ccd65-8thmw   1/1     Running             0          37m
pod/alertgo-5bc79ccd65-dm8ll   1/1     Running             0          38m
pod/alertgo-5bc79ccd65-m9cd4   0/1     ContainerCreating   0          0s

NAME              TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
service/alertgo   ClusterIP   10.1.140.126   <none>        80/TCP    65m

NAME                         HOSTS                 ADDRESS   PORTS   AGE
ingress.extensions/alertgo   alertgo.sentsss.com             80      34m

NAME                                          REFERENCE            TARGETS            MINPODS   MAXPODS   REPLICAS   AGE
horizontalpodautoscaler.autoscaling/alertgo   Deployment/alertgo   79%/70%, 10%/70%   2         6         2          15s

到此这篇关于K8s部署发布Golang应用程序的实现方法的文章就介绍到这了,更多相关K8s部署发布Golang内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Golang 相关文章推荐
golang判断key是否在map中的代码
Apr 24 Golang
golang通过递归遍历生成树状结构的操作
Apr 28 Golang
golang协程池模拟实现群发邮件功能
May 02 Golang
Go 在 MongoDB 中常用查询与修改的操作
May 07 Golang
golang中的并发和并行
May 08 Golang
Golang标准库syscall详解(什么是系统调用)
May 25 Golang
Go语言实现Snowflake雪花算法
Jun 08 Golang
入门学习Go的基本语法
Jul 07 Golang
Go语言实现一个简单的并发聊天室的项目实战
Mar 18 Golang
Go语言的协程上下文的几个方法和用法
Apr 11 Golang
Go语言编译原理之变量捕获
Aug 05 Golang
入门学习Go的基本语法
Jul 07 #Golang
golang中字符串MD5生成方式总结
Jul 04 #Golang
golang fmt格式“占位符”的实例用法详解
Jul 04 #Golang
Go语言空白表示符_的实例用法
Jul 04 #Golang
Go 语言结构实例分析
Jul 04 #Golang
Go语言基础知识点介绍
Jul 04 #Golang
详解Go语言Slice作为函数参数的使用
Jul 02 #Golang
You might like
四月新番又没了,《Re:从零开始的异世界生活》第二季延期至7月播出
2020/05/06 日漫
PHP中file_get_contents高?用法实例
2014/09/24 PHP
WordPress中对访客评论功能的一些优化方法
2015/11/24 PHP
javascript之typeof、instanceof操作符使用探讨
2013/05/19 Javascript
jquery等待效果示例
2014/05/01 Javascript
5个JavaScript经典面试题
2014/10/13 Javascript
js实例属性和原型属性示例详解
2014/11/23 Javascript
了不起的node.js读书笔记之例程分析
2014/12/22 Javascript
js实现网页抽奖实例
2015/08/05 Javascript
javaScript实现可缩放的显示区效果代码
2015/10/26 Javascript
Vue.js 2.0 和 React、Augular等其他前端框架大比拼
2016/10/08 Javascript
Angular.JS判断复选框checkbox是否选中并实时显示
2016/11/30 Javascript
js自定义QQ菜单效果
2017/01/10 Javascript
webpack实现热更新(实施同步刷新)
2017/07/28 Javascript
解决angularjs前后端分离调用接口传递中文时中文乱码的问题
2018/08/13 Javascript
使用vue-router在Vue页面之间传递数据的方法
2019/07/15 Javascript
关于vue项目中搜索节流的实现代码
2019/09/17 Javascript
Vue 解决通过this.$refs来获取DOM或者组件报错问题
2020/07/28 Javascript
nodejs+koa2 实现模仿springMVC框架
2020/10/21 NodeJs
python编写简易聊天室实现局域网内聊天功能
2018/07/28 Python
python并发编程多进程 模拟抢票实现过程
2019/08/20 Python
Django2 连接MySQL及model测试实例分析
2019/12/10 Python
详解如何用canvas画一个微笑的表情
2019/03/14 HTML / CSS
利用HTML5中的Canvas绘制一张笑脸的教程
2015/05/07 HTML / CSS
巴西最大的在线约会网站:ParPerfeito
2018/07/11 全球购物
汇智创新科技发展有限公司
2015/12/06 面试题
Windows和Linux动态库应用异同
2016/07/28 面试题
学生拾金不昧表扬信
2014/01/21 职场文书
小学生学习雷锋倡议书
2014/05/15 职场文书
房展策划方案
2014/06/07 职场文书
基层党组织建设整改方案
2014/09/16 职场文书
2014年卫生工作总结
2014/11/27 职场文书
酒店人事专员岗位职责
2015/04/07 职场文书
公司开除员工通知
2015/04/22 职场文书
离婚被告答辩状
2015/05/22 职场文书
保外就医申请书范文
2015/08/06 职场文书