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语言切片前或中间插入项与内置copy()函数详解
Apr 27 Golang
golang http使用踩过的坑与填坑指南
Apr 27 Golang
go结构体嵌套的切片数组操作
Apr 28 Golang
彻底理解golang中什么是nil
Apr 29 Golang
对Golang中的FORM相关字段理解
May 02 Golang
完美解决golang go get私有仓库的问题
May 05 Golang
go语言中fallthrough的用法说明
May 06 Golang
Go 自定义package包设置与导入操作
May 06 Golang
Go 语言中 20 个占位符的整理
Oct 16 Golang
golang操作rocketmq的示例代码
Apr 06 Golang
Golang原生rpc(rpc服务端源码解读)
Apr 07 Golang
Go Grpc Gateway兼容HTTP协议文档自动生成网关
Jun 16 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
echo, print, printf 和 sprintf 区别
2006/12/06 PHP
php面向对象全攻略 (十一)__toString()用法 克隆对象 __call处理调用错误
2009/09/30 PHP
php5.4传引用时报错问题分析
2016/01/22 PHP
PHP Swoole异步读取、写入文件操作示例
2019/10/24 PHP
JavaScript 在各个浏览器中执行的耐性
2009/04/06 Javascript
jquery与js函数冲突的两种解决方法
2013/09/09 Javascript
javascript中递归函数用法注意点
2015/07/30 Javascript
JS实现点击事件统计的简单实例
2016/07/10 Javascript
jQuery实现的兼容性浮动层示例
2016/08/02 Javascript
网页瀑布流布局jQuery实现代码
2016/10/21 Javascript
浅谈移动端之js touch事件 手势滑动事件
2016/11/07 Javascript
JQuery Dialog对话框 不能通过Esc关闭的原因分析及解决办法
2017/01/18 Javascript
node.js实现回调的方法示例
2017/03/01 Javascript
React中使用collections时key的重要性详解
2017/08/07 Javascript
express+mockjs实现模拟后台数据发送功能
2018/01/07 Javascript
微信小程序App生命周期详解
2018/01/31 Javascript
node的process以及child_process模块学习笔记
2018/03/06 Javascript
解决Vue2.0中使用less给元素添加背景图片出现的问题
2018/09/03 Javascript
聊聊Vue 中 title 的动态修改问题
2019/06/11 Javascript
vue自定义正在加载动画的例子
2019/11/14 Javascript
js实现时间日期校验
2020/05/26 Javascript
jQuery实现增删改查
2020/12/22 jQuery
vue使用vue-quill-editor富文本编辑器且将图片上传到服务器的功能
2021/01/13 Vue.js
python操作sqlite的CRUD实例分析
2015/05/08 Python
Python使用Pickle库实现读写序列操作示例
2018/06/15 Python
Python2和Python3中urllib库中urlencode的使用注意事项
2018/11/26 Python
彻底解决Python包下载慢问题
2020/11/15 Python
CSS3 3D酷炫立方体变换动画的实现
2019/03/26 HTML / CSS
StubHub澳大利亚:购买或出售您的门票
2019/08/01 全球购物
BSTN意大利:德国街头和运动文化高品质商店
2020/12/22 全球购物
大学生毕业自我鉴定范文
2013/09/19 职场文书
青年教师培训方案
2014/02/06 职场文书
2014年入党积极分子党校培训心得体会
2014/07/08 职场文书
班主任开场白
2015/06/01 职场文书
结婚典礼主持词
2015/06/29 职场文书
Ajax常用封装库——Axios的使用
2021/05/08 Javascript