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中ResponseWriter的一个坑
Apr 27 Golang
Golang: 内建容器的用法
May 05 Golang
go mod 安装依赖 unkown revision问题的解决方案
May 06 Golang
Golang标准库syscall详解(什么是系统调用)
May 25 Golang
Go语言设计模式之结构型模式
Jun 22 Golang
Go Plugins插件的实现方式
Aug 07 Golang
一文搞懂Golang 时间和日期相关函数
Dec 06 Golang
Go语言特点及基本数据类型使用详解
Mar 21 Golang
GO语言字符串处理函数之处理Strings包
Apr 14 Golang
Golang日志包的使用
Apr 20 Golang
Go结合Gin导出Mysql数据到Excel表格
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
基于php下载文件的详解
2013/06/02 PHP
PHP中你应该知道的require()文件包含的正确用法
2015/06/12 PHP
CodeIgniter框架常见用法工作总结
2017/03/16 PHP
php插件Xajax使用方法详解
2017/08/31 PHP
php 比较获取两个数组相同和不同元素的例子(交集和差集)
2019/10/18 PHP
日期函数扩展类Ver0.1.1
2006/09/07 Javascript
jquery 可拖拽的窗体控件实现代码
2010/03/21 Javascript
ExtJS Store的数据访问与更新问题
2010/04/28 Javascript
jQuery ajax 路由和过滤器使用说明
2011/08/02 Javascript
JS Replace()的高级使用方法介绍
2013/06/29 Javascript
jQuery多项选项卡的实现思路附样式及代码
2014/06/03 Javascript
JS获取各种宽度、高度的简单介绍
2014/12/19 Javascript
概述如何实现一个简单的浏览器端js模块加载器
2016/12/07 Javascript
JS日程管理插件FullCalendar中文说明文档
2017/02/06 Javascript
angular2模块和共享模块详解
2018/04/08 Javascript
重新认识vue之事件阻止冒泡的实现
2018/08/02 Javascript
vue项目中使用bpmn为节点添加颜色的方法
2020/04/30 Javascript
vue实现移动端项目多行文本溢出省略
2020/07/29 Javascript
[40:06]DOTA2亚洲邀请赛 4.3 突围赛 Liquid vs VGJ.T 第一场
2018/04/04 DOTA
Python标准库os.path包、glob包使用实例
2014/11/25 Python
Python matplotlib画图实例之绘制拥有彩条的图表
2017/12/28 Python
Python cookbook(数据结构与算法)对切片命名清除索引的方法
2018/03/13 Python
python 处理telnet返回的More,以及get想要的那个参数方法
2019/02/14 Python
Python Flask框架扩展操作示例
2019/05/03 Python
Python字符串格式化输出代码实例
2019/11/22 Python
python实现npy格式文件转换为txt文件操作
2020/07/01 Python
使用CSS3设计地图上的雷达定位提示效果
2016/04/05 HTML / CSS
详解HTML5中rel属性的prefetch预加载功能使用
2016/05/06 HTML / CSS
详解前端HTML5几种存储方式的总结
2016/12/27 HTML / CSS
Amcal中文官网:澳洲综合性连锁药房
2019/03/28 全球购物
智能家居、吸尘器、滑板车、电动自行车网上购物:Geekmaxi
2021/01/18 全球购物
用C语言实现文件读写操作
2013/10/27 面试题
大学生就业推荐信范文
2013/11/29 职场文书
2014年大学班级工作总结
2014/11/14 职场文书
学习雷锋精神活动总结
2015/02/06 职场文书
看完这篇文章获得一些java if优化技巧
2021/07/15 Java/Android