339 字
2 分钟
k8s部署SpringBoot应用
myapp.yaml 文件
vim myapp.yamlapiVersion: v1kind: ConfigMapmetadata: name: myapp-configmap labels: app: myapp-configmapdata: SPRING_PROFILES_ACTIVE: test TZ: Asia/Shanghai SPRING_DATASOURCE_HOST: xxx.xxx.xxx.xxx SPRING_DATASOURCE_PORT: "3306"---apiVersion: v1kind: Secretmetadata: name: myapp-secrettype: Opaquedata: SPRING_DATASOURCE_USERNAME: cm9vdA== # echo -n 'root' | base64 SPRING_DATASOURCE_PASSWORD: cm9vdA== # echo -n 'root' | base64---apiVersion: v1kind: PersistentVolumeClaimmetadata: name: myapp-pvc namespace: defaultspec: accessModes: - ReadWriteMany resources: requests: storage: 1Gi storageClassName: nfs-csi---apiVersion: v1kind: Servicemetadata: name: myapp-svc namespace: default labels: app: myapp-svcspec: type: NodePort ports: - name: server port: 8080 targetPort: 8080 nodePort: 30080 selector: app: myapp-pod---apiVersion: apps/v1kind: Deploymentmetadata: name: myapp-deployment labels: app: myapp-deploymentspec: replicas: 1 selector: matchLabels: app: myapp-pod template: metadata: labels: app: myapp-pod spec: containers: - name: myapp #容器名称,必须字段,名称唯一且对象创建后不可以被修改 image: myapp:latest imagePullPolicy: Always # 镜像下载策略( Always:总是去仓库下载;Never:从不去仓库下载;IfNotPresent:如果本地没有就去仓库下载。默认是"IfNotPresent" 但是,如果镜像的标签是latest,则总会是"Always,并且对象一旦被创建,这个字段不允许被改变) ports: - name: server # 端口名称 containerPort: 8080 # 容器监听端口 # hostPort: 8080 # 容器所在主机需要监听的端口号,默认与 Container 相同 protocol: TCP # 端口协议,支持 TCP 和 UDP,默认 TCP envFrom: - configMapRef: name: myapp-configmap - secretRef: name: myapp-secret volumeMounts: - name: nfs mountPath: /app/log # 容器内日志路径 subPath: log lifecycle: preStop: exec: command: ["sh", "-c", "sleep 10"] # 优雅关闭 https://docs.spring.io/spring-boot/docs/current/reference/html/deployment.html#deployment.cloud.kubernetes volumes: - name: nfs persistentVolumeClaim: claimName: myapp-pvc部署
kubectl apply -f myapp.yaml
