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 Gin实现文件上传下载的示例代码
Apr 02 Golang
win10下go mod配置方式
Apr 25 Golang
golang 接口嵌套实现复用的操作
Apr 29 Golang
go语言中GOPATH GOROOT的作用和设置方式
May 05 Golang
Golang之sync.Pool使用详解
May 06 Golang
golang switch语句的灵活写法介绍
May 06 Golang
GoLang中生成UUID唯一标识的实现
May 08 Golang
go语言中http超时引发的事故解决
Jun 02 Golang
修改并编译golang源码的操作步骤
Jul 25 Golang
如何解决goland,idea全局搜索快捷键失效问题
Apr 03 Golang
GoFrame gredis缓存DoVar Conn连接对象 自动序列化GoFrame gredisDo/DoVar方法Conn连接对象自动序列化/反序列化总结
Jun 14 Golang
Go gorilla securecookie库的安装使用详解
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
PHP 中文乱码解决办法总结分析
2009/07/30 PHP
php生成高清缩略图实例详解
2015/12/07 PHP
ThinkPHP 3.2.3实现页面静态化功能的方法详解
2017/08/03 PHP
prototype 的说明 js类
2006/09/07 Javascript
javascript 函数调用的对象和方法
2010/07/01 Javascript
JQuery的Validation插件中Remote验证的中文问题
2010/07/26 Javascript
javascript判断用户浏览器插件安装情况的代码
2011/01/01 Javascript
jquery 无限极下拉菜单的简单实例(精简浓缩版)
2016/05/31 Javascript
Javascript实现倒计时时差效果
2017/05/18 Javascript
React-Native实现ListView组件之上拉刷新实例(iOS和Android通用)
2017/07/11 Javascript
JS+HTML5 FileReader实现文件上传前本地预览功能
2020/03/27 Javascript
探索webpack模块及webpack3新特性
2017/09/18 Javascript
JavaScript 保护变量不被随意修改的实现代码
2017/09/27 Javascript
mpvue小程序仿qq左滑置顶删除组件
2018/08/03 Javascript
解决Layui数据表格显示无数据提示的问题
2019/11/14 Javascript
vue 解决兄弟组件、跨组件深层次的通信操作
2020/07/27 Javascript
jQuery实现动态加载瀑布流
2020/09/01 jQuery
Chrome插件开发系列一:弹窗终结者开发实战
2020/10/02 Javascript
Python标准库之sqlite3使用实例
2014/11/25 Python
python中字典dict常用操作方法实例总结
2015/04/04 Python
你应该知道的python列表去重方法
2017/01/17 Python
关于Python如何避免循环导入问题详解
2017/09/14 Python
Python二叉树定义与遍历方法实例分析
2018/05/25 Python
详解python之协程gevent模块
2018/06/14 Python
利用rest framework搭建Django API过程解析
2019/08/31 Python
Python计算IV值的示例讲解
2020/02/28 Python
在matplotlib中改变figure的布局和大小实例
2020/04/23 Python
Python爬虫实现百度翻译功能过程详解
2020/05/29 Python
pytorch加载自己的图像数据集实例
2020/07/07 Python
python3代码中实现加法重载的实例
2020/12/03 Python
详解Python+Selenium+ChromeDriver的配置和问题解决
2021/01/19 Python
学生会宣传部部长竞选演讲稿
2014/04/25 职场文书
银行求职信怎么写
2014/05/26 职场文书
如何写好竞聘报告
2019/04/03 职场文书
centos8安装nginx1.9.1的详细过程
2021/08/02 Servers
python基础之类方法和静态方法
2021/10/24 Python