本地k8s部署测试go应用程序

本文档详细介绍了如何将Go程序打包为Docker镜像,并在Kubernetes(K8s)环境中进行部署。首先创建并挂载PersistentVolume和PersistentVolumeClaim,用于解决配置文件和日志存储问题。接着,配置私有仓库的镜像拉取密钥,确保K8s能够访问。最后,编写YAML文件定义Deployment,设置环境变量、日志路径和私有仓库密钥,完成应用部署。通过`kubectl`命令行工具,可以实现对应用的创建、访问和删除操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言,本文尝试将写好的go程序,打包成docker,然后在k8s运行。需要注意的问题是,环境变量配置、日志文件、私有仓库拉取镜像,仅做本地开发测试k8s使用。

 一、先创建k8s的pv/pvc,因为此前用json文件做配置和日志文件的问题,需用到k8s的subpath,相当于docker容器映射物理机卷。

1、先编辑好两个yaml文件

sudo vim pv-subpath.yaml

kind: PersistentVolume
apiVersion: v1
metadata:
  name: pv-subpath
  labels:
    release: stable
spec:
  capacity:
    storage: .1Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Recycle
  hostPath:
    path: /home/linkai/data/workspace/k8s/pv-subpath  #物理机路径

sudo vim pvc-subpath.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-subpath
  namespace: default
spec:
 accessModes: ["ReadWriteOnce"]
 resources:
   requests:
     storage: .05G

2、k8s命令创建

kubectl create -f pv-subpath.yaml

kubectl create -f pvc-subpath.yaml

3、查看创建好的信息

kubectl get deployment

二、k8s创建私有仓库镜像密钥

kubectl create secret docker-registry 秘钥名字  --docker-server=仓库地址 --docker-username=登录账号 --docker-password=登录密码

检查是否创建成功

kubectl get secret 秘钥名字

三、编写go程序yml文件(前提已经打包好docker镜像)

1、编辑文件

sudo vim nft-service.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nft-service-deployment
  labels:
    app: nft-service
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nft-service
  template:
    metadata:
      labels:
        app: nft-service
    spec:
      containers:
        - name: nft-service
          image: #镜像地址
          ports:
            - containerPort: 7006
          volumeMounts:
            - name: configs
              mountPath: /data/app/configs #挂载虚拟机目录
              subPath: nft-service
          volumeMounts:
            - name: subpath-vol
              mountPath: /data/app/logs    #挂载虚拟机目录
              subPath: nft-service
      imagePullSecrets:
        - name: #创建k8s密钥的名字
      volumes:
        - name: subpath-vol
          persistentVolumeClaim:
            claimName: pvc-subpath               # PVC的名字

2、k8s创建应用

kubectl apply -f nft-service.yml

3、查看应用信息

kubectl get deployment

kubectl get pod

kubectl describe pod "pod_name"  #获取到的pod name

4、物理机访问应用程序

kubectl port-forward --address 0.0.0.0 pod_name 7009:7006   
#(左边端口为宿主机端口,右边为k8s监听端口)

5、k8s进入容器:

kubectl exec -it pod_name -- sh

6、删除发布应用

kubectl delete deployment deployment_name

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值