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语言 go程释放操作(退出/销毁)
Apr 30 Golang
go类型转换及与C的类型转换方式
May 05 Golang
基于Golang 高并发问题的解决方案
May 08 Golang
关于golang高并发的实现与注意事项说明
May 08 Golang
go web 预防跨站脚本的实现方式
Jun 11 Golang
Golang的继承模拟实例
Jun 30 Golang
Golang 语言控制并发 Goroutine的方法
Jun 30 Golang
go goroutine 怎样进行错误处理
Jul 16 Golang
Go并发4种方法简明讲解
Apr 06 Golang
Go语言安装并操作redis的go-redis库
Apr 14 Golang
Golang入门之计时器
May 04 Golang
Go语言测试库testify使用学习
Jul 23 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.ini实现Mysql导入数据库文件最大限制的修改方法
2007/12/11 PHP
PHP Mysql编程之高级技巧
2008/08/27 PHP
php连接Access数据库错误及解决方法
2013/06/20 PHP
使用Linux五年积累的一些经验技巧
2013/06/20 PHP
基于Laravel(5.4版本)的基本增删改查操作方法
2019/10/11 PHP
如何在centos8自定义目录安装php7.3
2019/11/28 PHP
js鼠标点击事件在各个浏览器中的写法及Event对象属性介绍
2013/01/24 Javascript
js 本地预览的简单实现方法
2014/02/18 Javascript
优化RequireJS项目的相关技巧总结
2015/07/01 Javascript
jQuery遍历DOM节点操作之filter()方法详解
2016/04/14 Javascript
jQuery绑定事件on()与弹窗的简要概述
2016/04/27 Javascript
JS读取XML文件数据并以table形式显示数据的方法(兼容IE与火狐)
2016/06/02 Javascript
Javascript之面向对象--方法
2016/12/02 Javascript
react开发中如何使用require.ensure加载es6风格的组件
2017/05/09 Javascript
JavaScript解析任意形式的json树型结构展示
2017/07/23 Javascript
Element-ui table中过滤条件变更表格内容的方法
2018/03/02 Javascript
用Electron写个带界面的nodejs爬虫的实现方法
2019/01/29 NodeJs
Python命名空间详解
2014/08/18 Python
linux下python抓屏实现方法
2015/05/22 Python
浅谈Python由__dict__和dir()引发的一些思考
2017/10/30 Python
python dataframe NaN处理方式
2019/12/26 Python
Python 实现自动获取种子磁力链接方式
2020/01/16 Python
使用tensorboard可视化loss和acc的实例
2020/01/21 Python
Python爬虫谷歌Chrome F12抓包过程原理解析
2020/06/04 Python
python如何更新包
2020/06/11 Python
法学毕业生自我鉴定
2013/11/08 职场文书
五年级音乐教学反思
2014/02/06 职场文书
社会实践活动总结报告
2014/04/29 职场文书
新学期开学演讲稿
2014/05/24 职场文书
和谐家庭演讲稿
2014/05/24 职场文书
毕业生求职信
2014/06/10 职场文书
社区党的群众路线教育实践活动总结材料
2014/10/31 职场文书
高校自主招生校长推荐信
2015/03/23 职场文书
2015年统计员个人工作总结
2015/07/23 职场文书
《中彩那天》教学反思
2016/02/24 职场文书
Python爬取科目四考试题库的方法实现
2021/03/30 Python