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中semaphore(信号量)源码
Apr 03 Golang
golang正则之命名分组方式
Apr 25 Golang
Golang 正则匹配效率详解
Apr 25 Golang
解决Golang time.Parse和time.Format的时区问题
Apr 29 Golang
对Golang中的FORM相关字段理解
May 02 Golang
浅谈golang 中time.After释放的问题
May 05 Golang
Golang全局变量加锁的问题解决
May 08 Golang
Go语言实现Snowflake雪花算法
Jun 08 Golang
Golang 并发下的问题定位及解决方案
Mar 16 Golang
详解Go语言中配置文件使用与日志配置
Jun 01 Golang
Go Grpc Gateway兼容HTTP协议文档自动生成网关
Jun 16 Golang
Go微服务项目配置文件的定义和读取示例详解
Jun 21 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单一接口的实现方法
2015/06/20 PHP
PHP开发中常用的十个代码样例
2016/02/02 PHP
比较完整的微信开发php代码
2016/08/02 PHP
php安装扩展mysqli的实现步骤及报错解决办法
2017/09/23 PHP
Laravel手动返回错误码示例
2019/10/22 PHP
如何快速的呈现我们的网页的技巧整理
2007/07/01 Javascript
用JS操作FRAME中的IFRAME及其内容的实现代码
2008/07/26 Javascript
JavaScript 字符串与数组转换函数[不用split与join]
2009/12/13 Javascript
通过url查找a元素应用案例
2014/04/29 Javascript
用box固定长宽实现图片自动轮播js代码
2014/06/09 Javascript
jQuery源码分析之jQuery.fn.each与jQuery.each用法
2015/01/23 Javascript
JavaScript中的包装对象介绍
2015/01/27 Javascript
详解JavaScript跨域总结与解决办法
2016/10/31 Javascript
canvas时钟效果
2017/02/16 Javascript
jquery Easyui Datagrid实现批量操作(编辑,删除,添加)
2017/02/20 Javascript
js实现一个简单的MVVM框架示例
2018/01/15 Javascript
js循环map 获取所有的key和value的实现代码(json)
2018/05/09 Javascript
vant(ZanUi)结合async-validator实现表单验证的方法
2018/12/06 Javascript
ES6小技巧之代替lodash
2019/06/07 Javascript
微信小程序实用代码段(收藏版)
2019/12/17 Javascript
在PyCharm中实现关闭一个死循环程序的方法
2018/11/29 Python
python3.x提取中文的正则表达式示例代码
2019/07/23 Python
浅谈django2.0 ForeignKey参数的变化
2019/08/06 Python
python日志模块logbook使用方法
2019/09/19 Python
HTML5中meta属性的使用方法
2016/02/29 HTML / CSS
客服专员岗位职责范本
2013/11/29 职场文书
求职信模板标准格式范文
2014/02/23 职场文书
人力资源部经理的岗位职责
2014/03/04 职场文书
借款担保书范文
2014/05/13 职场文书
2014组织生活会方案
2014/05/19 职场文书
2014幼儿园家长工作总结
2014/11/10 职场文书
小学班主任评语
2014/12/29 职场文书
2015年工程部工作总结
2015/04/30 职场文书
教师师德工作总结2015
2015/07/22 职场文书
教你怎么用Python生成九宫格照片
2021/05/20 Python
PostgreSQL出现死锁该如何解决
2022/05/30 PostgreSQL