本地k8s部署测试go应用程序
前言,本文尝试将写好的go程序,打包成docker,然后在k8s运行。需要注意的问题是,环境变量配置、日志文件、私有仓库拉取镜像,仅做本地开发测试k8s使用。一、先创建k8s的pv/pvc,因为此前用json文件做配置和日志文件的问题,需用到k8s的subpath,相当于docker容器映射物理机卷。1、先编辑好两个yaml文件sudo vimpv-subpath.yamlkind: Persis
前言,本文尝试将写好的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
更多推荐
所有评论(0)