go文件打包成镜像,到k8s发布

文件变成镜像,push到本地仓库

将写好的文件main.go,build成一个可执行文件
go build main

在这里插入图片描述

然后写一个dockerfile,将执行文件跑成个镜像
vim Dockerfile

FROM golang:latest
ADD main /mnt
EXPOSE 9001

将镜像push到镜像仓库
docker build -t prometheus-expoler:v1 .
docker tag core-harbor.linkedcare.cn/test/prometheus-expoler
docker login core-harbor.linkedcare.cn
docker push core-harbor.linkedcare.cn/test/prometheus-expoler:v1

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在k8s上两个yaml文件,一个deployment,一个service

在这里插入图片描述

创建deployment文件,指定镜像路径,和command执行步骤

apiVersion: apps/v1              # 当前配置格式的版本 
kind: Deployment                 # 要创建的资源的类型
metadata:                           # 资源的元素据
  name: prometheus-expoler
spec:                             # 资源的说明书
  replicas: 2                       # 副本数量
  selector:                         
    matchLabels:
      app: prometheus-expoler 
  template:
    metadata:
      labels:
        app: prometheus-expoler
    spec:
      containers:
      - name: prometheus-expoler
        image: core-harbor.linkedcare.cn/test/prometheus-expoler:v1
        command: ["/mnt/main"]               #执行/mnt/main二进制文件
     #   args:                                                           
      #    - '-storage.local.retention=$(STORAGE_RETENTION)'
      #    - '-storage.local.memory-chunks=$(STORAGE_MEMORY_CHUNKS)'
       #   - '-config.file=/etc/prometheus/prometheus.yml'
        #  - '-alertmanager.url=http://alertmanager:9093/alertmanager'
         # - '-web.external-url=$(EXTERNAL_URL)'
        ports:                                #暴露容器端口
        - containerPort: 9001

在这里插入图片描述

定义service,目的是外部提供访问接口

apiVersion: v1
kind: Service
metadata:
  name: prometheus-service
spec:
  ports:
  - port: 9001
    nodePort: 31080
    targetPort: 9001
  selector:
    app: prometheus-expoler
  type: NodePort

在这里插入图片描述

**
kubectl apply -f prometheus_expoler_node.yaml 创建deployment
kubectl get deployment 看节点状态
kubectl exec -it prometheus-expoler-69d775f4f9-qptrl /bin/bash //可以进到这个deployment里面 ps -aux查看具体文件执行信息
kubectl get pod -o wide //查看pod的具体信息
**

在这里插入图片描述

在这里插入图片描述

curl 访问pod的ip 可以看到数据
此时,回顾一下我做了什麼
1.利用go语言编写一个采集服务器数据的文件,这个文件会将采集到的数据返回给本机的9001端口
2.将go文件build成一个可执行的二进制文件,并且利用dockerfile将它build到镜像中
3.登陆本地仓库,利用docker tag 改标签,然后push到本地仓库,以供k8s调用
4.登陆k8s服务器,编写deployment发布文件,从仓库拉取镜像跑到对应的pod
5.编写service文件,为外界访问服务提供接口

在这里插入图片描述

K8S Pod status的状态分析

CrashLoopBackOff: 容器退出,kubelet正在将它重启
InvalidImageName: 无法解析镜像名称
ImageInspectError: 无法校验镜像
ErrImageNeverPull: 策略禁止拉取镜像
ImagePullBackOff: 正在重试拉取
RegistryUnavailable: 连接不到镜像中心
ErrImagePull: 通用的拉取镜像出错
CreateContainerConfigError: 不能创建kubelet使用的容器配置
CreateContainerError: 创建容器失败
internalLifecycle.PreStartContainer 执行hook报错
RunContainerError: 启动容器失败
PostStartHookError: 执行hook报错
ContainersNotInitialized: 容器没有初始化完毕
ContainersNotReady: 容器没有准备完毕
ContainerCreating:容器创建中
PodInitializing:pod 初始化中
DockerDaemonNotReady:docker还没有完全启动
NetworkPluginNotReady: 网络插件还没有完全启动

**
kubectl apply -f prometheus_expoler_node.yaml //添加deployment
kubectl get deployment //查看deployment
kubectl get pod //查看pod信息
kubectl get pod -o wide //查看pod的具体信息
kubectl describe pod //查看pod详细信息,可以看出报错
kubectl exec -it prometheus-expoler-69d775f4f9-qptrl /bin/bash //可以进到这个deployment里面 ps -aux查看具体文件执行信息
kubectl delete deployments.apps prometheus-expoler //删除deployment
kubect delete pod 。。。 //删除pod节点(只删pod删不掉的,先删去pod对应的deployment,再删pod)
kubectl delete -f promtheusRule.yaml**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值