1. 应用部署概述
Kubernetes提供了多种应用部署方式,包括Deployment、StatefulSet、DaemonSet等,适用于不同的应用场景。更多学习教程www.fgedu.net.cn
# kubectl cluster-info
Kubernetes control plane is running at https://192.168.1.10:6443
CoreDNS is running at https://192.168.1.10:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use ‘kubectl cluster-info dump’.
# 查看节点状态
# kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
master01.fgedu.net.cn Ready control-plane 90d v1.28.0 192.168.1.10
worker01.fgedu.net.cn Ready
worker02.fgedu.net.cn Ready
# 查看命名空间
# kubectl get namespaces
NAME STATUS AGE
default Active 90d
kube-node-lease Active 90d
kube-public Active 90d
kube-system Active 90d
fgedu-prod Active 60d
fgedu-dev Active 60d
# 创建命名空间
# kubectl create namespace fgedu-app
namespace/fgedu-app created
# 查看资源配额
# kubectl describe namespace fgedu-app
Name: fgedu-app
Labels: kubernetes.io/metadata.name=fgedu-app
Annotations:
Status: Active
No resource quota.
No LimitRange resource.
2. Deployment部署
Deployment是Kubernetes中最常用的部署方式,支持滚动更新和回滚。学习交流加群风哥微信: itpux-com
# cat > fgedu-web-deployment.yaml << 'EOF' apiVersion: apps/v1 kind: Deployment metadata: name: fgedu-web namespace: fgedu-app labels: app: fgedu-web environment: production spec: replicas: 3 selector: matchLabels: app: fgedu-web strategy: type: RollingUpdate rollingUpdate: maxSurge: 1 maxUnavailable: 0 template: metadata: labels: app: fgedu-web environment: production spec: containers: - name: nginx image: nginx:1.25 ports: - containerPort: 80 resources: requests: cpu: "100m" memory: "128Mi" limits: cpu: "500m" memory: "512Mi" livenessProbe: httpGet: path: /health port: 80 initialDelaySeconds: 30 periodSeconds: 10 readinessProbe: httpGet: path: /ready port: 80 initialDelaySeconds: 5 periodSeconds: 5 volumeMounts: - name: config-volume mountPath: /etc/nginx/conf.d volumes: - name: config-volume configMap: name: fgedu-nginx-config EOF # 应用Deployment # kubectl apply -f fgedu-web-deployment.yaml deployment.apps/fgedu-web created # 查看Deployment状态 # kubectl get deployment -n fgedu-app NAME READY UP-TO-DATE AVAILABLE AGE fgedu-web 3/3 3 3 1m # 查看Deployment详情 # kubectl describe deployment fgedu-web -n fgedu-app Name: fgedu-web Namespace: fgedu-app CreationTimestamp: Fri, 03 Apr 2026 10:00:00 +0800 Labels: app=fgedu-web environment=production Annotations: deployment.kubernetes.io/revision: 1 Selector: app=fgedu-web Replicas: 3 desired | 3 updated | 3 total | 3 available | 0 unavailable StrategyType: RollingUpdate MinReadySeconds: 0 RollingUpdateStrategy: 0 max unavailable, 1 max surge Pod Template: Labels: app=fgedu-web environment=production Containers: nginx: Image: nginx:1.25 Port: 80/TCP Host Port: 0/TCP Limits: cpu: 500m memory: 512Mi Requests: cpu: 100m memory: 128Mi Liveness: http-get http://:80/health delay=30s timeout=1s period=10s #success=1 #failure=3 Readiness: http-get http://:80/ready delay=5s timeout=1s period=5s #success=1 #failure=3 Environment:
Mounts:
/etc/nginx/conf.d from config-volume (rw)
# kubectl get pods -n fgedu-app -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
fgedu-web-6b8b9c8d4f-abc12 1/1 Running 0 2m 10.244.1.10 worker01.fgedu.net.cn
fgedu-web-6b8b9c8d4f-def34 1/1 Running 0 2m 10.244.2.10 worker02.fgedu.net.cn
fgedu-web-6b8b9c8d4f-ghi56 1/1 Running 0 2m 10.244.1.11 worker01.fgedu.net.cn
# 扩容Deployment
# kubectl scale deployment fgedu-web –replicas=5 -n fgedu-app
deployment.apps/fgedu-web scaled
# 查看扩容结果
# kubectl get pods -n fgedu-app
NAME READY STATUS RESTARTS AGE
fgedu-web-6b8b9c8d4f-abc12 1/1 Running 0 5m
fgedu-web-6b8b9c8d4f-def34 1/1 Running 0 5m
fgedu-web-6b8b9c8d4f-ghi56 1/1 Running 0 5m
fgedu-web-6b8b9c8d4f-jkl78 1/1 Running 0 10s
fgedu-web-6b8b9c8d4f-mno90 1/1 Running 0 10s
# 更新镜像版本
# kubectl set image deployment/fgedu-web nginx=nginx:1.26 -n fgedu-app
deployment.apps/fgedu-web image updated
# 查看滚动更新状态
# kubectl rollout status deployment/fgedu-web -n fgedu-app
Waiting for deployment “fgedu-web” spec update to be observed…
Waiting for deployment spec update to be observed…
Waiting for deployment “fgedu-web” to finish rollout: 2 out of 5 new replicas have been updated…
Waiting for deployment “fgedu-web” to finish rollout: 3 out of 5 new replicas have been updated…
Waiting for deployment “fgedu-web” to finish rollout: 3 out of 5 new replicas have been updated…
Waiting for deployment “fgedu-web” to finish rollout: 4 out of 5 new replicas have been updated…
Waiting for deployment “fgedu-web” to finish rollout: 4 out of 5 new replicas have been updated…
Waiting for deployment “fgedu-web” to finish rollout: 4 out of 5 new replicas have been updated…
Waiting for deployment “fgedu-web” to finish rollout: 4 out of 5 new replicas have been updated…
deployment “fgedu-web” successfully rolled out
# 查看更新历史
# kubectl rollout history deployment/fgedu-web -n fgedu-app
deployment.apps/fgedu-web
REVISION CHANGE-CAUSE
1
2
# 回滚到上一版本
# kubectl rollout undo deployment/fgedu-web -n fgedu-app
deployment.apps/fgedu-web rolled back
3. StatefulSet部署
StatefulSet用于部署有状态应用,提供稳定的网络标识和持久化存储。
# cat > fgedu-db-statefulset.yaml << 'EOF' apiVersion: apps/v1 kind: StatefulSet metadata: name: fgedu-db namespace: fgedu-app labels: app: fgedu-db spec: serviceName: fgedu-db-headless replicas: 3 selector: matchLabels: app: fgedu-db template: metadata: labels: app: fgedu-db spec: containers: - name: postgres image: postgres:15 ports: - containerPort: 5432 env: - name: POSTGRES_PASSWORD valueFrom: secretKeyRef: name: fgedu-db-secret key: password resources: requests: cpu: "500m" memory: "1Gi" limits: cpu: "2000m" memory: "4Gi" volumeMounts: - name: data mountPath: /var/lib/postgresql/data volumeClaimTemplates: - metadata: name: data spec: accessModes: [ "ReadWriteOnce" ] storageClassName: "fgedu-storage" resources: requests: storage: 100Gi EOF # 应用StatefulSet # kubectl apply -f fgedu-db-statefulset.yaml statefulset.apps/fgedu-db created # 查看StatefulSet状态 # kubectl get statefulset -n fgedu-app NAME READY AGE fgedu-db 3/3 5m # 查看Pod状态(有序命名) # kubectl get pods -n fgedu-app -l app=fgedu-db NAME READY STATUS RESTARTS AGE fgedu-db-0 1/1 Running 0 5m fgedu-db-1 1/1 Running 0 4m fgedu-db-2 1/1 Running 0 3m # 查看PVC # kubectl get pvc -n fgedu-app NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE data-fgedu-db-0 Bound pvc-abc123-def456-ghi789 100Gi RWO fgedu-storage 5m data-fgedu-db-1 Bound pvc-jkl012-mno345-pqr678 100Gi RWO fgedu-storage 4m data-fgedu-db-2 Bound pvc-stu901-vwx234-yza567 100Gi RWO fgedu-storage 3m
4. DaemonSet部署
DaemonSet确保每个节点运行一个Pod副本,适用于日志收集、监控代理等场景。学习交流加群风哥QQ113257174
# cat > fgedu-logging-daemonset.yaml << 'EOF' apiVersion: apps/v1 kind: DaemonSet metadata: name: fgedu-logging namespace: kube-system labels: app: fgedu-logging spec: selector: matchLabels: app: fgedu-logging template: metadata: labels: app: fgedu-logging spec: tolerations: - key: node-role.kubernetes.io/control-plane effect: NoSchedule containers: - name: fluentd image: fluentd:v1.16 resources: limits: cpu: "500m" memory: "512Mi" requests: cpu: "100m" memory: "128Mi" volumeMounts: - name: varlog mountPath: /var/log - name: varlibdockercontainers mountPath: /var/lib/docker/containers readOnly: true terminationGracePeriodSeconds: 30 volumes: - name: varlog hostPath: path: /var/log - name: varlibdockercontainers hostPath: path: /var/lib/docker/containers EOF # 应用DaemonSet # kubectl apply -f fgedu-logging-daemonset.yaml daemonset.apps/fgedu-logging created # 查看DaemonSet状态 # kubectl get daemonset -n kube-system NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE fgedu-logging 3 3 3 3 3
# 查看DaemonSet Pod分布
# kubectl get pods -n kube-system -l app=fgedu-logging -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
fgedu-logging-abc12 1/1 Running 0 1m 10.244.0.10 master01.fgedu.net.cn
fgedu-logging-def34 1/1 Running 0 1m 10.244.1.12 worker01.fgedu.net.cn
fgedu-logging-ghi56 1/1 Running 0 1m 10.244.2.12 worker02.fgedu.net.cn
5. Job和CronJob部署
Job用于一次性任务,CronJob用于定时任务。更多学习教程公众号风哥教程itpux_com
# cat > fgedu-backup-job.yaml << 'EOF' apiVersion: batch/v1 kind: Job metadata: name: fgedu-backup-20260403 namespace: fgedu-app spec: ttlSecondsAfterFinished: 86400 backoffLimit: 3 activeDeadlineSeconds: 3600 template: spec: containers: - name: backup image: backup-tool:v1.0 command: ["/bin/sh", "-c"] args: - | echo "Starting backup at $(date)" /opt/backup/bin/backup.sh echo "Backup completed at $(date)" volumeMounts: - name: backup-storage mountPath: /backup volumes: - name: backup-storage persistentVolumeClaim: claimName: backup-pvc restartPolicy: OnFailure EOF # 应用Job # kubectl apply -f fgedu-backup-job.yaml job.batch/fgedu-backup-20260403 created # 查看Job状态 # kubectl get job -n fgedu-app NAME COMPLETIONS DURATION AGE fgedu-backup-20260403 1/1 5m 5m # 查看Job日志 # kubectl logs job/fgedu-backup-20260403 -n fgedu-app Starting backup at Fri Apr 3 10:00:00 CST 2026 Backing up database... Backing up application data... Backup completed at Fri Apr 3 10:05:00 CST 2026
# cat > fgedu-cleanup-cronjob.yaml << 'EOF' apiVersion: batch/v1 kind: CronJob metadata: name: fgedu-cleanup namespace: fgedu-app spec: schedule: "0 2 * * *" concurrencyPolicy: Forbid successfulJobsHistoryLimit: 7 failedJobsHistoryLimit: 3 jobTemplate: spec: template: spec: containers: - name: cleanup image: cleanup-tool:v1.0 command: - /bin/sh - -c - | echo "Starting cleanup at $(date)" find /data/logs -mtime +7 -delete find /data/tmp -mtime +3 -delete echo "Cleanup completed at $(date)" volumeMounts: - name: data-volume mountPath: /data volumes: - name: data-volume persistentVolumeClaim: claimName: data-pvc restartPolicy: OnFailure EOF # 应用CronJob # kubectl apply -f fgedu-cleanup-cronjob.yaml cronjob.batch/fgedu-cleanup created # 查看CronJob状态 # kubectl get cronjob -n fgedu-app NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE fgedu-cleanup 0 2 * * * False 0
# 查看CronJob详情
# kubectl describe cronjob fgedu-cleanup -n fgedu-app
Name: fgedu-cleanup
Namespace: fgedu-app
Labels:
Annotations:
Schedule: 0 2 * * *
Concurrency Policy: Forbid
Suspend: False
Successful Job History Limit: 7
Failed Job History Limit: 3
Starting Deadline Seconds:
Selector:
Parallelism: 1
Completions: 1
Pod Template:
Labels:
Containers:
cleanup:
Image: cleanup-tool:v1.0
Port:
Host Port:
Command:
/bin/sh
-c
echo “Starting cleanup at $(date)”
find /data/logs -mtime +7 -delete
find /data/tmp -mtime +3 -delete
echo “Cleanup completed at $(date)”
6. ConfigMap和Secret管理
ConfigMap和Secret用于管理应用配置和敏感信息。
# kubectl create configmap fgedu-nginx-config –from-literal=server_name=fgedu.net.cn –from-literal=worker_processes=4 -n fgedu-app
configmap/fgedu-nginx-config created
# 从文件创建ConfigMap
# cat > nginx.conf << 'EOF'
server {
listen 80;
server_name fgedu.net.cn;
location / {
proxy_pass http://fgedu-backend:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /health {
return 200 'OK';
}
}
EOF
# kubectl create configmap fgedu-nginx-conf --from-file=nginx.conf -n fgedu-app
configmap/fgedu-nginx-conf created
# 查看ConfigMap
# kubectl get configmap -n fgedu-app
NAME DATA AGE
fgedu-nginx-config 2 1m
fgedu-nginx-conf 1 30s
# 查看ConfigMap详情
# kubectl describe configmap fgedu-nginx-config -n fgedu-app
Name: fgedu-nginx-config
Namespace: fgedu-app
Labels:
Annotations:
Data
====
server_name:
—-
fgedu.net.cn
worker_processes:
—-
4
BinaryData
====
Events:
# kubectl create secret generic fgedu-db-secret –from-literal=password=’Fgedu@123456′ –from-literal=username=’fgedu_admin’ -n fgedu-app
secret/fgedu-db-secret created
# 从文件创建Secret
# echo -n ‘Fgedu@123456′ > db-password.txt
# kubectl create secret generic fgedu-db-password –from-file=password=db-password.txt -n fgedu-app
secret/fgedu-db-password created
# 创建TLS Secret
# kubectl create secret tls fgedu-tls-secret –cert=fgedu.crt –key=fgedu.key -n fgedu-app
secret/fgedu-tls-secret created
# 查看Secret
# kubectl get secret -n fgedu-app
NAME TYPE DATA AGE
fgedu-db-secret Opaque 2 1m
fgedu-db-password Opaque 1 30s
fgedu-tls-secret kubernetes.io/tls 2 10s
# 查看Secret内容(Base64解码)
# kubectl get secret fgedu-db-secret -n fgedu-app -o jsonpath='{.data.password}’ | base64 -d
Fgedu@123456
7. Service和Ingress配置
Service和Ingress提供应用的网络访问入口。author:www.itpux.com
# cat > fgedu-web-service.yaml << 'EOF' apiVersion: v1 kind: Service metadata: name: fgedu-web namespace: fgedu-app spec: type: ClusterIP selector: app: fgedu-web ports: - port: 80 targetPort: 80 protocol: TCP name: http --- apiVersion: v1 kind: Service metadata: name: fgedu-web-nodeport namespace: fgedu-app spec: type: NodePort selector: app: fgedu-web ports: - port: 80 targetPort: 80 nodePort: 30080 protocol: TCP name: http EOF # 应用Service # kubectl apply -f fgedu-web-service.yaml service/fgedu-web created service/fgedu-web-nodeport created # 查看Service # kubectl get svc -n fgedu-app NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE fgedu-web ClusterIP 10.96.100.1
fgedu-web-nodeport NodePort 10.96.100.2
# 测试Service访问
# kubectl run test-pod –image=busybox -it –rm –restart=Never — wget -qO- http://fgedu-web.fgedu-app.svc.cluster.local
Welcome to nginx!
pod “test-pod” deleted
# cat > fgedu-ingress.yaml << 'EOF' apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: fgedu-ingress namespace: fgedu-app annotations: nginx.ingress.kubernetes.io/rewrite-target: / nginx.ingress.kubernetes.io/ssl-redirect: "true" nginx.ingress.kubernetes.io/proxy-body-size: "100m" spec: ingressClassName: nginx tls: - hosts: - fgedu.net.cn - www.fgedu.net.cn secretName: fgedu-tls-secret rules: - host: fgedu.net.cn http: paths: - path: / pathType: Prefix backend: service: name: fgedu-web port: number: 80 - host: www.fgedu.net.cn http: paths: - path: / pathType: Prefix backend: service: name: fgedu-web port: number: 80 EOF # 应用Ingress # kubectl apply -f fgedu-ingress.yaml ingress.networking.k8s.io/fgedu-ingress created # 查看Ingress # kubectl get ingress -n fgedu-app NAME CLASS HOSTS ADDRESS PORTS AGE fgedu-ingress nginx fgedu.net.cn,www.fgedu.net.cn 192.168.1.100 80, 443 1m # 查看Ingress详情 # kubectl describe ingress fgedu-ingress -n fgedu-app Name: fgedu-ingress Labels:
Namespace: fgedu-app
Address: 192.168.1.100
Ingress Class: nginx
Default backend:
TLS:
fgedu-tls-secret terminates fgedu.net.cn,www.fgedu.net.cn
Rules:
Host Path Backends
—- —- ——–
fgedu.net.cn
/ fgedu-web:80 (10.244.1.10:80,10.244.1.11:80,10.244.2.10:80)
www.fgedu.net.cn
/ fgedu-web:80 (10.244.1.10:80,10.244.1.11:80,10.244.2.10:80)
Annotations: nginx.ingress.kubernetes.io/proxy-body-size: 100m
nginx.ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/ssl-redirect: true
Events:
Type Reason Age From Message
—- —— —- —- ——-
Normal Sync 1m (x2 over 1m) nginx-ingress-controller Scheduled for sync
8. 持久化存储配置
持久化存储为应用提供数据持久化能力。
# cat > fgedu-storageclass.yaml << 'EOF' apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: fgedu-storage provisioner: kubernetes.io/nfs parameters: server: 192.168.1.100 path: /data/k8s-storage reclaimPolicy: Retain volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true EOF # 应用StorageClass # kubectl apply -f fgedu-storageclass.yaml storageclass.storage.k8s.io/fgedu-storage created # 查看StorageClass # kubectl get storageclass NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE fgedu-storage kubernetes.io/nfs Retain WaitForFirstConsumer true 1m standard kubernetes.io/gce-pd Delete Immediate false 90d # 创建PVC # cat > fgedu-data-pvc.yaml << 'EOF' apiVersion: v1 kind: PersistentVolumeClaim metadata: name: fgedu-data-pvc namespace: fgedu-app spec: accessModes: - ReadWriteMany storageClassName: fgedu-storage resources: requests: storage: 50Gi EOF # 应用PVC # kubectl apply -f fgedu-data-pvc.yaml persistentvolumeclaim/fgedu-data-pvc created # 查看PVC # kubectl get pvc -n fgedu-app NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE fgedu-data-pvc Bound pvc-abc123-def456-ghi789 50Gi RWX fgedu-storage 1m
9. 自动扩缩容配置
自动扩缩容根据负载自动调整应用副本数。
# kubectl autoscale deployment fgedu-web –cpu-percent=70 –min=3 –max=10 -n fgedu-app
horizontalpodautoscaler.autoscaling/fgedu-web autoscaled
# 查看HPA
# kubectl get hpa -n fgedu-app
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
fgedu-web Deployment/fgedu-web 45%/70% 3 10 3 1m
# 创建高级HPA配置
# cat > fgedu-web-hpa.yaml << 'EOF'
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: fgedu-web-hpa
namespace: fgedu-app
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: fgedu-web
minReplicas: 3
maxReplicas: 20
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70
- type: Resource
resource:
name: memory
target:
type: Utilization
averageUtilization: 80
behavior:
scaleDown:
stabilizationWindowSeconds: 300
policies:
- type: Pods
value: 2
periodSeconds: 60
scaleUp:
stabilizationWindowSeconds: 0
policies:
- type: Percent
value: 100
periodSeconds: 15
- type: Pods
value: 4
periodSeconds: 15
selectPolicy: Max
EOF
# 应用HPA
# kubectl apply -f fgedu-web-hpa.yaml
horizontalpodautoscaler.autoscaling/fgedu-web-hpa configured
# 查看HPA详情
# kubectl describe hpa fgedu-web-hpa -n fgedu-app
Name: fgedu-web-hpa
Namespace: fgedu-app
Labels:
Annotations:
CreationTimestamp: Fri, 03 Apr 2026 10:00:00 +0800
Reference: Deployment/fgedu-web
Metrics: ( current / target )
resource cpu on pods (as a percentage of request): 45% (90m) / 70%
resource memory on pods (as a percentage of request): 50% (64Mi) / 80%
Min replicas: 3
Max replicas: 20
Deployment pods: 3 current / 3 desired
Conditions:
Type Status Reason Message
—- —— —— ——-
AbleToScale True ReadyForNewScale recommended size matches current size
ScalingActive True ValidMetricFound the HPA was able to successfully calculate a replica count from cpu resource utilization
ScalingLimited False DesiredWithinRange the desired count is within the acceptable range
Events:
10. 生产环境部署实践
生产环境部署需要考虑高可用、安全、监控等多个方面。
# cat > fgedu-app-production.yaml << 'EOF' apiVersion: v1 kind: Namespace metadata: name: fgedu-prod labels: environment: production --- apiVersion: v1 kind: LimitRange metadata: name: fgedu-limits namespace: fgedu-prod spec: limits: - type: Container max: cpu: "4" memory: "8Gi" min: cpu: "100m" memory: "128Mi" default: cpu: "500m" memory: "512Mi" defaultRequest: cpu: "100m" memory: "128Mi" --- apiVersion: v1 kind: ResourceQuota metadata: name: fgedu-quota namespace: fgedu-prod spec: hard: requests.cpu: "20" requests.memory: "40Gi" limits.cpu: "40" limits.memory: "80Gi" pods: "50" services: "10" secrets: "20" configmaps: "20" persistentvolumeclaims: "10" --- apiVersion: apps/v1 kind: Deployment metadata: name: fgedu-app namespace: fgedu-prod spec: replicas: 3 selector: matchLabels: app: fgedu-app strategy: type: RollingUpdate rollingUpdate: maxSurge: 1 maxUnavailable: 0 template: metadata: labels: app: fgedu-app spec: affinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 100 podAffinityTerm: labelSelector: matchLabels: app: fgedu-app topologyKey: kubernetes.io/hostname containers: - name: app image: fgedu/app:v1.0 ports: - containerPort: 8080 resources: requests: cpu: "500m" memory: "1Gi" limits: cpu: "2000m" memory: "4Gi" livenessProbe: httpGet: path: /health port: 8080 initialDelaySeconds: 60 periodSeconds: 10 readinessProbe: httpGet: path: /ready port: 8080 initialDelaySeconds: 10 periodSeconds: 5 securityContext: runAsNonRoot: true runAsUser: 1000 readOnlyRootFilesystem: true EOF # 应用完整配置 # kubectl apply -f fgedu-app-production.yaml namespace/fgedu-prod created limitrange/fgedu-limits created resourcequota/fgedu-quota created deployment.apps/fgedu-app created
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
