更新时间: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
# 挂载卷