前言,本文尝试将写好的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

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐