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 相关文章推荐
golang 如何通过反射创建新对象
Apr 28 Golang
golang 接口嵌套实现复用的操作
Apr 29 Golang
解决Go gorm踩过的坑
Apr 30 Golang
使用golang编写一个并发工作队列
May 08 Golang
Go语言设计模式之结构型模式
Jun 22 Golang
详解Go语言Slice作为函数参数的使用
Jul 02 Golang
深入理解go slice结构
Sep 15 Golang
如何利用golang运用mysql数据库
Mar 13 Golang
Go归并排序算法的实现方法
Apr 06 Golang
Go微服务项目配置文件的定义和读取示例详解
Jun 21 Golang
Go中使用gjson来操作JSON数据的实现
Aug 14 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
用ODBC的分页显示
2006/10/09 PHP
PHP小程序自动提交到自助友情连接
2009/11/24 PHP
简单的php新闻发布系统教程
2014/05/09 PHP
PHP + plupload.js实现多图上传并显示进度条加删除实例代码
2017/03/06 PHP
thinkPHP框架中执行原生SQL语句的方法
2017/10/25 PHP
[原创]PHP global全局变量经典应用与注意事项分析【附$GLOBALS用法对比】
2019/07/12 PHP
jquery 操作DOM案例代码分享
2012/04/05 Javascript
JQuery入门—JQuery程序的代码风格详细介绍
2013/01/03 Javascript
jQuery 淡出一个图像到另一个图像的实现代码
2013/06/12 Javascript
AngularJS基础 ng-show 指令简单示例
2016/08/03 Javascript
JavaScript中 ES6 generator数据类型详解
2016/08/11 Javascript
Js操作DOM元素及获取浏览器高宽的简单方法
2016/09/08 Javascript
AngularJS之自定义服务详解(factory、service、provider)
2017/04/14 Javascript
ReactJs设置css样式的方法
2017/06/08 Javascript
详解小程序不同页面之间通讯的解决方案
2018/11/23 Javascript
Vue实现类似Spring官网图片滑动效果方法
2019/03/01 Javascript
vue设置一开始进入的页面教程
2019/10/28 Javascript
[01:47]2018年度DOTA2最具人气解说-完美盛典
2018/12/16 DOTA
Python的批量远程管理和部署工具Fabric用法实例
2015/01/23 Python
Python创建系统目录的方法
2015/03/11 Python
TensorFlow实现创建分类器
2018/02/06 Python
Python3处理HTTP请求的实例
2018/05/10 Python
基于Python安装pyecharts所遇的问题及解决方法
2019/08/12 Python
python标识符命名规范原理解析
2020/01/10 Python
Python使用docx模块实现刷题功能代码
2020/02/13 Python
如何使用scrapy中的ItemLoader提取数据
2020/09/30 Python
利用CSS3的checked伪类实现OL的隐藏显示的方法
2010/12/18 HTML / CSS
用CSS3打造HTML5的Logo(实现代码)
2016/06/16 HTML / CSS
经贸日语毕业生自荐信
2013/11/03 职场文书
个人求职信范文分享
2013/12/13 职场文书
优秀员工表扬信
2014/01/17 职场文书
党委干部批评与自我批评发言稿
2014/09/28 职场文书
2016清明节森林防火广播稿
2015/12/17 职场文书
导游词之峨眉乐山/兵马俑/北京故宫御花园
2019/09/03 职场文书
MySQL 用 limit 为什么会影响性能
2021/09/15 MySQL
 分享一个Python 遇到数据库超好用的模块
2022/04/06 Python