6-4 kubernetes 简单示例-运行 Nginx 和 Java 应用

本文档介绍了如何在 Kubernetes 集群中部署和配置 Nginx 与 Java 应用。内容涵盖创建 Namespace、StorageClass、ConfigMap、Deployment、Service、Ingress,以及测试应用程序的访问。通过详细步骤,演示了从配置文件到运行应用的完整过程。
摘要由CSDN通过智能技术生成

更新时间:2023年4月

拓扑

在这里插入图片描述

创建资源

公共资源

创建 Namespace

Namespace 声明

$ vim ./ns-project-demo.yaml
---
apiVersion: v1                                                        
kind: Namespace
metadata:
  name: project-demo

应用声明

$ kubectl apply -f ./ns-project-demo.yaml
创建 StorageClass

StorageClass 声明

$ vim sc-nfs.yaml
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: sc-nfs
provisioner: k8s-sigs.io/nfs-subdir-external-provisioner 
# 回收策略此处使用 删除,实验环境方便测试
reclaimPolicy: Delete
mountOptions: 
  - soft
  - nfsvers=4.2
  - noatime     # 访问文件时不更新文件 inode 中的时间戳,高并发环境可提高性能
parameters:
  pathPattern: "${.PVC.namespace}/${.PVC.annotations.nfs.io/storage-path}"
  archiveOnDelete: "true"  

应用声明

$ kubectl apply -f sc-nfs.yaml

Java 应用相关资源

Java 应用测试接口主要代码

暴露一个 /app 接口,返回请求头中 x-original-orwarded-for (即发送到 kubernetes 集群请求的 x-forwarded-for)的值

    @RequestMapping("/app")
    public String app(@RequestHeader("x-original-forwarded-for") String xForwardedFor) {
   

        logger.info(xForwardedFor);
        return xForwardedFor + " : app";
    }
ConfigMap

SpringBoot 的配置文件 application.yaml

$ vim application.yaml
---
server:
  port: 8080
  tomcat:
    threads:
      min-spare: 20
      max: 500

management:
  server:
    port: 5000
  endpoint:
    health:
      probes:
        enabled: true
  endpoints:
    web:
      exposure:
        base-path: /actuator
        include: health

通过配置文件生成 ConfigMap

$ kubectl create configmap demo-java-config --from-file=./application.yaml --namespace project-demo
Deployment
$ vim deploy-demo-java.yaml
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: deploy-demo-java
  namespace: project-demo
  labels:
    app.kubernetes.io/name: demo-java
spec:
  replicas: 3
  selector:
    matchLabels:
      app.kubernetes.io/name: demo-java
  template:
    metadata:
      labels:
        app.kubernetes.io/name: demo-java
    spec:
      # 业务容器
      containers:
      - name: demo-java
        image: registry.cn-hangzhou.aliyuncs.com/kmust/demo-java:0.0.3
        imagePullPolicy: Always
        # 端口
        ports:
        - name: web-http
          containerPort: 8080
        - name: health
          containerPort: 5000
          
        # 探针
        readinessProbe:
          httpGet:
            path: /actuator/health/readiness
            port: 5000
          initialDelaySeconds: 60
          periodSeconds: 3
          timeoutSeconds: 5
          successThreshold: 1
          failureThreshold: 3
        livenessProbe:
          httpGet:
            path: /actuator/health/liveness
            port: 5000
          initialDelaySeconds: 60
          periodSeconds: 3
          timeoutSeconds: 5
          successThreshold: 1
          failureThreshold: 3
          
        # 挂载卷
       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值