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语言使用select{}阻塞main函数介绍
Apr 25 Golang
golang通过递归遍历生成树状结构的操作
Apr 28 Golang
go语言中json数据的读取和写出操作
Apr 28 Golang
Golang 如何实现函数的任意类型传参
Apr 29 Golang
Golang全局变量加锁的问题解决
May 08 Golang
浅谈Go语言多态的实现与interface使用
Jun 16 Golang
Go中的条件语句Switch示例详解
Aug 23 Golang
Golang 遍历二叉树
Apr 19 Golang
Golang jwt身份认证
Apr 20 Golang
Golang ort 中的sortInts 方法
Apr 24 Golang
基于Python实现西西成语接龙小助手
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中怎样保持SESSION不过期 原理及方案介绍
2013/08/08 PHP
php多任务程序实例解析
2014/07/19 PHP
laravel安装和配置教程
2014/10/29 PHP
laravel 5异常错误:FatalErrorException in Handler.php line 38的解决
2017/10/12 PHP
php 替换文章中的图片路径,下载图片到本地服务器的方法
2018/02/06 PHP
jquery.Ajax()方法调用Asp.Net后台的方法解析
2014/02/13 Javascript
通过点击jqgrid表格弹出需要的表格数据
2015/12/02 Javascript
js如何改变文章的字体大小
2016/01/08 Javascript
JavaScript的ExtJS框架中表格的编写教程
2016/05/21 Javascript
关于JavaScript限制字数的输入框的那些事
2016/08/14 Javascript
jQuery使用deferreds串行多个ajax请求
2016/08/22 Javascript
jQuery加载及解析XML文件的方法实例分析
2017/01/22 Javascript
WebPack配置vue多页面的技巧
2018/05/15 Javascript
详解Vue内部怎样处理props选项的多种写法
2018/11/06 Javascript
灵活使用console让js调试更简单的方法步骤
2019/04/23 Javascript
Javascript通过控制类名更改样式
2019/05/24 Javascript
微信小程序后台持续定位功能使用详解
2019/08/23 Javascript
详解Vue后台管理系统开发日常总结(组件PageHeader)
2019/11/01 Javascript
Vuex的API文档说明详解
2020/02/05 Javascript
JavaScript适配器模式原理与用法实例详解
2020/03/09 Javascript
JS检测浏览器开发者工具是否打开的方法详解
2020/10/02 Javascript
[48:37]EG vs OG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python 第三方库的安装及pip的使用详解
2017/05/11 Python
Python Tkinter模块实现时钟功能应用示例
2018/07/23 Python
TensorFlow用expand_dim()来增加维度的方法
2018/07/26 Python
Python面向对象之类的定义与继承用法示例
2019/01/14 Python
Python爬虫爬取Bilibili弹幕过程解析
2019/10/10 Python
Python pandas 列转行操作详解(类似hive中explode方法)
2020/05/18 Python
Django 解决由save方法引发的错误
2020/05/21 Python
复古风格的女装和装饰品:ModCloth
2017/12/29 全球购物
学生处主任岗位职责
2013/12/01 职场文书
公证委托书格式
2014/09/13 职场文书
2015学校六五普法工作总结
2015/04/22 职场文书
2016年春季运动会通讯稿
2015/11/25 职场文书
调研报告的主要写法
2019/04/18 职场文书
阿里面试Nacos配置中心交互模型是push还是pull原理解析
2022/07/23 Java/Android