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通过递归遍历生成树状结构的操作
Apr 28 Golang
基于Go Int转string几种方式性能测试
Apr 28 Golang
浅谈Golang 嵌套 interface 的赋值问题
Apr 29 Golang
解决go在函数退出后子协程的退出问题
Apr 30 Golang
goland设置颜色和字体的操作
May 05 Golang
Go语言基础切片的创建及初始化示例详解
Nov 17 Golang
深入理解go缓存库freecache的使用
Feb 15 Golang
简单聊聊Golang中defer预计算参数
Mar 25 Golang
Go归并排序算法的实现方法
Apr 06 Golang
Golang流模式之grpc的四种数据流
Apr 13 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简单实现MVC
2015/02/05 PHP
利用PHP获取汉字首字母并且分组排序详解
2017/10/22 PHP
PHP实现的无限分类类库定义与用法示例【基于thinkPHP】
2018/08/06 PHP
PHP PDOStatement::bindParam讲解
2019/01/30 PHP
脚本吧 - 幻宇工作室用到js,超强推荐expand.js
2006/12/23 Javascript
基于Jquery的文字滚动跑马灯插件(一个页面多个滚动区)
2010/07/26 Javascript
iframe异步加载实现点击左边菜单加载右边内容实例讲解
2013/03/04 Javascript
鼠标滚轴控制文本框值的JS代码
2013/11/19 Javascript
jquery checkbox实现单选小例
2013/11/27 Javascript
深入分析JSONP跨域的原理
2014/12/10 Javascript
JavaScript实现点击单选按钮改变输入框中文本域内容的方法
2015/08/12 Javascript
js实现字符串和数组之间相互转换操作
2016/01/12 Javascript
移动端手指放大缩小插件与js源码
2017/05/22 Javascript
详解AngularJS跨页面传值(ui-router)
2017/08/23 Javascript
JSONP 的原理、理解 与 实例分析
2020/05/16 Javascript
使用next.js开发网址缩短服务的方法
2020/06/17 Javascript
使用Mock.js生成前端测试数据
2020/12/13 Javascript
Python写的一个简单DNS服务器实例
2014/06/04 Python
python计算方程式根的方法
2015/05/07 Python
python3监控CentOS磁盘空间脚本
2018/06/21 Python
创建Django项目图文实例详解
2019/06/06 Python
python模拟菜刀反弹shell绕过限制【推荐】
2019/06/25 Python
django 微信网页授权登陆的实现
2019/07/30 Python
Python数据分析模块pandas用法详解
2019/09/04 Python
python修改FTP服务器上的文件名
2019/09/11 Python
Python将列表中的元素转化为数字并排序的示例
2019/12/25 Python
浅析HTML5中的 History 模式
2017/06/22 HTML / CSS
HTML5 drag和drop具体使用详解
2021/01/18 HTML / CSS
Topman美国官网:英国著名的国际平价时尚男装品牌
2017/12/22 全球购物
MVC的各个部分都有那些技术来实现?如何实现?
2016/04/21 面试题
造价工程师个人求职信
2013/09/21 职场文书
财务会计专业毕业生自荐信
2013/10/19 职场文书
爱国主义教育活动总结
2014/05/07 职场文书
巴黎圣母院观后感
2015/06/10 职场文书
2016年世界艾滋病日宣传活动总结
2016/04/01 职场文书
创业计划书之面包店
2019/09/17 职场文书