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 相关文章推荐
Go语言-为什么返回值为接口类型,却返回结构体
Apr 24 Golang
golang 比较浮点数的大小方式
May 02 Golang
使用golang编写一个并发工作队列
May 08 Golang
基于Golang 高并发问题的解决方案
May 08 Golang
golang 实现并发求和
May 08 Golang
Golang 实现获取当前函数名称和文件行号等操作
May 08 Golang
Golang的继承模拟实例
Jun 30 Golang
golang实现一个简单的websocket聊天室功能
Oct 05 Golang
简单聊聊Golang中defer预计算参数
Mar 25 Golang
golang为什么要统一错误处理
Apr 03 Golang
Go语言grpc和protobuf
Apr 13 Golang
GO语言异常处理分析 err接口及defer延迟
Apr 14 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
MySQL授权问题总结
2007/05/06 PHP
成为好程序员必须避免的5个坏习惯
2014/07/04 PHP
在Yii2特定页面如何禁用调试工具栏Debug Toolbar详解
2017/08/07 PHP
javascript十个最常用的自定义函数(中文版)
2009/09/07 Javascript
关于Javascript模块化和命名空间管理的问题说明
2010/12/06 Javascript
JS获取地址栏参数的小例子
2013/08/23 Javascript
使用jQuery快速解决input中placeholder值在ie中无法支持的问题
2014/01/02 Javascript
收集json解析的四种方法分享
2014/01/17 Javascript
node.js中的console.time方法使用说明
2014/12/09 Javascript
jquery操作select方法汇总
2015/02/05 Javascript
JS获取下拉框显示值和判断单选按钮的方法
2015/07/09 Javascript
AngularJS入门教程之服务(Service)
2016/07/27 Javascript
在网页中插入百度地图的步骤详解
2016/12/02 Javascript
使用BootStrap进行轮播图的制作
2017/01/06 Javascript
jQuery.Sumoselect插件实现下拉复选框效果
2017/11/09 jQuery
微信小程序上传图片实例
2018/05/28 Javascript
微信小程序搭建(mpvue+mpvue-weui+fly.js)的详细步骤
2018/09/18 Javascript
JS数组的高级使用方法示例小结
2020/03/14 Javascript
解决Vue的项目使用Element ui 走马灯无法实现的问题
2020/08/03 Javascript
Python字符转换
2008/09/06 Python
简单学习Python多进程Multiprocessing
2017/08/29 Python
解读python logging模块的使用方法
2018/04/17 Python
python控制台实现tab补全和清屏的例子
2019/08/20 Python
pygame实现俄罗斯方块游戏(对战篇1)
2019/10/29 Python
HTML5事件方法全部汇总
2016/05/12 HTML / CSS
加拿大廉价机票预订网站:CheapOair.ca
2018/03/04 全球购物
中国双语服务优势的在线购票及活动平台:247tickets
2018/10/26 全球购物
后勤主管工作职责
2013/12/07 职场文书
乡镇干部十八大感言
2014/02/17 职场文书
文秘个人求职信范文
2014/04/22 职场文书
党代会心得体会
2014/09/04 职场文书
国际政治学专业推荐信
2014/09/26 职场文书
2015年元旦联欢晚会活动总结
2014/11/28 职场文书
学校社团活动总结
2015/05/07 职场文书
公司开业致辞
2015/07/29 职场文书
图文详解nginx日志切割的实现
2022/01/18 Servers